├── License.md ├── README.md ├── Tests └── Tokenizer │ ├── README.md │ └── tokenizer-ps3.tests.ps1 └── Utilites ├── Powershell++ ├── icon.png ├── task.json └── task.ps1 ├── Rollback ├── Runpowershellwithtaskcontext.ps1 ├── icon.png └── task.json ├── Shell++ ├── icon.png ├── node_modules │ ├── path │ │ ├── .npmignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── node_modules │ │ │ ├── process │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── browser.js │ │ │ │ ├── index.js │ │ │ │ ├── package.json │ │ │ │ └── test.js │ │ │ └── util │ │ │ │ ├── .npmignore │ │ │ │ ├── .travis.yml │ │ │ │ ├── .zuul.yml │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── node_modules │ │ │ │ └── inherits │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── inherits.js │ │ │ │ │ ├── inherits_browser.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test.js │ │ │ │ ├── package.json │ │ │ │ ├── support │ │ │ │ ├── isBuffer.js │ │ │ │ └── isBufferBrowser.js │ │ │ │ ├── test │ │ │ │ ├── browser │ │ │ │ │ ├── inspect.js │ │ │ │ │ └── is.js │ │ │ │ └── node │ │ │ │ │ ├── debug.js │ │ │ │ │ ├── format.js │ │ │ │ │ ├── inspect.js │ │ │ │ │ ├── log.js │ │ │ │ │ └── util.js │ │ │ │ └── util.js │ │ ├── package.json │ │ └── path.js │ └── vso-task-lib │ │ ├── LICENSE │ │ ├── README.md │ │ ├── node_modules │ │ ├── .bin │ │ │ ├── shjs │ │ │ └── shjs.cmd │ │ ├── glob │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── common.js │ │ │ ├── glob.js │ │ │ ├── node_modules │ │ │ │ ├── inflight │ │ │ │ │ ├── .eslintrc │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── inflight.js │ │ │ │ │ ├── node_modules │ │ │ │ │ │ └── wrappy │ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ ├── test │ │ │ │ │ │ │ └── basic.js │ │ │ │ │ │ │ └── wrappy.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test.js │ │ │ │ ├── inherits │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── inherits.js │ │ │ │ │ ├── inherits_browser.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test.js │ │ │ │ ├── once │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── node_modules │ │ │ │ │ │ └── wrappy │ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ ├── test │ │ │ │ │ │ │ └── basic.js │ │ │ │ │ │ │ └── wrappy.js │ │ │ │ │ ├── once.js │ │ │ │ │ └── package.json │ │ │ │ └── path-is-absolute │ │ │ │ │ ├── index.js │ │ │ │ │ ├── license │ │ │ │ │ ├── package.json │ │ │ │ │ └── readme.md │ │ │ ├── package.json │ │ │ └── sync.js │ │ ├── minimatch │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── minimatch.js │ │ │ ├── node_modules │ │ │ │ └── brace-expansion │ │ │ │ │ ├── .npmignore │ │ │ │ │ ├── README.md │ │ │ │ │ ├── example.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── node_modules │ │ │ │ │ ├── balanced-match │ │ │ │ │ │ ├── .npmignore │ │ │ │ │ │ ├── .travis.yml │ │ │ │ │ │ ├── LICENSE.md │ │ │ │ │ │ ├── Makefile │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── example.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── test │ │ │ │ │ │ │ └── balanced.js │ │ │ │ │ └── concat-map │ │ │ │ │ │ ├── .travis.yml │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── README.markdown │ │ │ │ │ │ ├── example │ │ │ │ │ │ └── map.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── test │ │ │ │ │ │ └── map.js │ │ │ │ │ └── package.json │ │ │ └── package.json │ │ ├── q │ │ │ ├── CHANGES.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── q.js │ │ │ └── queue.js │ │ ├── shelljs │ │ │ ├── .documentup.json │ │ │ ├── .jshintrc │ │ │ ├── .npmignore │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bin │ │ │ │ └── shjs │ │ │ ├── global.js │ │ │ ├── make.js │ │ │ ├── package.json │ │ │ ├── scripts │ │ │ │ ├── generate-docs.js │ │ │ │ └── run-tests.js │ │ │ ├── shell.js │ │ │ └── src │ │ │ │ ├── cat.js │ │ │ │ ├── cd.js │ │ │ │ ├── chmod.js │ │ │ │ ├── common.js │ │ │ │ ├── cp.js │ │ │ │ ├── dirs.js │ │ │ │ ├── echo.js │ │ │ │ ├── error.js │ │ │ │ ├── exec.js │ │ │ │ ├── find.js │ │ │ │ ├── grep.js │ │ │ │ ├── ln.js │ │ │ │ ├── ls.js │ │ │ │ ├── mkdir.js │ │ │ │ ├── mv.js │ │ │ │ ├── popd.js │ │ │ │ ├── pushd.js │ │ │ │ ├── pwd.js │ │ │ │ ├── rm.js │ │ │ │ ├── sed.js │ │ │ │ ├── tempdir.js │ │ │ │ ├── test.js │ │ │ │ ├── to.js │ │ │ │ ├── toEnd.js │ │ │ │ └── which.js │ │ └── vso-node-api │ │ │ ├── BuildApi.js │ │ │ ├── ClientApiBases.js │ │ │ ├── CoreApi.js │ │ │ ├── FileContainerApi.js │ │ │ ├── GalleryApi.js │ │ │ ├── GitApi.js │ │ │ ├── HttpClient.js │ │ │ ├── README.md │ │ │ ├── ReleaseManagementApi.js │ │ │ ├── RestClient.js │ │ │ ├── Serialization.js │ │ │ ├── TaskAgentApi.js │ │ │ ├── TaskAgentApiBase.js │ │ │ ├── TaskApi.js │ │ │ ├── TestApi.js │ │ │ ├── TfvcApi.js │ │ │ ├── VsoClient.js │ │ │ ├── WebApi.js │ │ │ ├── WorkItemTrackingApi.js │ │ │ ├── handlers │ │ │ ├── apiversion.js │ │ │ ├── basiccreds.js │ │ │ └── bearertoken.js │ │ │ ├── interfaces │ │ │ ├── BuildInterfaces.js │ │ │ ├── CoreInterfaces.js │ │ │ ├── FileContainerInterfaces.js │ │ │ ├── GalleryInterfaces.js │ │ │ ├── GitInterfaces.js │ │ │ ├── ReleaseManagementInterfaces.js │ │ │ ├── TaskAgentInterfaces.js │ │ │ ├── TestInterfaces.js │ │ │ ├── TfvcInterfaces.js │ │ │ ├── WorkItemTrackingInterfaces.js │ │ │ └── common │ │ │ │ ├── FormInputInterfaces.js │ │ │ │ ├── OperationsInterfaces.js │ │ │ │ ├── SystemDataInterfaces.js │ │ │ │ ├── TfsInterfaces.js │ │ │ │ ├── VSSInterfaces.js │ │ │ │ └── VsoBaseInterfaces.js │ │ │ └── package.json │ │ ├── package.json │ │ ├── taskcommand.js │ │ ├── toolrunner.js │ │ └── vsotask.js ├── task.js └── task.json ├── Tokenizer ├── Helpers.ps1 ├── icon.png ├── ps_modules │ └── VstsTaskSdk │ │ ├── FindFunctions.ps1 │ │ ├── InputFunctions.ps1 │ │ ├── LocalizationFunctions.ps1 │ │ ├── LoggingCommandFunctions.ps1 │ │ ├── LongPathFunctions.ps1 │ │ ├── OutFunctions.ps1 │ │ ├── PSGetModuleInfo.xml │ │ ├── ServerOMFunctions.ps1 │ │ ├── Strings │ │ └── resources.resjson │ │ │ ├── de-de │ │ │ └── resources.resjson │ │ │ ├── en-US │ │ │ └── resources.resjson │ │ │ ├── es-es │ │ │ └── resources.resjson │ │ │ ├── fr-fr │ │ │ └── resources.resjson │ │ │ ├── it-IT │ │ │ └── resources.resjson │ │ │ ├── ja-jp │ │ │ └── resources.resjson │ │ │ ├── ko-KR │ │ │ └── resources.resjson │ │ │ ├── ru-RU │ │ │ └── resources.resjson │ │ │ ├── zh-CN │ │ │ └── resources.resjson │ │ │ └── zh-TW │ │ │ └── resources.resjson │ │ ├── ToolFunctions.ps1 │ │ ├── TraceFunctions.ps1 │ │ ├── VstsTaskSdk.psd1 │ │ ├── VstsTaskSdk.psm1 │ │ └── lib.json ├── task.json ├── tokenize-ps3.ps1 └── tokenize.ps1 ├── UnZip ├── icon.png ├── task.json └── unzip.ps1 ├── Zip ├── icon.png ├── task.json └── zip.ps1 ├── images ├── Icon1024.png ├── Icon128.png ├── Icon256.png ├── Icon512.png ├── Icon64.png └── screen1.png ├── ms-devlabs.utilitytasks-0.1.10.vsix ├── ms-devlabs.utilitytasks-0.1.3.vsix ├── ms-devlabs.utilitytasks-0.1.5.vsix ├── ms-devlabs.utilitytasks-0.1.6.vsix ├── ms-devlabs.utilitytasks-0.1.8.vsix ├── ms-devlabs.utilitytasks-0.1.9.vsix ├── overview.md └── vss-extension.json /License.md: -------------------------------------------------------------------------------- 1 | Extension-UtilitiesPAck 2 | 3 | All rights reserved. 4 | 5 | The MIT License (MIT) 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![](https://github.com/openalm/Extension-UtilitiesPack/blob/master/Utilites/images/Icon128.png) 2 | # Task Utilities 3 | [Release Management utility tasks](https://marketplace.visualstudio.com/items?itemName=ms-devlabs.utilitytasks) 4 | 5 | This extension contains the following Utility tasks:
6 | 1.Tokenizer
7 | 2.Powershell++
8 | 3.Shell++
9 | 4.Zip & Unzip
10 | 5.Powershell to rollback
11 | 12 | Look at [overview.md](Utilites/overview.md) for more details on usage of these tasks. 13 | 14 | # How to contribute 15 | 16 | Please create an issue for any bug/feedback. If you would like to contribute to this extension, you could fork off this repo and submit a pull request. 17 | 18 | Some documents that can help you, in this regard:
19 | 1. [How to write a task for VS Team Services Build/Release task](https://github.com/Microsoft/vso-agent-tasks#writing-tasks)
20 | 2. [How to create and publish an extension](https://www.visualstudio.com/en-us/integrate/extensions/publish/overview)
21 | 3. [Learn about installing npm](https://www.npmjs.com/package/npm)
22 | 4. [How to install tfx-cli tool](https://github.com/Microsoft/tfs-cli), required to create and publish extensions
23 | -------------------------------------------------------------------------------- /Tests/Tokenizer/README.md: -------------------------------------------------------------------------------- 1 | ## How to Run Tests 2 | 3 | * Install Pester. You can do by `Install-Module Pester` 4 | * Goto the respective tests folder and run `Invoke-Pester` -------------------------------------------------------------------------------- /Utilites/Powershell++/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Powershell++/icon.png -------------------------------------------------------------------------------- /Utilites/Powershell++/task.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "4c073640-a478-11e5-a7e5-850fa42c7a74", 3 | "name": "Powershellpp", 4 | "friendlyName": "Powershell++ (deprecated)", 5 | "description": "(Deprecated) Use the PowerShell task version 2 for online scripts", 6 | "author": "ms-devlabs", 7 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)", 8 | "category": "Utility", 9 | "deprecated": true, 10 | "visibility": [ 11 | "Build", 12 | "Release" 13 | ], 14 | "demands": [ 15 | "DotNetFramework" 16 | ], 17 | "version": { 18 | "Major": "0", 19 | "Minor": "4", 20 | "Patch": "0" 21 | }, 22 | "minimumAgentVersion": "1.83.0", 23 | "instanceNameFormat": "Powershell", 24 | "groups": [ 25 | { 26 | "name":"advanced", 27 | "displayName":"Advanced", 28 | "isExpanded":false 29 | } 30 | ], 31 | "inputs": [ 32 | { 33 | "name": "type", 34 | "type": "pickList", 35 | "label": "Type", 36 | "defaultValue": "", 37 | "required": true, 38 | "helpMarkDown": "File Path or Inline Script", 39 | "options": { 40 | "InlineScript": "Inline Script", 41 | "FilePath": "File Path" 42 | } 43 | }, 44 | { 45 | "name": "scriptName", 46 | "type": "filePath", 47 | "label": "Script filename", 48 | "defaultValue":"", 49 | "required":true, 50 | "helpMarkDown": "Path of the script to execute. Should be fully qualified path or relative to the default working directory." , 51 | "visibleRule": "type = FilePath" 52 | }, 53 | { 54 | "name": "arguments", 55 | "type": "string", 56 | "label": "Arguments", 57 | "defaultValue":"", 58 | "required":false, 59 | "helpMarkDown": "Arguments passed to the PowerShell script. Either ordinal parameters or named parameters", 60 | "visibleRule": "type = FilePath" 61 | }, 62 | { 63 | "name": "workingFolder", 64 | "type": "filePath", 65 | "label": "Working folder", 66 | "defaultValue":"", 67 | "required":false, 68 | "helpMarkDown": "Current working directory when script is run. Defaults to the folder where the script is located.", 69 | "groupName":"advanced" 70 | }, 71 | { 72 | "name": "script", 73 | "type": "multiLine", 74 | "label": "Script", 75 | "defaultValue": "Write-Host 'Hello World'", 76 | "required": true, 77 | "helpMarkDown": "Write your scripts and have fun", 78 | "visibleRule": "type = InlineScript" 79 | } 80 | ], 81 | "execution": { 82 | "PowerShell": { 83 | "target": "$(currentDirectory)\\task.ps1", 84 | "argumentFormat": "", 85 | "workingDirectory": "$(currentDirectory)" 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /Utilites/Powershell++/task.ps1: -------------------------------------------------------------------------------- 1 | param ( 2 | [string] $type, 3 | [string] $scriptName, 4 | [string] $arguments, 5 | [string] $workingFolder, 6 | [string] $script 7 | ) 8 | 9 | Write-Verbose 'Entering task.ps1' 10 | Write-Verbose 'Current Working Directory is $cwd' 11 | Write-Verbose "Your script is \n $script" 12 | 13 | # Import the Task.Common dll that has all the cmdlets we need for Build 14 | import-module "Microsoft.TeamFoundation.DistributedTask.Task.Common" 15 | 16 | if($workingFolder) 17 | { 18 | if(!(Test-Path $workingFolder -PathType Container)) 19 | { 20 | throw ("$workingFolder does not exist"); 21 | } 22 | Write-Verbose "Setting working directory to $workingFolder" 23 | Set-Location $workingFolder 24 | } 25 | 26 | if($type -eq "FilePath"){ 27 | Invoke-Expression "& `"$scriptName`" $arguments" 28 | } 29 | if($type -eq "InlineScript"){ 30 | Invoke-Expression $script 31 | } 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /Utilites/Rollback/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Rollback/icon.png -------------------------------------------------------------------------------- /Utilites/Rollback/task.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "abc5c778-e949-4435-b156-b00c4ede3fcc", 3 | "name": "Rollback", 4 | "friendlyName": "Rollback PowerShell", 5 | "description": "Run a powershell script to rollback deployments. Task execution context is available in the powershell context for implementing conditional rollback", 6 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)", 7 | "category": "Deploy", 8 | "visibility": [ 9 | "Release" 10 | ], 11 | "author": "ms-devlabs", 12 | "version": { 13 | "Major": 1, 14 | "Minor": 2, 15 | "Patch": 0 16 | }, 17 | "minimumAgentVersion": "1.95.0", 18 | "groups": [ 19 | { 20 | "name":"advanced", 21 | "displayName":"Advanced", 22 | "isExpanded":false 23 | } 24 | ], 25 | "inputs": [ 26 | { 27 | "name": "type", 28 | "type": "pickList", 29 | "label": "Type", 30 | "defaultValue": "FilePath", 31 | "required": true, 32 | "helpMarkDown": "Provide Source for the rollback script. File Path or Inline Script", 33 | "options": { 34 | "InlineScript": "Inline Script", 35 | "FilePath": "File Path" 36 | } 37 | }, 38 | { 39 | "name": "rollbackpowershellfile", 40 | "type": "filePath", 41 | "label": "Script Path", 42 | "defaultValue": "", 43 | "required": true, 44 | "helpMarkDown": "Path of the script. Should be fully qualified path or relative to the default working directory. Tasks execution details shall be available in Release_Tasks environment variable.", 45 | "visibleRule": "type = FilePath" 46 | }, 47 | { 48 | "name": "additionalarguments", 49 | "type": "string", 50 | "label": "Script Arguments", 51 | "defaultValue": "", 52 | "required": false, 53 | "helpMarkDown": "Additional parameters to pass to PowerShell. Can be either ordinal or named parameters.", 54 | "visibleRule": "type = FilePath" 55 | }, 56 | { 57 | "name": "workingFolder", 58 | "type": "filePath", 59 | "label": "Working folder", 60 | "defaultValue":"", 61 | "required":false, 62 | "helpMarkDown": "Current working directory when script is run. Defaults to the folder where the script is located.", 63 | "groupName":"advanced" 64 | }, 65 | { 66 | "name": "script", 67 | "type": "multiLine", 68 | "label": "Script", 69 | "defaultValue": "Write-Host 'Rollback logic goes here as a powershell script'", 70 | "required": true, 71 | "helpMarkDown": "Powershell script to perform rollback. Execution is relative to the current working directory. Tasks execution details shall be available in Release_Tasks environment variable.", 72 | "visibleRule": "type = InlineScript", 73 | "properties": { 74 | "resizable": "true", 75 | "rows" : "10" 76 | } 77 | } 78 | ], 79 | "instanceNameFormat": "Rollback $(type): $(rollbackpowershellfile)", 80 | "execution": { 81 | "PowerShell": { 82 | "target": "$(currentDirectory)\\Runpowershellwithtaskcontext.ps1", 83 | "argumentFormat": "", 84 | "workingDirectory": "$(currentDirectory)" 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /Utilites/Shell++/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Shell++/icon.png -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/.npmignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright Joyent, Inc. and other Node contributors. All rights reserved. 2 | Permission is hereby granted, free of charge, to any person obtaining a copy 3 | of this software and associated documentation files (the "Software"), to 4 | deal in the Software without restriction, including without limitation the 5 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 6 | sell copies of the Software, and to permit persons to whom the Software is 7 | furnished to do so, subject to the following conditions: 8 | 9 | The above copyright notice and this permission notice shall be included in 10 | all copies or substantial portions of the Software. 11 | 12 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 13 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 14 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 15 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 16 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 17 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 18 | IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/README.md: -------------------------------------------------------------------------------- 1 | # path 2 | 3 | This is an exact copy of the NodeJS ’path’ module published to the NPM registry. 4 | 5 | [Documentation](http://nodejs.org/docs/latest/api/path.html) 6 | 7 | ## Install 8 | 9 | ```sh 10 | $ npm install --save path 11 | ``` 12 | 13 | ## License 14 | 15 | MIT 16 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/process/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2013 Roman Shtylman 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/process/README.md: -------------------------------------------------------------------------------- 1 | # process 2 | 3 | ```require('process');``` just like any other module. 4 | 5 | Works in node.js and browsers via the browser.js shim provided with the module. 6 | 7 | ## browser implementation 8 | 9 | The goal of this module is not to be a full-fledged alternative to the builtin process module. This module mostly exists to provide the nextTick functionality and little more. We keep this module lean because it will often be included by default by tools like browserify when it detects a module has used the `process` global. 10 | 11 | It also exposes a "browser" member (i.e. `process.browser`) which is `true` in this implementation but `undefined` in node. This can be used in isomorphic code that adjusts it's behavior depending on which environment it's running in. 12 | 13 | If you are looking to provide other process methods, I suggest you monkey patch them onto the process global in your app. A list of user created patches is below. 14 | 15 | * [hrtime](https://github.com/kumavis/browser-process-hrtime) 16 | * [stdout](https://github.com/kumavis/browser-stdout) 17 | 18 | ## package manager notes 19 | 20 | If you are writing a bundler to package modules for client side use, make sure you use the ```browser``` field hint in package.json. 21 | 22 | See https://gist.github.com/4339901 for details. 23 | 24 | The [browserify](https://github.com/substack/node-browserify) module will properly handle this field when bundling your files. 25 | 26 | 27 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/process/browser.js: -------------------------------------------------------------------------------- 1 | // shim for using process in browser 2 | 3 | var process = module.exports = {}; 4 | var queue = []; 5 | var draining = false; 6 | var currentQueue; 7 | var queueIndex = -1; 8 | 9 | function cleanUpNextTick() { 10 | draining = false; 11 | if (currentQueue.length) { 12 | queue = currentQueue.concat(queue); 13 | } else { 14 | queueIndex = -1; 15 | } 16 | if (queue.length) { 17 | drainQueue(); 18 | } 19 | } 20 | 21 | function drainQueue() { 22 | if (draining) { 23 | return; 24 | } 25 | var timeout = setTimeout(cleanUpNextTick); 26 | draining = true; 27 | 28 | var len = queue.length; 29 | while(len) { 30 | currentQueue = queue; 31 | queue = []; 32 | while (++queueIndex < len) { 33 | if (currentQueue) { 34 | currentQueue[queueIndex].run(); 35 | } 36 | } 37 | queueIndex = -1; 38 | len = queue.length; 39 | } 40 | currentQueue = null; 41 | draining = false; 42 | clearTimeout(timeout); 43 | } 44 | 45 | process.nextTick = function (fun) { 46 | var args = new Array(arguments.length - 1); 47 | if (arguments.length > 1) { 48 | for (var i = 1; i < arguments.length; i++) { 49 | args[i - 1] = arguments[i]; 50 | } 51 | } 52 | queue.push(new Item(fun, args)); 53 | if (queue.length === 1 && !draining) { 54 | setTimeout(drainQueue, 0); 55 | } 56 | }; 57 | 58 | // v8 likes predictible objects 59 | function Item(fun, array) { 60 | this.fun = fun; 61 | this.array = array; 62 | } 63 | Item.prototype.run = function () { 64 | this.fun.apply(null, this.array); 65 | }; 66 | process.title = 'browser'; 67 | process.browser = true; 68 | process.env = {}; 69 | process.argv = []; 70 | process.version = ''; // empty string to avoid regexp issues 71 | process.versions = {}; 72 | 73 | function noop() {} 74 | 75 | process.on = noop; 76 | process.addListener = noop; 77 | process.once = noop; 78 | process.off = noop; 79 | process.removeListener = noop; 80 | process.removeAllListeners = noop; 81 | process.emit = noop; 82 | 83 | process.binding = function (name) { 84 | throw new Error('process.binding is not supported'); 85 | }; 86 | 87 | process.cwd = function () { return '/' }; 88 | process.chdir = function (dir) { 89 | throw new Error('process.chdir is not supported'); 90 | }; 91 | process.umask = function() { return 0; }; 92 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/process/index.js: -------------------------------------------------------------------------------- 1 | // for now just expose the builtin process global from node.js 2 | module.exports = global.process; 3 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/process/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": { 3 | "name": "Roman Shtylman", 4 | "email": "shtylman@gmail.com" 5 | }, 6 | "name": "process", 7 | "description": "process information for node.js and browsers", 8 | "keywords": [ 9 | "process" 10 | ], 11 | "scripts": { 12 | "test": "mocha test.js" 13 | }, 14 | "version": "0.11.2", 15 | "repository": { 16 | "type": "git", 17 | "url": "git://github.com/shtylman/node-process.git" 18 | }, 19 | "license": "MIT", 20 | "browser": "./browser.js", 21 | "main": "./index.js", 22 | "engines": { 23 | "node": ">= 0.6.0" 24 | }, 25 | "devDependencies": { 26 | "mocha": "2.2.1" 27 | }, 28 | "gitHead": "4b996b1e3281aa38d46294f33b9772771f53272d", 29 | "bugs": { 30 | "url": "https://github.com/shtylman/node-process/issues" 31 | }, 32 | "homepage": "https://github.com/shtylman/node-process#readme", 33 | "_id": "process@0.11.2", 34 | "_shasum": "8a58d1d12c573f3f890da9848a4fe8e16ca977b2", 35 | "_from": "process@>=0.11.1 <0.12.0", 36 | "_npmVersion": "2.11.1", 37 | "_nodeVersion": "0.10.38", 38 | "_npmUser": { 39 | "name": "defunctzombie", 40 | "email": "shtylman@gmail.com" 41 | }, 42 | "dist": { 43 | "shasum": "8a58d1d12c573f3f890da9848a4fe8e16ca977b2", 44 | "tarball": "http://registry.npmjs.org/process/-/process-0.11.2.tgz" 45 | }, 46 | "maintainers": [ 47 | { 48 | "name": "coolaj86", 49 | "email": "coolaj86@gmail.com" 50 | }, 51 | { 52 | "name": "defunctzombie", 53 | "email": "shtylman@gmail.com" 54 | } 55 | ], 56 | "directories": {}, 57 | "_resolved": "https://registry.npmjs.org/process/-/process-0.11.2.tgz" 58 | } 59 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/process/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | var ourProcess = require('./browser'); 3 | describe('test against process', function () { 4 | test(process); 5 | }); 6 | if (!process.browser) { 7 | describe('test against our shim', function () { 8 | test(ourProcess); 9 | }); 10 | } 11 | function test (ourProcess) { 12 | describe('test arguments', function (t) { 13 | it ('works', function (done) { 14 | var order = 0; 15 | 16 | 17 | ourProcess.nextTick(function (num) { 18 | assert.equal(num, order++, 'first one works'); 19 | ourProcess.nextTick(function (num) { 20 | assert.equal(num, order++, 'recursive one is 4th'); 21 | }, 3); 22 | }, 0); 23 | ourProcess.nextTick(function (num) { 24 | assert.equal(num, order++, 'second one starts'); 25 | ourProcess.nextTick(function (num) { 26 | assert.equal(num, order++, 'this is third'); 27 | ourProcess.nextTick(function (num) { 28 | assert.equal(num, order++, 'this is last'); 29 | done(); 30 | }, 5); 31 | }, 4); 32 | }, 1); 33 | ourProcess.nextTick(function (num) { 34 | 35 | assert.equal(num, order++, '3rd schedualed happens after the error'); 36 | }, 2); 37 | }); 38 | }); 39 | 40 | describe('test errors', function (t) { 41 | it ('works', function (done) { 42 | var order = 0; 43 | process.removeAllListeners('uncaughtException'); 44 | process.once('uncaughtException', function(err) { 45 | assert.equal(2, order++, 'error is third'); 46 | ourProcess.nextTick(function () { 47 | assert.equal(5, order++, 'schedualed in error is last'); 48 | done(); 49 | }); 50 | }); 51 | ourProcess.nextTick(function () { 52 | assert.equal(0, order++, 'first one works'); 53 | ourProcess.nextTick(function () { 54 | assert.equal(4, order++, 'recursive one is 4th'); 55 | }); 56 | }); 57 | ourProcess.nextTick(function () { 58 | assert.equal(1, order++, 'second one starts'); 59 | throw(new Error('an error is thrown')); 60 | }); 61 | ourProcess.nextTick(function () { 62 | assert.equal(3, order++, '3rd schedualed happens after the error'); 63 | }); 64 | }); 65 | }); 66 | } 67 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '0.8' 4 | - '0.10' 5 | env: 6 | global: 7 | - secure: AdUubswCR68/eGD+WWjwTHgFbelwQGnNo81j1IOaUxKw+zgFPzSnFEEtDw7z98pWgg7p9DpCnyzzSnSllP40wq6AG19OwyUJjSLoZK57fp+r8zwTQwWiSqUgMu2YSMmKJPIO/aoSGpRQXT+L1nRrHoUJXgFodyIZgz40qzJeZjc= 8 | - secure: heQuxPVsQ7jBbssoVKimXDpqGjQFiucm6W5spoujmspjDG7oEcHD9ANo9++LoRPrsAmNx56SpMK5fNfVmYediw6SvhXm4Mxt56/fYCrLDBtgGG+1neCeffAi8z1rO8x48m77hcQ6YhbUL5R9uBimUjMX92fZcygAt8Rg804zjFo= 9 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/.zuul.yml: -------------------------------------------------------------------------------- 1 | ui: mocha-qunit 2 | browsers: 3 | - name: chrome 4 | version: 27..latest 5 | - name: firefox 6 | version: latest 7 | - name: safari 8 | version: latest 9 | - name: ie 10 | version: 9..latest 11 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright Joyent, Inc. and other Node contributors. All rights reserved. 2 | Permission is hereby granted, free of charge, to any person obtaining a copy 3 | of this software and associated documentation files (the "Software"), to 4 | deal in the Software without restriction, including without limitation the 5 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 6 | sell copies of the Software, and to permit persons to whom the Software is 7 | furnished to do so, subject to the following conditions: 8 | 9 | The above copyright notice and this permission notice shall be included in 10 | all copies or substantial portions of the Software. 11 | 12 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 13 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 14 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 15 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 16 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 17 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 18 | IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/README.md: -------------------------------------------------------------------------------- 1 | # util 2 | 3 | [![Build Status](https://travis-ci.org/defunctzombie/node-util.png?branch=master)](https://travis-ci.org/defunctzombie/node-util) 4 | 5 | node.js [util](http://nodejs.org/api/util.html) module as a module 6 | 7 | ## install via [npm](npmjs.org) 8 | 9 | ```shell 10 | npm install util 11 | ``` 12 | 13 | ## browser support 14 | 15 | This module also works in modern browsers. If you need legacy browser support you will need to polyfill ES5 features. 16 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/LICENSE: -------------------------------------------------------------------------------- 1 | The ISC License 2 | 3 | Copyright (c) Isaac Z. Schlueter 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 11 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 14 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15 | PERFORMANCE OF THIS SOFTWARE. 16 | 17 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/README.md: -------------------------------------------------------------------------------- 1 | Browser-friendly inheritance fully compatible with standard node.js 2 | [inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). 3 | 4 | This package exports standard `inherits` from node.js `util` module in 5 | node environment, but also provides alternative browser-friendly 6 | implementation through [browser 7 | field](https://gist.github.com/shtylman/4339901). Alternative 8 | implementation is a literal copy of standard one located in standalone 9 | module to avoid requiring of `util`. It also has a shim for old 10 | browsers with no `Object.create` support. 11 | 12 | While keeping you sure you are using standard `inherits` 13 | implementation in node.js environment, it allows bundlers such as 14 | [browserify](https://github.com/substack/node-browserify) to not 15 | include full `util` package to your client code if all you need is 16 | just `inherits` function. It worth, because browser shim for `util` 17 | package is large and `inherits` is often the single function you need 18 | from it. 19 | 20 | It's recommended to use this package instead of 21 | `require('util').inherits` for any code that has chances to be used 22 | not only in node.js but in browser too. 23 | 24 | ## usage 25 | 26 | ```js 27 | var inherits = require('inherits'); 28 | // then use exactly as the standard one 29 | ``` 30 | 31 | ## note on version ~1.0 32 | 33 | Version ~1.0 had completely different motivation and is not compatible 34 | neither with 2.0 nor with standard node.js `inherits`. 35 | 36 | If you are using version ~1.0 and planning to switch to ~2.0, be 37 | careful: 38 | 39 | * new version uses `super_` instead of `super` for referencing 40 | superclass 41 | * new version overwrites current prototype while old one preserves any 42 | existing fields on it 43 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/inherits.js: -------------------------------------------------------------------------------- 1 | module.exports = require('util').inherits 2 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/inherits_browser.js: -------------------------------------------------------------------------------- 1 | if (typeof Object.create === 'function') { 2 | // implementation from standard node.js 'util' module 3 | module.exports = function inherits(ctor, superCtor) { 4 | ctor.super_ = superCtor 5 | ctor.prototype = Object.create(superCtor.prototype, { 6 | constructor: { 7 | value: ctor, 8 | enumerable: false, 9 | writable: true, 10 | configurable: true 11 | } 12 | }); 13 | }; 14 | } else { 15 | // old school shim for old browsers 16 | module.exports = function inherits(ctor, superCtor) { 17 | ctor.super_ = superCtor 18 | var TempCtor = function () {} 19 | TempCtor.prototype = superCtor.prototype 20 | ctor.prototype = new TempCtor() 21 | ctor.prototype.constructor = ctor 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "inherits", 3 | "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", 4 | "version": "2.0.1", 5 | "keywords": [ 6 | "inheritance", 7 | "class", 8 | "klass", 9 | "oop", 10 | "object-oriented", 11 | "inherits", 12 | "browser", 13 | "browserify" 14 | ], 15 | "main": "./inherits.js", 16 | "browser": "./inherits_browser.js", 17 | "repository": { 18 | "type": "git", 19 | "url": "git://github.com/isaacs/inherits.git" 20 | }, 21 | "license": "ISC", 22 | "scripts": { 23 | "test": "node test" 24 | }, 25 | "bugs": { 26 | "url": "https://github.com/isaacs/inherits/issues" 27 | }, 28 | "_id": "inherits@2.0.1", 29 | "dist": { 30 | "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", 31 | "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 32 | }, 33 | "_from": "inherits@2.0.1", 34 | "_npmVersion": "1.3.8", 35 | "_npmUser": { 36 | "name": "isaacs", 37 | "email": "i@izs.me" 38 | }, 39 | "maintainers": [ 40 | { 41 | "name": "isaacs", 42 | "email": "i@izs.me" 43 | } 44 | ], 45 | "directories": {}, 46 | "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", 47 | "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 48 | "readme": "ERROR: No README data found!", 49 | "homepage": "https://github.com/isaacs/inherits#readme" 50 | } 51 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/test.js: -------------------------------------------------------------------------------- 1 | var inherits = require('./inherits.js') 2 | var assert = require('assert') 3 | 4 | function test(c) { 5 | assert(c.constructor === Child) 6 | assert(c.constructor.super_ === Parent) 7 | assert(Object.getPrototypeOf(c) === Child.prototype) 8 | assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) 9 | assert(c instanceof Child) 10 | assert(c instanceof Parent) 11 | } 12 | 13 | function Child() { 14 | Parent.call(this) 15 | test(this) 16 | } 17 | 18 | function Parent() {} 19 | 20 | inherits(Child, Parent) 21 | 22 | var c = new Child 23 | test(c) 24 | 25 | console.log('ok') 26 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": { 3 | "name": "Joyent", 4 | "url": "http://www.joyent.com" 5 | }, 6 | "name": "util", 7 | "description": "Node.JS util module", 8 | "keywords": [ 9 | "util" 10 | ], 11 | "version": "0.10.3", 12 | "homepage": "https://github.com/defunctzombie/node-util", 13 | "repository": { 14 | "type": "git", 15 | "url": "git://github.com/defunctzombie/node-util" 16 | }, 17 | "main": "./util.js", 18 | "scripts": { 19 | "test": "node test/node/*.js && zuul test/browser/*.js" 20 | }, 21 | "dependencies": { 22 | "inherits": "2.0.1" 23 | }, 24 | "license": "MIT", 25 | "devDependencies": { 26 | "zuul": "~1.0.9" 27 | }, 28 | "browser": { 29 | "./support/isBuffer.js": "./support/isBufferBrowser.js" 30 | }, 31 | "bugs": { 32 | "url": "https://github.com/defunctzombie/node-util/issues" 33 | }, 34 | "_id": "util@0.10.3", 35 | "dist": { 36 | "shasum": "7afb1afe50805246489e3db7fe0ed379336ac0f9", 37 | "tarball": "http://registry.npmjs.org/util/-/util-0.10.3.tgz" 38 | }, 39 | "_from": "util@>=0.10.3 <0.11.0", 40 | "_npmVersion": "1.3.24", 41 | "_npmUser": { 42 | "name": "shtylman", 43 | "email": "shtylman@gmail.com" 44 | }, 45 | "maintainers": [ 46 | { 47 | "name": "shtylman", 48 | "email": "shtylman@gmail.com" 49 | } 50 | ], 51 | "directories": {}, 52 | "_shasum": "7afb1afe50805246489e3db7fe0ed379336ac0f9", 53 | "_resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz" 54 | } 55 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/support/isBuffer.js: -------------------------------------------------------------------------------- 1 | module.exports = function isBuffer(arg) { 2 | return arg instanceof Buffer; 3 | } 4 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/support/isBufferBrowser.js: -------------------------------------------------------------------------------- 1 | module.exports = function isBuffer(arg) { 2 | return arg && typeof arg === 'object' 3 | && typeof arg.copy === 'function' 4 | && typeof arg.fill === 'function' 5 | && typeof arg.readUInt8 === 'function'; 6 | } -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/test/browser/inspect.js: -------------------------------------------------------------------------------- 1 | // Copyright Joyent, Inc. and other Node contributors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a 4 | // copy of this software and associated documentation files (the 5 | // "Software"), to deal in the Software without restriction, including 6 | // without limitation the rights to use, copy, modify, merge, publish, 7 | // distribute, sublicense, and/or sell copies of the Software, and to permit 8 | // persons to whom the Software is furnished to do so, subject to the 9 | // following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included 12 | // in all copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 17 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 20 | // USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | var assert = require('assert'); 23 | var util = require('../../'); 24 | 25 | suite('inspect'); 26 | 27 | test('util.inspect - test for sparse array', function () { 28 | var a = ['foo', 'bar', 'baz']; 29 | assert.equal(util.inspect(a), '[ \'foo\', \'bar\', \'baz\' ]'); 30 | delete a[1]; 31 | assert.equal(util.inspect(a), '[ \'foo\', , \'baz\' ]'); 32 | assert.equal(util.inspect(a, true), '[ \'foo\', , \'baz\', [length]: 3 ]'); 33 | assert.equal(util.inspect(new Array(5)), '[ , , , , ]'); 34 | }); 35 | 36 | test('util.inspect - exceptions should print the error message, not \'{}\'', function () { 37 | assert.equal(util.inspect(new Error()), '[Error]'); 38 | assert.equal(util.inspect(new Error('FAIL')), '[Error: FAIL]'); 39 | assert.equal(util.inspect(new TypeError('FAIL')), '[TypeError: FAIL]'); 40 | assert.equal(util.inspect(new SyntaxError('FAIL')), '[SyntaxError: FAIL]'); 41 | }); 42 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/test/node/debug.js: -------------------------------------------------------------------------------- 1 | // Copyright Joyent, Inc. and other Node contributors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a 4 | // copy of this software and associated documentation files (the 5 | // "Software"), to deal in the Software without restriction, including 6 | // without limitation the rights to use, copy, modify, merge, publish, 7 | // distribute, sublicense, and/or sell copies of the Software, and to permit 8 | // persons to whom the Software is furnished to do so, subject to the 9 | // following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included 12 | // in all copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 17 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 20 | // USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | var assert = require('assert'); 23 | var util = require('../../'); 24 | 25 | if (process.argv[2] === 'child') 26 | child(); 27 | else 28 | parent(); 29 | 30 | function parent() { 31 | test('foo,tud,bar', true); 32 | test('foo,tud', true); 33 | test('tud,bar', true); 34 | test('tud', true); 35 | test('foo,bar', false); 36 | test('', false); 37 | } 38 | 39 | function test(environ, shouldWrite) { 40 | var expectErr = ''; 41 | if (shouldWrite) { 42 | expectErr = 'TUD %PID%: this { is: \'a\' } /debugging/\n' + 43 | 'TUD %PID%: number=1234 string=asdf obj={"foo":"bar"}\n'; 44 | } 45 | var expectOut = 'ok\n'; 46 | var didTest = false; 47 | 48 | var spawn = require('child_process').spawn; 49 | var child = spawn(process.execPath, [__filename, 'child'], { 50 | env: { NODE_DEBUG: environ } 51 | }); 52 | 53 | expectErr = expectErr.split('%PID%').join(child.pid); 54 | 55 | var err = ''; 56 | child.stderr.setEncoding('utf8'); 57 | child.stderr.on('data', function(c) { 58 | err += c; 59 | }); 60 | 61 | var out = ''; 62 | child.stdout.setEncoding('utf8'); 63 | child.stdout.on('data', function(c) { 64 | out += c; 65 | }); 66 | 67 | child.on('close', function(c) { 68 | assert(!c); 69 | assert.equal(err, expectErr); 70 | assert.equal(out, expectOut); 71 | didTest = true; 72 | console.log('ok %j %j', environ, shouldWrite); 73 | }); 74 | 75 | process.on('exit', function() { 76 | assert(didTest); 77 | }); 78 | } 79 | 80 | 81 | function child() { 82 | var debug = util.debuglog('tud'); 83 | debug('this', { is: 'a' }, /debugging/); 84 | debug('number=%d string=%s obj=%j', 1234, 'asdf', { foo: 'bar' }); 85 | console.log('ok'); 86 | } 87 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/test/node/format.js: -------------------------------------------------------------------------------- 1 | // Copyright Joyent, Inc. and other Node contributors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a 4 | // copy of this software and associated documentation files (the 5 | // "Software"), to deal in the Software without restriction, including 6 | // without limitation the rights to use, copy, modify, merge, publish, 7 | // distribute, sublicense, and/or sell copies of the Software, and to permit 8 | // persons to whom the Software is furnished to do so, subject to the 9 | // following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included 12 | // in all copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 17 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 20 | // USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | 23 | 24 | 25 | var assert = require('assert'); 26 | var util = require('../../'); 27 | 28 | assert.equal(util.format(), ''); 29 | assert.equal(util.format(''), ''); 30 | assert.equal(util.format([]), '[]'); 31 | assert.equal(util.format({}), '{}'); 32 | assert.equal(util.format(null), 'null'); 33 | assert.equal(util.format(true), 'true'); 34 | assert.equal(util.format(false), 'false'); 35 | assert.equal(util.format('test'), 'test'); 36 | 37 | // CHECKME this is for console.log() compatibility - but is it *right*? 38 | assert.equal(util.format('foo', 'bar', 'baz'), 'foo bar baz'); 39 | 40 | assert.equal(util.format('%d', 42.0), '42'); 41 | assert.equal(util.format('%d', 42), '42'); 42 | assert.equal(util.format('%s', 42), '42'); 43 | assert.equal(util.format('%j', 42), '42'); 44 | 45 | assert.equal(util.format('%d', '42.0'), '42'); 46 | assert.equal(util.format('%d', '42'), '42'); 47 | assert.equal(util.format('%s', '42'), '42'); 48 | assert.equal(util.format('%j', '42'), '"42"'); 49 | 50 | assert.equal(util.format('%%s%s', 'foo'), '%sfoo'); 51 | 52 | assert.equal(util.format('%s'), '%s'); 53 | assert.equal(util.format('%s', undefined), 'undefined'); 54 | assert.equal(util.format('%s', 'foo'), 'foo'); 55 | assert.equal(util.format('%s:%s'), '%s:%s'); 56 | assert.equal(util.format('%s:%s', undefined), 'undefined:%s'); 57 | assert.equal(util.format('%s:%s', 'foo'), 'foo:%s'); 58 | assert.equal(util.format('%s:%s', 'foo', 'bar'), 'foo:bar'); 59 | assert.equal(util.format('%s:%s', 'foo', 'bar', 'baz'), 'foo:bar baz'); 60 | assert.equal(util.format('%%%s%%', 'hi'), '%hi%'); 61 | assert.equal(util.format('%%%s%%%%', 'hi'), '%hi%%'); 62 | 63 | (function() { 64 | var o = {}; 65 | o.o = o; 66 | assert.equal(util.format('%j', o), '[Circular]'); 67 | })(); 68 | 69 | // Errors 70 | assert.equal(util.format(new Error('foo')), '[Error: foo]'); 71 | function CustomError(msg) { 72 | Error.call(this); 73 | Object.defineProperty(this, 'message', { value: msg, enumerable: false }); 74 | Object.defineProperty(this, 'name', { value: 'CustomError', enumerable: false }); 75 | } 76 | util.inherits(CustomError, Error); 77 | assert.equal(util.format(new CustomError('bar')), '[CustomError: bar]'); 78 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/node_modules/util/test/node/log.js: -------------------------------------------------------------------------------- 1 | // Copyright Joyent, Inc. and other Node contributors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a 4 | // copy of this software and associated documentation files (the 5 | // "Software"), to deal in the Software without restriction, including 6 | // without limitation the rights to use, copy, modify, merge, publish, 7 | // distribute, sublicense, and/or sell copies of the Software, and to permit 8 | // persons to whom the Software is furnished to do so, subject to the 9 | // following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included 12 | // in all copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 17 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 20 | // USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | 23 | var assert = require('assert'); 24 | var util = require('../../'); 25 | 26 | assert.ok(process.stdout.writable); 27 | assert.ok(process.stderr.writable); 28 | 29 | var stdout_write = global.process.stdout.write; 30 | var strings = []; 31 | global.process.stdout.write = function(string) { 32 | strings.push(string); 33 | }; 34 | console._stderr = process.stdout; 35 | 36 | var tests = [ 37 | {input: 'foo', output: 'foo'}, 38 | {input: undefined, output: 'undefined'}, 39 | {input: null, output: 'null'}, 40 | {input: false, output: 'false'}, 41 | {input: 42, output: '42'}, 42 | {input: function(){}, output: '[Function]'}, 43 | {input: parseInt('not a number', 10), output: 'NaN'}, 44 | {input: {answer: 42}, output: '{ answer: 42 }'}, 45 | {input: [1,2,3], output: '[ 1, 2, 3 ]'} 46 | ]; 47 | 48 | // test util.log() 49 | tests.forEach(function(test) { 50 | util.log(test.input); 51 | var result = strings.shift().trim(), 52 | re = (/[0-9]{1,2} [A-Z][a-z]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} - (.+)$/), 53 | match = re.exec(result); 54 | assert.ok(match); 55 | assert.equal(match[1], test.output); 56 | }); 57 | 58 | global.process.stdout.write = stdout_write; 59 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/path/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": { 3 | "name": "Joyent", 4 | "url": "http://www.joyent.com" 5 | }, 6 | "name": "path", 7 | "description": "Node.JS path module", 8 | "keywords": [ 9 | "ender", 10 | "path" 11 | ], 12 | "license": "MIT", 13 | "version": "0.12.7", 14 | "homepage": "http://nodejs.org/docs/latest/api/path.html", 15 | "repository": { 16 | "type": "git", 17 | "url": "git://github.com/jinder/path.git" 18 | }, 19 | "main": "./path.js", 20 | "dependencies": { 21 | "process": "^0.11.1", 22 | "util": "^0.10.3" 23 | }, 24 | "gitHead": "7fbaede3ca9d224494cbdd47d7ca803ee96d2055", 25 | "bugs": { 26 | "url": "https://github.com/jinder/path/issues" 27 | }, 28 | "_id": "path@0.12.7", 29 | "scripts": {}, 30 | "_shasum": "d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f", 31 | "_from": "path@*", 32 | "_npmVersion": "2.11.3", 33 | "_nodeVersion": "0.12.7", 34 | "_npmUser": { 35 | "name": "jinder", 36 | "email": "jindersidhu@gmail.com" 37 | }, 38 | "dist": { 39 | "shasum": "d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f", 40 | "tarball": "http://registry.npmjs.org/path/-/path-0.12.7.tgz" 41 | }, 42 | "maintainers": [ 43 | { 44 | "name": "coolaj86", 45 | "email": "coolaj86@gmail.com" 46 | }, 47 | { 48 | "name": "jinder", 49 | "email": "jindersidhu@gmail.com" 50 | }, 51 | { 52 | "name": "defunctzombie", 53 | "email": "shtylman@gmail.com" 54 | } 55 | ], 56 | "directories": {}, 57 | "_resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz" 58 | } 59 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Microsoft 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/README.md: -------------------------------------------------------------------------------- 1 | # VSO DevOps Task SDK 2 | 3 | Libraries for writing VSO and TFS build and deployment tasks 4 | 5 | ## Node Task Lib 6 | Library for writing tasks with the node handler 7 | 8 | ## Contributing 9 | 10 | ### Node 11 | 12 | Once: 13 | ```bash 14 | $ cd node 15 | $ npm install 16 | $ sudo npm install gulp -g 17 | ``` 18 | 19 | Build: 20 | ```bash 21 | $ cd node 22 | $ gulp 23 | ``` 24 | 25 | Test: 26 | ```bash 27 | $ cd node 28 | $ gulp test 29 | ``` 30 | 31 | ### Powershell 32 | 33 | Coming soon 34 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/.bin/shjs: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | basedir=`dirname "$0"` 3 | 4 | case `uname` in 5 | *CYGWIN*) basedir=`cygpath -w "$basedir"`;; 6 | esac 7 | 8 | if [ -x "$basedir/node" ]; then 9 | "$basedir/node" "$basedir/../shelljs/bin/shjs" "$@" 10 | ret=$? 11 | else 12 | node "$basedir/../shelljs/bin/shjs" "$@" 13 | ret=$? 14 | fi 15 | exit $ret 16 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/.bin/shjs.cmd: -------------------------------------------------------------------------------- 1 | @IF EXIST "%~dp0\node.exe" ( 2 | "%~dp0\node.exe" "%~dp0\..\shelljs\bin\shjs" %* 3 | ) ELSE ( 4 | @SETLOCAL 5 | @SET PATHEXT=%PATHEXT:;.JS;=;% 6 | node "%~dp0\..\shelljs\bin\shjs" %* 7 | ) -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/LICENSE: -------------------------------------------------------------------------------- 1 | The ISC License 2 | 3 | Copyright (c) Isaac Z. Schlueter and Contributors 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env" : { 3 | "node" : true 4 | }, 5 | "rules" : { 6 | "semi": [2, "never"], 7 | "strict": 0, 8 | "quotes": [1, "single", "avoid-escape"], 9 | "no-use-before-define": 0, 10 | "curly": 0, 11 | "no-underscore-dangle": 0, 12 | "no-lonely-if": 1, 13 | "no-unused-vars": [2, {"vars" : "all", "args" : "after-used"}], 14 | "no-mixed-requires": 0, 15 | "space-infix-ops": 0 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/LICENSE: -------------------------------------------------------------------------------- 1 | The ISC License 2 | 3 | Copyright (c) Isaac Z. Schlueter 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/README.md: -------------------------------------------------------------------------------- 1 | # inflight 2 | 3 | Add callbacks to requests in flight to avoid async duplication 4 | 5 | ## USAGE 6 | 7 | ```javascript 8 | var inflight = require('inflight') 9 | 10 | // some request that does some stuff 11 | function req(key, callback) { 12 | // key is any random string. like a url or filename or whatever. 13 | // 14 | // will return either a falsey value, indicating that the 15 | // request for this key is already in flight, or a new callback 16 | // which when called will call all callbacks passed to inflightk 17 | // with the same key 18 | callback = inflight(key, callback) 19 | 20 | // If we got a falsey value back, then there's already a req going 21 | if (!callback) return 22 | 23 | // this is where you'd fetch the url or whatever 24 | // callback is also once()-ified, so it can safely be assigned 25 | // to multiple events etc. First call wins. 26 | setTimeout(function() { 27 | callback(null, key) 28 | }, 100) 29 | } 30 | 31 | // only assigns a single setTimeout 32 | // when it dings, all cbs get called 33 | req('foo', cb1) 34 | req('foo', cb2) 35 | req('foo', cb3) 36 | req('foo', cb4) 37 | ``` 38 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/inflight.js: -------------------------------------------------------------------------------- 1 | var wrappy = require('wrappy') 2 | var reqs = Object.create(null) 3 | var once = require('once') 4 | 5 | module.exports = wrappy(inflight) 6 | 7 | function inflight (key, cb) { 8 | if (reqs[key]) { 9 | reqs[key].push(cb) 10 | return null 11 | } else { 12 | reqs[key] = [cb] 13 | return makeres(key) 14 | } 15 | } 16 | 17 | function makeres (key) { 18 | return once(function RES () { 19 | var cbs = reqs[key] 20 | var len = cbs.length 21 | var args = slice(arguments) 22 | for (var i = 0; i < len; i++) { 23 | cbs[i].apply(null, args) 24 | } 25 | if (cbs.length > len) { 26 | // added more in the interim. 27 | // de-zalgo, just in case, but don't call again. 28 | cbs.splice(0, len) 29 | process.nextTick(function () { 30 | RES.apply(null, args) 31 | }) 32 | } else { 33 | delete reqs[key] 34 | } 35 | }) 36 | } 37 | 38 | function slice (args) { 39 | var length = args.length 40 | var array = [] 41 | 42 | for (var i = 0; i < length; i++) array[i] = args[i] 43 | return array 44 | } 45 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE: -------------------------------------------------------------------------------- 1 | The ISC License 2 | 3 | Copyright (c) Isaac Z. Schlueter and Contributors 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md: -------------------------------------------------------------------------------- 1 | # wrappy 2 | 3 | Callback wrapping utility 4 | 5 | ## USAGE 6 | 7 | ```javascript 8 | var wrappy = require("wrappy") 9 | 10 | // var wrapper = wrappy(wrapperFunction) 11 | 12 | // make sure a cb is called only once 13 | // See also: http://npm.im/once for this specific use case 14 | var once = wrappy(function (cb) { 15 | var called = false 16 | return function () { 17 | if (called) return 18 | called = true 19 | return cb.apply(this, arguments) 20 | } 21 | }) 22 | 23 | function printBoo () { 24 | console.log('boo') 25 | } 26 | // has some rando property 27 | printBoo.iAmBooPrinter = true 28 | 29 | var onlyPrintOnce = once(printBoo) 30 | 31 | onlyPrintOnce() // prints 'boo' 32 | onlyPrintOnce() // does nothing 33 | 34 | // random property is retained! 35 | assert.equal(onlyPrintOnce.iAmBooPrinter, true) 36 | ``` 37 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wrappy", 3 | "version": "1.0.1", 4 | "description": "Callback wrapping utility", 5 | "main": "wrappy.js", 6 | "directories": { 7 | "test": "test" 8 | }, 9 | "dependencies": {}, 10 | "devDependencies": { 11 | "tap": "^0.4.12" 12 | }, 13 | "scripts": { 14 | "test": "tap test/*.js" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "git+https://github.com/npm/wrappy.git" 19 | }, 20 | "author": { 21 | "name": "Isaac Z. Schlueter", 22 | "email": "i@izs.me", 23 | "url": "http://blog.izs.me/" 24 | }, 25 | "license": "ISC", 26 | "bugs": { 27 | "url": "https://github.com/npm/wrappy/issues" 28 | }, 29 | "homepage": "https://github.com/npm/wrappy", 30 | "gitHead": "006a8cbac6b99988315834c207896eed71fd069a", 31 | "_id": "wrappy@1.0.1", 32 | "_shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739", 33 | "_from": "wrappy@>=1.0.0 <2.0.0", 34 | "_npmVersion": "2.0.0", 35 | "_nodeVersion": "0.10.31", 36 | "_npmUser": { 37 | "name": "isaacs", 38 | "email": "i@izs.me" 39 | }, 40 | "maintainers": [ 41 | { 42 | "name": "isaacs", 43 | "email": "i@izs.me" 44 | } 45 | ], 46 | "dist": { 47 | "shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739", 48 | "tarball": "http://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" 49 | }, 50 | "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", 51 | "readme": "ERROR: No README data found!" 52 | } 53 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js: -------------------------------------------------------------------------------- 1 | var test = require('tap').test 2 | var wrappy = require('../wrappy.js') 3 | 4 | test('basic', function (t) { 5 | function onceifier (cb) { 6 | var called = false 7 | return function () { 8 | if (called) return 9 | called = true 10 | return cb.apply(this, arguments) 11 | } 12 | } 13 | onceifier.iAmOnce = {} 14 | var once = wrappy(onceifier) 15 | t.equal(once.iAmOnce, onceifier.iAmOnce) 16 | 17 | var called = 0 18 | function boo () { 19 | t.equal(called, 0) 20 | called++ 21 | } 22 | // has some rando property 23 | boo.iAmBoo = true 24 | 25 | var onlyPrintOnce = once(boo) 26 | 27 | onlyPrintOnce() // prints 'boo' 28 | onlyPrintOnce() // does nothing 29 | t.equal(called, 1) 30 | 31 | // random property is retained! 32 | t.equal(onlyPrintOnce.iAmBoo, true) 33 | 34 | var logs = [] 35 | var logwrap = wrappy(function (msg, cb) { 36 | logs.push(msg + ' wrapping cb') 37 | return function () { 38 | logs.push(msg + ' before cb') 39 | var ret = cb.apply(this, arguments) 40 | logs.push(msg + ' after cb') 41 | } 42 | }) 43 | 44 | var c = logwrap('foo', function () { 45 | t.same(logs, [ 'foo wrapping cb', 'foo before cb' ]) 46 | }) 47 | c() 48 | t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ]) 49 | 50 | t.end() 51 | }) 52 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js: -------------------------------------------------------------------------------- 1 | // Returns a wrapper function that returns a wrapped callback 2 | // The wrapper function should do some stuff, and return a 3 | // presumably different callback function. 4 | // This makes sure that own properties are retained, so that 5 | // decorations and such are not lost along the way. 6 | module.exports = wrappy 7 | function wrappy (fn, cb) { 8 | if (fn && cb) return wrappy(fn)(cb) 9 | 10 | if (typeof fn !== 'function') 11 | throw new TypeError('need wrapper function') 12 | 13 | Object.keys(fn).forEach(function (k) { 14 | wrapper[k] = fn[k] 15 | }) 16 | 17 | return wrapper 18 | 19 | function wrapper() { 20 | var args = new Array(arguments.length) 21 | for (var i = 0; i < args.length; i++) { 22 | args[i] = arguments[i] 23 | } 24 | var ret = fn.apply(this, args) 25 | var cb = args[args.length-1] 26 | if (typeof ret === 'function' && ret !== cb) { 27 | Object.keys(cb).forEach(function (k) { 28 | ret[k] = cb[k] 29 | }) 30 | } 31 | return ret 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "inflight", 3 | "version": "1.0.4", 4 | "description": "Add callbacks to requests in flight to avoid async duplication", 5 | "main": "inflight.js", 6 | "dependencies": { 7 | "once": "^1.3.0", 8 | "wrappy": "1" 9 | }, 10 | "devDependencies": { 11 | "tap": "^0.4.10" 12 | }, 13 | "scripts": { 14 | "test": "tap test.js" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "git://github.com/isaacs/inflight.git" 19 | }, 20 | "author": { 21 | "name": "Isaac Z. Schlueter", 22 | "email": "i@izs.me", 23 | "url": "http://blog.izs.me/" 24 | }, 25 | "bugs": { 26 | "url": "https://github.com/isaacs/inflight/issues" 27 | }, 28 | "homepage": "https://github.com/isaacs/inflight", 29 | "license": "ISC", 30 | "gitHead": "c7b5531d572a867064d4a1da9e013e8910b7d1ba", 31 | "_id": "inflight@1.0.4", 32 | "_shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a", 33 | "_from": "inflight@>=1.0.4 <2.0.0", 34 | "_npmVersion": "2.1.3", 35 | "_nodeVersion": "0.10.32", 36 | "_npmUser": { 37 | "name": "othiym23", 38 | "email": "ogd@aoaioxxysz.net" 39 | }, 40 | "maintainers": [ 41 | { 42 | "name": "isaacs", 43 | "email": "i@izs.me" 44 | }, 45 | { 46 | "name": "othiym23", 47 | "email": "ogd@aoaioxxysz.net" 48 | }, 49 | { 50 | "name": "iarna", 51 | "email": "me@re-becca.org" 52 | } 53 | ], 54 | "dist": { 55 | "shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a", 56 | "tarball": "http://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz" 57 | }, 58 | "directories": {}, 59 | "_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", 60 | "readme": "ERROR: No README data found!" 61 | } 62 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/test.js: -------------------------------------------------------------------------------- 1 | var test = require('tap').test 2 | var inf = require('./inflight.js') 3 | 4 | 5 | function req (key, cb) { 6 | cb = inf(key, cb) 7 | if (cb) setTimeout(function () { 8 | cb(key) 9 | cb(key) 10 | }) 11 | return cb 12 | } 13 | 14 | test('basic', function (t) { 15 | var calleda = false 16 | var a = req('key', function (k) { 17 | t.notOk(calleda) 18 | calleda = true 19 | t.equal(k, 'key') 20 | if (calledb) t.end() 21 | }) 22 | t.ok(a, 'first returned cb function') 23 | 24 | var calledb = false 25 | var b = req('key', function (k) { 26 | t.notOk(calledb) 27 | calledb = true 28 | t.equal(k, 'key') 29 | if (calleda) t.end() 30 | }) 31 | 32 | t.notOk(b, 'second should get falsey inflight response') 33 | }) 34 | 35 | test('timing', function (t) { 36 | var expect = [ 37 | 'method one', 38 | 'start one', 39 | 'end one', 40 | 'two', 41 | 'tick', 42 | 'three' 43 | ] 44 | var i = 0 45 | 46 | function log (m) { 47 | t.equal(m, expect[i], m + ' === ' + expect[i]) 48 | ++i 49 | if (i === expect.length) 50 | t.end() 51 | } 52 | 53 | function method (name, cb) { 54 | log('method ' + name) 55 | process.nextTick(cb) 56 | } 57 | 58 | var one = inf('foo', function () { 59 | log('start one') 60 | var three = inf('foo', function () { 61 | log('three') 62 | }) 63 | if (three) method('three', three) 64 | log('end one') 65 | }) 66 | 67 | method('one', one) 68 | 69 | var two = inf('foo', function () { 70 | log('two') 71 | }) 72 | if (two) method('one', two) 73 | 74 | process.nextTick(log.bind(null, 'tick')) 75 | }) 76 | 77 | test('parameters', function (t) { 78 | t.plan(8) 79 | 80 | var a = inf('key', function (first, second, third) { 81 | t.equal(first, 1) 82 | t.equal(second, 2) 83 | t.equal(third, 3) 84 | }) 85 | t.ok(a, 'first returned cb function') 86 | 87 | var b = inf('key', function (first, second, third) { 88 | t.equal(first, 1) 89 | t.equal(second, 2) 90 | t.equal(third, 3) 91 | }) 92 | t.notOk(b, 'second should get falsey inflight response') 93 | 94 | setTimeout(function () { 95 | a(1, 2, 3) 96 | }) 97 | }) 98 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/LICENSE: -------------------------------------------------------------------------------- 1 | The ISC License 2 | 3 | Copyright (c) Isaac Z. Schlueter 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 11 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 14 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15 | PERFORMANCE OF THIS SOFTWARE. 16 | 17 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/README.md: -------------------------------------------------------------------------------- 1 | Browser-friendly inheritance fully compatible with standard node.js 2 | [inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). 3 | 4 | This package exports standard `inherits` from node.js `util` module in 5 | node environment, but also provides alternative browser-friendly 6 | implementation through [browser 7 | field](https://gist.github.com/shtylman/4339901). Alternative 8 | implementation is a literal copy of standard one located in standalone 9 | module to avoid requiring of `util`. It also has a shim for old 10 | browsers with no `Object.create` support. 11 | 12 | While keeping you sure you are using standard `inherits` 13 | implementation in node.js environment, it allows bundlers such as 14 | [browserify](https://github.com/substack/node-browserify) to not 15 | include full `util` package to your client code if all you need is 16 | just `inherits` function. It worth, because browser shim for `util` 17 | package is large and `inherits` is often the single function you need 18 | from it. 19 | 20 | It's recommended to use this package instead of 21 | `require('util').inherits` for any code that has chances to be used 22 | not only in node.js but in browser too. 23 | 24 | ## usage 25 | 26 | ```js 27 | var inherits = require('inherits'); 28 | // then use exactly as the standard one 29 | ``` 30 | 31 | ## note on version ~1.0 32 | 33 | Version ~1.0 had completely different motivation and is not compatible 34 | neither with 2.0 nor with standard node.js `inherits`. 35 | 36 | If you are using version ~1.0 and planning to switch to ~2.0, be 37 | careful: 38 | 39 | * new version uses `super_` instead of `super` for referencing 40 | superclass 41 | * new version overwrites current prototype while old one preserves any 42 | existing fields on it 43 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/inherits.js: -------------------------------------------------------------------------------- 1 | module.exports = require('util').inherits 2 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/inherits_browser.js: -------------------------------------------------------------------------------- 1 | if (typeof Object.create === 'function') { 2 | // implementation from standard node.js 'util' module 3 | module.exports = function inherits(ctor, superCtor) { 4 | ctor.super_ = superCtor 5 | ctor.prototype = Object.create(superCtor.prototype, { 6 | constructor: { 7 | value: ctor, 8 | enumerable: false, 9 | writable: true, 10 | configurable: true 11 | } 12 | }); 13 | }; 14 | } else { 15 | // old school shim for old browsers 16 | module.exports = function inherits(ctor, superCtor) { 17 | ctor.super_ = superCtor 18 | var TempCtor = function () {} 19 | TempCtor.prototype = superCtor.prototype 20 | ctor.prototype = new TempCtor() 21 | ctor.prototype.constructor = ctor 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "inherits", 3 | "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", 4 | "version": "2.0.1", 5 | "keywords": [ 6 | "inheritance", 7 | "class", 8 | "klass", 9 | "oop", 10 | "object-oriented", 11 | "inherits", 12 | "browser", 13 | "browserify" 14 | ], 15 | "main": "./inherits.js", 16 | "browser": "./inherits_browser.js", 17 | "repository": { 18 | "type": "git", 19 | "url": "git://github.com/isaacs/inherits.git" 20 | }, 21 | "license": "ISC", 22 | "scripts": { 23 | "test": "node test" 24 | }, 25 | "bugs": { 26 | "url": "https://github.com/isaacs/inherits/issues" 27 | }, 28 | "_id": "inherits@2.0.1", 29 | "dist": { 30 | "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", 31 | "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 32 | }, 33 | "_from": "inherits@>=2.0.0 <3.0.0", 34 | "_npmVersion": "1.3.8", 35 | "_npmUser": { 36 | "name": "isaacs", 37 | "email": "i@izs.me" 38 | }, 39 | "maintainers": [ 40 | { 41 | "name": "isaacs", 42 | "email": "i@izs.me" 43 | } 44 | ], 45 | "directories": {}, 46 | "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", 47 | "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 48 | "readme": "ERROR: No README data found!", 49 | "homepage": "https://github.com/isaacs/inherits#readme" 50 | } 51 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/test.js: -------------------------------------------------------------------------------- 1 | var inherits = require('./inherits.js') 2 | var assert = require('assert') 3 | 4 | function test(c) { 5 | assert(c.constructor === Child) 6 | assert(c.constructor.super_ === Parent) 7 | assert(Object.getPrototypeOf(c) === Child.prototype) 8 | assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) 9 | assert(c instanceof Child) 10 | assert(c instanceof Parent) 11 | } 12 | 13 | function Child() { 14 | Parent.call(this) 15 | test(this) 16 | } 17 | 18 | function Parent() {} 19 | 20 | inherits(Child, Parent) 21 | 22 | var c = new Child 23 | test(c) 24 | 25 | console.log('ok') 26 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/LICENSE: -------------------------------------------------------------------------------- 1 | The ISC License 2 | 3 | Copyright (c) Isaac Z. Schlueter and Contributors 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/README.md: -------------------------------------------------------------------------------- 1 | # once 2 | 3 | Only call a function once. 4 | 5 | ## usage 6 | 7 | ```javascript 8 | var once = require('once') 9 | 10 | function load (file, cb) { 11 | cb = once(cb) 12 | loader.load('file') 13 | loader.once('load', cb) 14 | loader.once('error', cb) 15 | } 16 | ``` 17 | 18 | Or add to the Function.prototype in a responsible way: 19 | 20 | ```javascript 21 | // only has to be done once 22 | require('once').proto() 23 | 24 | function load (file, cb) { 25 | cb = cb.once() 26 | loader.load('file') 27 | loader.once('load', cb) 28 | loader.once('error', cb) 29 | } 30 | ``` 31 | 32 | Ironically, the prototype feature makes this module twice as 33 | complicated as necessary. 34 | 35 | To check whether you function has been called, use `fn.called`. Once the 36 | function is called for the first time the return value of the original 37 | function is saved in `fn.value` and subsequent calls will continue to 38 | return this value. 39 | 40 | ```javascript 41 | var once = require('once') 42 | 43 | function load (cb) { 44 | cb = once(cb) 45 | var stream = createStream() 46 | stream.once('data', cb) 47 | stream.once('end', function () { 48 | if (!cb.called) cb(new Error('not found')) 49 | }) 50 | } 51 | ``` 52 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE: -------------------------------------------------------------------------------- 1 | The ISC License 2 | 3 | Copyright (c) Isaac Z. Schlueter and Contributors 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/node_modules/wrappy/README.md: -------------------------------------------------------------------------------- 1 | # wrappy 2 | 3 | Callback wrapping utility 4 | 5 | ## USAGE 6 | 7 | ```javascript 8 | var wrappy = require("wrappy") 9 | 10 | // var wrapper = wrappy(wrapperFunction) 11 | 12 | // make sure a cb is called only once 13 | // See also: http://npm.im/once for this specific use case 14 | var once = wrappy(function (cb) { 15 | var called = false 16 | return function () { 17 | if (called) return 18 | called = true 19 | return cb.apply(this, arguments) 20 | } 21 | }) 22 | 23 | function printBoo () { 24 | console.log('boo') 25 | } 26 | // has some rando property 27 | printBoo.iAmBooPrinter = true 28 | 29 | var onlyPrintOnce = once(printBoo) 30 | 31 | onlyPrintOnce() // prints 'boo' 32 | onlyPrintOnce() // does nothing 33 | 34 | // random property is retained! 35 | assert.equal(onlyPrintOnce.iAmBooPrinter, true) 36 | ``` 37 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/node_modules/wrappy/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wrappy", 3 | "version": "1.0.1", 4 | "description": "Callback wrapping utility", 5 | "main": "wrappy.js", 6 | "directories": { 7 | "test": "test" 8 | }, 9 | "dependencies": {}, 10 | "devDependencies": { 11 | "tap": "^0.4.12" 12 | }, 13 | "scripts": { 14 | "test": "tap test/*.js" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "git+https://github.com/npm/wrappy.git" 19 | }, 20 | "author": { 21 | "name": "Isaac Z. Schlueter", 22 | "email": "i@izs.me", 23 | "url": "http://blog.izs.me/" 24 | }, 25 | "license": "ISC", 26 | "bugs": { 27 | "url": "https://github.com/npm/wrappy/issues" 28 | }, 29 | "homepage": "https://github.com/npm/wrappy", 30 | "gitHead": "006a8cbac6b99988315834c207896eed71fd069a", 31 | "_id": "wrappy@1.0.1", 32 | "_shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739", 33 | "_from": "wrappy@>=1.0.0 <2.0.0", 34 | "_npmVersion": "2.0.0", 35 | "_nodeVersion": "0.10.31", 36 | "_npmUser": { 37 | "name": "isaacs", 38 | "email": "i@izs.me" 39 | }, 40 | "maintainers": [ 41 | { 42 | "name": "isaacs", 43 | "email": "i@izs.me" 44 | } 45 | ], 46 | "dist": { 47 | "shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739", 48 | "tarball": "http://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" 49 | }, 50 | "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", 51 | "readme": "ERROR: No README data found!" 52 | } 53 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js: -------------------------------------------------------------------------------- 1 | var test = require('tap').test 2 | var wrappy = require('../wrappy.js') 3 | 4 | test('basic', function (t) { 5 | function onceifier (cb) { 6 | var called = false 7 | return function () { 8 | if (called) return 9 | called = true 10 | return cb.apply(this, arguments) 11 | } 12 | } 13 | onceifier.iAmOnce = {} 14 | var once = wrappy(onceifier) 15 | t.equal(once.iAmOnce, onceifier.iAmOnce) 16 | 17 | var called = 0 18 | function boo () { 19 | t.equal(called, 0) 20 | called++ 21 | } 22 | // has some rando property 23 | boo.iAmBoo = true 24 | 25 | var onlyPrintOnce = once(boo) 26 | 27 | onlyPrintOnce() // prints 'boo' 28 | onlyPrintOnce() // does nothing 29 | t.equal(called, 1) 30 | 31 | // random property is retained! 32 | t.equal(onlyPrintOnce.iAmBoo, true) 33 | 34 | var logs = [] 35 | var logwrap = wrappy(function (msg, cb) { 36 | logs.push(msg + ' wrapping cb') 37 | return function () { 38 | logs.push(msg + ' before cb') 39 | var ret = cb.apply(this, arguments) 40 | logs.push(msg + ' after cb') 41 | } 42 | }) 43 | 44 | var c = logwrap('foo', function () { 45 | t.same(logs, [ 'foo wrapping cb', 'foo before cb' ]) 46 | }) 47 | c() 48 | t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ]) 49 | 50 | t.end() 51 | }) 52 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js: -------------------------------------------------------------------------------- 1 | // Returns a wrapper function that returns a wrapped callback 2 | // The wrapper function should do some stuff, and return a 3 | // presumably different callback function. 4 | // This makes sure that own properties are retained, so that 5 | // decorations and such are not lost along the way. 6 | module.exports = wrappy 7 | function wrappy (fn, cb) { 8 | if (fn && cb) return wrappy(fn)(cb) 9 | 10 | if (typeof fn !== 'function') 11 | throw new TypeError('need wrapper function') 12 | 13 | Object.keys(fn).forEach(function (k) { 14 | wrapper[k] = fn[k] 15 | }) 16 | 17 | return wrapper 18 | 19 | function wrapper() { 20 | var args = new Array(arguments.length) 21 | for (var i = 0; i < args.length; i++) { 22 | args[i] = arguments[i] 23 | } 24 | var ret = fn.apply(this, args) 25 | var cb = args[args.length-1] 26 | if (typeof ret === 'function' && ret !== cb) { 27 | Object.keys(cb).forEach(function (k) { 28 | ret[k] = cb[k] 29 | }) 30 | } 31 | return ret 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/once.js: -------------------------------------------------------------------------------- 1 | var wrappy = require('wrappy') 2 | module.exports = wrappy(once) 3 | 4 | once.proto = once(function () { 5 | Object.defineProperty(Function.prototype, 'once', { 6 | value: function () { 7 | return once(this) 8 | }, 9 | configurable: true 10 | }) 11 | }) 12 | 13 | function once (fn) { 14 | var f = function () { 15 | if (f.called) return f.value 16 | f.called = true 17 | return f.value = fn.apply(this, arguments) 18 | } 19 | f.called = false 20 | return f 21 | } 22 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "once", 3 | "version": "1.3.3", 4 | "description": "Run a function exactly one time", 5 | "main": "once.js", 6 | "directories": { 7 | "test": "test" 8 | }, 9 | "dependencies": { 10 | "wrappy": "1" 11 | }, 12 | "devDependencies": { 13 | "tap": "^1.2.0" 14 | }, 15 | "scripts": { 16 | "test": "tap test/*.js" 17 | }, 18 | "files": [ 19 | "once.js" 20 | ], 21 | "repository": { 22 | "type": "git", 23 | "url": "git://github.com/isaacs/once.git" 24 | }, 25 | "keywords": [ 26 | "once", 27 | "function", 28 | "one", 29 | "single" 30 | ], 31 | "author": { 32 | "name": "Isaac Z. Schlueter", 33 | "email": "i@izs.me", 34 | "url": "http://blog.izs.me/" 35 | }, 36 | "license": "ISC", 37 | "gitHead": "2ad558657e17fafd24803217ba854762842e4178", 38 | "bugs": { 39 | "url": "https://github.com/isaacs/once/issues" 40 | }, 41 | "homepage": "https://github.com/isaacs/once#readme", 42 | "_id": "once@1.3.3", 43 | "_shasum": "b2e261557ce4c314ec8304f3fa82663e4297ca20", 44 | "_from": "once@>=1.3.0 <2.0.0", 45 | "_npmVersion": "3.3.2", 46 | "_nodeVersion": "4.0.0", 47 | "_npmUser": { 48 | "name": "isaacs", 49 | "email": "i@izs.me" 50 | }, 51 | "dist": { 52 | "shasum": "b2e261557ce4c314ec8304f3fa82663e4297ca20", 53 | "tarball": "http://registry.npmjs.org/once/-/once-1.3.3.tgz" 54 | }, 55 | "maintainers": [ 56 | { 57 | "name": "isaacs", 58 | "email": "i@izs.me" 59 | } 60 | ], 61 | "_resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 62 | "readme": "ERROR: No README data found!" 63 | } 64 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/path-is-absolute/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | function posix(path) { 4 | return path.charAt(0) === '/'; 5 | }; 6 | 7 | function win32(path) { 8 | // https://github.com/joyent/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 9 | var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; 10 | var result = splitDeviceRe.exec(path); 11 | var device = result[1] || ''; 12 | var isUnc = !!device && device.charAt(1) !== ':'; 13 | 14 | // UNC paths are always absolute 15 | return !!result[2] || isUnc; 16 | }; 17 | 18 | module.exports = process.platform === 'win32' ? win32 : posix; 19 | module.exports.posix = posix; 20 | module.exports.win32 = win32; 21 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/path-is-absolute/license: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Sindre Sorhus (sindresorhus.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/path-is-absolute/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "path-is-absolute", 3 | "version": "1.0.0", 4 | "description": "Node.js 0.12 path.isAbsolute() ponyfill", 5 | "license": "MIT", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/sindresorhus/path-is-absolute.git" 9 | }, 10 | "author": { 11 | "name": "Sindre Sorhus", 12 | "email": "sindresorhus@gmail.com", 13 | "url": "sindresorhus.com" 14 | }, 15 | "engines": { 16 | "node": ">=0.10.0" 17 | }, 18 | "scripts": { 19 | "test": "node test.js" 20 | }, 21 | "files": [ 22 | "index.js" 23 | ], 24 | "keywords": [ 25 | "path", 26 | "paths", 27 | "file", 28 | "dir", 29 | "absolute", 30 | "isabsolute", 31 | "is-absolute", 32 | "built-in", 33 | "util", 34 | "utils", 35 | "core", 36 | "ponyfill", 37 | "polyfill", 38 | "shim", 39 | "is", 40 | "detect", 41 | "check" 42 | ], 43 | "gitHead": "7a76a0c9f2263192beedbe0a820e4d0baee5b7a1", 44 | "bugs": { 45 | "url": "https://github.com/sindresorhus/path-is-absolute/issues" 46 | }, 47 | "homepage": "https://github.com/sindresorhus/path-is-absolute", 48 | "_id": "path-is-absolute@1.0.0", 49 | "_shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912", 50 | "_from": "path-is-absolute@>=1.0.0 <2.0.0", 51 | "_npmVersion": "2.5.1", 52 | "_nodeVersion": "0.12.0", 53 | "_npmUser": { 54 | "name": "sindresorhus", 55 | "email": "sindresorhus@gmail.com" 56 | }, 57 | "maintainers": [ 58 | { 59 | "name": "sindresorhus", 60 | "email": "sindresorhus@gmail.com" 61 | } 62 | ], 63 | "dist": { 64 | "shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912", 65 | "tarball": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" 66 | }, 67 | "directories": {}, 68 | "_resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", 69 | "readme": "ERROR: No README data found!" 70 | } 71 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/path-is-absolute/readme.md: -------------------------------------------------------------------------------- 1 | # path-is-absolute [![Build Status](https://travis-ci.org/sindresorhus/path-is-absolute.svg?branch=master)](https://travis-ci.org/sindresorhus/path-is-absolute) 2 | 3 | > Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) ponyfill 4 | 5 | > Ponyfill: A polyfill that doesn't overwrite the native method 6 | 7 | 8 | ## Install 9 | 10 | ``` 11 | $ npm install --save path-is-absolute 12 | ``` 13 | 14 | 15 | ## Usage 16 | 17 | ```js 18 | var pathIsAbsolute = require('path-is-absolute'); 19 | 20 | // Linux 21 | pathIsAbsolute('/home/foo'); 22 | //=> true 23 | 24 | // Windows 25 | pathIsAbsolute('C:/Users/'); 26 | //=> true 27 | 28 | // Any OS 29 | pathIsAbsolute.posix('/home/foo'); 30 | //=> true 31 | ``` 32 | 33 | 34 | ## API 35 | 36 | See the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isabsolute_path). 37 | 38 | ### pathIsAbsolute(path) 39 | 40 | ### pathIsAbsolute.posix(path) 41 | 42 | The Posix specific version. 43 | 44 | ### pathIsAbsolute.win32(path) 45 | 46 | The Windows specific version. 47 | 48 | 49 | ## License 50 | 51 | MIT © [Sindre Sorhus](http://sindresorhus.com) 52 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": { 3 | "name": "Isaac Z. Schlueter", 4 | "email": "i@izs.me", 5 | "url": "http://blog.izs.me/" 6 | }, 7 | "name": "glob", 8 | "description": "a little globber", 9 | "version": "6.0.1", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/isaacs/node-glob.git" 13 | }, 14 | "main": "glob.js", 15 | "files": [ 16 | "glob.js", 17 | "sync.js", 18 | "common.js" 19 | ], 20 | "engines": { 21 | "node": "*" 22 | }, 23 | "dependencies": { 24 | "inflight": "^1.0.4", 25 | "inherits": "2", 26 | "minimatch": "2 || 3", 27 | "once": "^1.3.0", 28 | "path-is-absolute": "^1.0.0" 29 | }, 30 | "devDependencies": { 31 | "mkdirp": "0", 32 | "rimraf": "^2.2.8", 33 | "tap": "^1.1.4", 34 | "tick": "0.0.6" 35 | }, 36 | "scripts": { 37 | "prepublish": "npm run benchclean", 38 | "profclean": "rm -f v8.log profile.txt", 39 | "test": "tap test/*.js --cov", 40 | "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js", 41 | "bench": "bash benchmark.sh", 42 | "prof": "bash prof.sh && cat profile.txt", 43 | "benchclean": "node benchclean.js" 44 | }, 45 | "license": "ISC", 46 | "gitHead": "3741149fe4fe7060794e85da1bd8cecde623d90b", 47 | "bugs": { 48 | "url": "https://github.com/isaacs/node-glob/issues" 49 | }, 50 | "homepage": "https://github.com/isaacs/node-glob#readme", 51 | "_id": "glob@6.0.1", 52 | "_shasum": "16a89b94ac361b2a670a0a141a21ad51b438d21d", 53 | "_from": "glob@>=6.0.1 <7.0.0", 54 | "_npmVersion": "3.3.2", 55 | "_nodeVersion": "4.0.0", 56 | "_npmUser": { 57 | "name": "isaacs", 58 | "email": "i@izs.me" 59 | }, 60 | "dist": { 61 | "shasum": "16a89b94ac361b2a670a0a141a21ad51b438d21d", 62 | "tarball": "http://registry.npmjs.org/glob/-/glob-6.0.1.tgz" 63 | }, 64 | "maintainers": [ 65 | { 66 | "name": "isaacs", 67 | "email": "i@izs.me" 68 | } 69 | ], 70 | "directories": {}, 71 | "_resolved": "https://registry.npmjs.org/glob/-/glob-6.0.1.tgz", 72 | "readme": "ERROR: No README data found!" 73 | } 74 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/LICENSE: -------------------------------------------------------------------------------- 1 | The ISC License 2 | 3 | Copyright (c) Isaac Z. Schlueter and Contributors 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/.npmignore: -------------------------------------------------------------------------------- 1 | test 2 | .gitignore 3 | .travis.yml 4 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/example.js: -------------------------------------------------------------------------------- 1 | var expand = require('./'); 2 | 3 | console.log(expand('http://any.org/archive{1996..1999}/vol{1..4}/part{a,b,c}.html')); 4 | console.log(expand('http://www.numericals.com/file{1..100..10}.txt')); 5 | console.log(expand('http://www.letters.com/file{a..z..2}.txt')); 6 | console.log(expand('mkdir /usr/local/src/bash/{old,new,dist,bugs}')); 7 | console.log(expand('chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}')); 8 | 9 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "0.10" 4 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md: -------------------------------------------------------------------------------- 1 | (MIT) 2 | 3 | Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | of the Software, and to permit persons to whom the Software is furnished to do 10 | so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile: -------------------------------------------------------------------------------- 1 | 2 | test: 3 | @node_modules/.bin/tape test/*.js 4 | 5 | .PHONY: test 6 | 7 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md: -------------------------------------------------------------------------------- 1 | # balanced-match 2 | 3 | Match balanced string pairs, like `{` and `}` or `` and ``. 4 | 5 | [![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match) 6 | [![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match) 7 | 8 | [![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match) 9 | 10 | ## Example 11 | 12 | Get the first matching pair of braces: 13 | 14 | ```js 15 | var balanced = require('balanced-match'); 16 | 17 | console.log(balanced('{', '}', 'pre{in{nested}}post')); 18 | console.log(balanced('{', '}', 'pre{first}between{second}post')); 19 | ``` 20 | 21 | The matches are: 22 | 23 | ```bash 24 | $ node example.js 25 | { start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' } 26 | { start: 3, 27 | end: 9, 28 | pre: 'pre', 29 | body: 'first', 30 | post: 'between{second}post' } 31 | ``` 32 | 33 | ## API 34 | 35 | ### var m = balanced(a, b, str) 36 | 37 | For the first non-nested matching pair of `a` and `b` in `str`, return an 38 | object with those keys: 39 | 40 | * **start** the index of the first match of `a` 41 | * **end** the index of the matching `b` 42 | * **pre** the preamble, `a` and `b` not included 43 | * **body** the match, `a` and `b` not included 44 | * **post** the postscript, `a` and `b` not included 45 | 46 | If there's no match, `undefined` will be returned. 47 | 48 | If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']`. 49 | 50 | ### var r = balanced.range(a, b, str) 51 | 52 | For the first non-nested matching pair of `a` and `b` in `str`, return an 53 | array with indexes: `[ , ]`. 54 | 55 | If there's no match, `undefined` will be returned. 56 | 57 | If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]`. 58 | 59 | ## Installation 60 | 61 | With [npm](https://npmjs.org) do: 62 | 63 | ```bash 64 | npm install balanced-match 65 | ``` 66 | 67 | ## License 68 | 69 | (MIT) 70 | 71 | Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> 72 | 73 | Permission is hereby granted, free of charge, to any person obtaining a copy of 74 | this software and associated documentation files (the "Software"), to deal in 75 | the Software without restriction, including without limitation the rights to 76 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 77 | of the Software, and to permit persons to whom the Software is furnished to do 78 | so, subject to the following conditions: 79 | 80 | The above copyright notice and this permission notice shall be included in all 81 | copies or substantial portions of the Software. 82 | 83 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 84 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 85 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 86 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 87 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 88 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 89 | SOFTWARE. 90 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js: -------------------------------------------------------------------------------- 1 | var balanced = require('./'); 2 | 3 | console.log(balanced('{', '}', 'pre{in{nested}}post')); 4 | console.log(balanced('{', '}', 'pre{first}between{second}post')); 5 | 6 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js: -------------------------------------------------------------------------------- 1 | module.exports = balanced; 2 | function balanced(a, b, str) { 3 | var r = range(a, b, str); 4 | 5 | return r && { 6 | start: r[0], 7 | end: r[1], 8 | pre: str.slice(0, r[0]), 9 | body: str.slice(r[0] + a.length, r[1]), 10 | post: str.slice(r[1] + b.length) 11 | }; 12 | } 13 | 14 | balanced.range = range; 15 | function range(a, b, str) { 16 | var begs, beg, left, right, result; 17 | var ai = str.indexOf(a); 18 | var bi = str.indexOf(b, ai + 1); 19 | var i = ai; 20 | 21 | if (ai >= 0 && bi > 0) { 22 | begs = []; 23 | left = str.length; 24 | 25 | while (i < str.length && i >= 0 && ! result) { 26 | if (i == ai) { 27 | begs.push(i); 28 | ai = str.indexOf(a, i + 1); 29 | } else if (begs.length == 1) { 30 | result = [ begs.pop(), bi ]; 31 | } else { 32 | beg = begs.pop(); 33 | if (beg < left) { 34 | left = beg; 35 | right = bi; 36 | } 37 | 38 | bi = str.indexOf(b, i + 1); 39 | } 40 | 41 | i = ai < bi && ai >= 0 ? ai : bi; 42 | } 43 | 44 | if (begs.length) { 45 | result = [ left, right ]; 46 | } 47 | } 48 | 49 | return result; 50 | } 51 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "balanced-match", 3 | "description": "Match balanced character pairs, like \"{\" and \"}\"", 4 | "version": "0.3.0", 5 | "repository": { 6 | "type": "git", 7 | "url": "git://github.com/juliangruber/balanced-match.git" 8 | }, 9 | "homepage": "https://github.com/juliangruber/balanced-match", 10 | "main": "index.js", 11 | "scripts": { 12 | "test": "make test" 13 | }, 14 | "dependencies": {}, 15 | "devDependencies": { 16 | "tape": "~4.2.2" 17 | }, 18 | "keywords": [ 19 | "match", 20 | "regexp", 21 | "test", 22 | "balanced", 23 | "parse" 24 | ], 25 | "author": { 26 | "name": "Julian Gruber", 27 | "email": "mail@juliangruber.com", 28 | "url": "http://juliangruber.com" 29 | }, 30 | "license": "MIT", 31 | "testling": { 32 | "files": "test/*.js", 33 | "browsers": [ 34 | "ie/8..latest", 35 | "firefox/20..latest", 36 | "firefox/nightly", 37 | "chrome/25..latest", 38 | "chrome/canary", 39 | "opera/12..latest", 40 | "opera/next", 41 | "safari/5.1..latest", 42 | "ipad/6.0..latest", 43 | "iphone/6.0..latest", 44 | "android-browser/4.2..latest" 45 | ] 46 | }, 47 | "gitHead": "a7114b0986554787e90b7ac595a043ca75ea77e5", 48 | "bugs": { 49 | "url": "https://github.com/juliangruber/balanced-match/issues" 50 | }, 51 | "_id": "balanced-match@0.3.0", 52 | "_shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756", 53 | "_from": "balanced-match@>=0.3.0 <0.4.0", 54 | "_npmVersion": "2.14.7", 55 | "_nodeVersion": "4.2.1", 56 | "_npmUser": { 57 | "name": "juliangruber", 58 | "email": "julian@juliangruber.com" 59 | }, 60 | "dist": { 61 | "shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756", 62 | "tarball": "http://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz" 63 | }, 64 | "maintainers": [ 65 | { 66 | "name": "juliangruber", 67 | "email": "julian@juliangruber.com" 68 | } 69 | ], 70 | "directories": {}, 71 | "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz", 72 | "readme": "ERROR: No README data found!" 73 | } 74 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js: -------------------------------------------------------------------------------- 1 | var test = require('tape'); 2 | var balanced = require('..'); 3 | 4 | test('balanced', function(t) { 5 | t.deepEqual(balanced('{', '}', 'pre{in{nest}}post'), { 6 | start: 3, 7 | end: 12, 8 | pre: 'pre', 9 | body: 'in{nest}', 10 | post: 'post' 11 | }); 12 | t.deepEqual(balanced('{', '}', '{{{{{{{{{in}post'), { 13 | start: 8, 14 | end: 11, 15 | pre: '{{{{{{{{', 16 | body: 'in', 17 | post: 'post' 18 | }); 19 | t.deepEqual(balanced('{', '}', 'pre{body{in}post'), { 20 | start: 8, 21 | end: 11, 22 | pre: 'pre{body', 23 | body: 'in', 24 | post: 'post' 25 | }); 26 | t.deepEqual(balanced('{', '}', 'pre}{in{nest}}post'), { 27 | start: 4, 28 | end: 13, 29 | pre: 'pre}', 30 | body: 'in{nest}', 31 | post: 'post' 32 | }); 33 | t.deepEqual(balanced('{', '}', 'pre{body}between{body2}post'), { 34 | start: 3, 35 | end: 8, 36 | pre: 'pre', 37 | body: 'body', 38 | post: 'between{body2}post' 39 | }); 40 | t.notOk(balanced('{', '}', 'nope'), 'should be notOk'); 41 | t.deepEqual(balanced('', '', 'preinnestpost'), { 42 | start: 3, 43 | end: 19, 44 | pre: 'pre', 45 | body: 'innest', 46 | post: 'post' 47 | }); 48 | t.deepEqual(balanced('', '', 'preinnestpost'), { 49 | start: 7, 50 | end: 23, 51 | pre: 'pre', 52 | body: 'innest', 53 | post: 'post' 54 | }); 55 | t.deepEqual(balanced('{{', '}}', 'pre{{{in}}}post'), { 56 | start: 3, 57 | end: 9, 58 | pre: 'pre', 59 | body: '{in}', 60 | post: 'post' 61 | }); 62 | t.deepEqual(balanced('{{{', '}}', 'pre{{{in}}}post'), { 63 | start: 3, 64 | end: 8, 65 | pre: 'pre', 66 | body: 'in', 67 | post: '}post' 68 | }); 69 | t.deepEqual(balanced('{', '}', 'pre{{first}in{second}post'), { 70 | start: 4, 71 | end: 10, 72 | pre: 'pre{', 73 | body: 'first', 74 | post: 'in{second}post' 75 | }); 76 | t.deepEqual(balanced('', 'prepost'), { 77 | start: 3, 78 | end: 4, 79 | pre: 'pre', 80 | body: '', 81 | post: 'post' 82 | }); 83 | t.end(); 84 | }); 85 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.4 4 | - 0.6 5 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE: -------------------------------------------------------------------------------- 1 | This software is released under the MIT license: 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software is furnished to do so, 8 | subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 15 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 16 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown: -------------------------------------------------------------------------------- 1 | concat-map 2 | ========== 3 | 4 | Concatenative mapdashery. 5 | 6 | [![browser support](http://ci.testling.com/substack/node-concat-map.png)](http://ci.testling.com/substack/node-concat-map) 7 | 8 | [![build status](https://secure.travis-ci.org/substack/node-concat-map.png)](http://travis-ci.org/substack/node-concat-map) 9 | 10 | example 11 | ======= 12 | 13 | ``` js 14 | var concatMap = require('concat-map'); 15 | var xs = [ 1, 2, 3, 4, 5, 6 ]; 16 | var ys = concatMap(xs, function (x) { 17 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; 18 | }); 19 | console.dir(ys); 20 | ``` 21 | 22 | *** 23 | 24 | ``` 25 | [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ] 26 | ``` 27 | 28 | methods 29 | ======= 30 | 31 | ``` js 32 | var concatMap = require('concat-map') 33 | ``` 34 | 35 | concatMap(xs, fn) 36 | ----------------- 37 | 38 | Return an array of concatenated elements by calling `fn(x, i)` for each element 39 | `x` and each index `i` in the array `xs`. 40 | 41 | When `fn(x, i)` returns an array, its result will be concatenated with the 42 | result array. If `fn(x, i)` returns anything else, that value will be pushed 43 | onto the end of the result array. 44 | 45 | install 46 | ======= 47 | 48 | With [npm](http://npmjs.org) do: 49 | 50 | ``` 51 | npm install concat-map 52 | ``` 53 | 54 | license 55 | ======= 56 | 57 | MIT 58 | 59 | notes 60 | ===== 61 | 62 | This module was written while sitting high above the ground in a tree. 63 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js: -------------------------------------------------------------------------------- 1 | var concatMap = require('../'); 2 | var xs = [ 1, 2, 3, 4, 5, 6 ]; 3 | var ys = concatMap(xs, function (x) { 4 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; 5 | }); 6 | console.dir(ys); 7 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js: -------------------------------------------------------------------------------- 1 | module.exports = function (xs, fn) { 2 | var res = []; 3 | for (var i = 0; i < xs.length; i++) { 4 | var x = fn(xs[i], i); 5 | if (isArray(x)) res.push.apply(res, x); 6 | else res.push(x); 7 | } 8 | return res; 9 | }; 10 | 11 | var isArray = Array.isArray || function (xs) { 12 | return Object.prototype.toString.call(xs) === '[object Array]'; 13 | }; 14 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "concat-map", 3 | "description": "concatenative mapdashery", 4 | "version": "0.0.1", 5 | "repository": { 6 | "type": "git", 7 | "url": "git://github.com/substack/node-concat-map.git" 8 | }, 9 | "main": "index.js", 10 | "keywords": [ 11 | "concat", 12 | "concatMap", 13 | "map", 14 | "functional", 15 | "higher-order" 16 | ], 17 | "directories": { 18 | "example": "example", 19 | "test": "test" 20 | }, 21 | "scripts": { 22 | "test": "tape test/*.js" 23 | }, 24 | "devDependencies": { 25 | "tape": "~2.4.0" 26 | }, 27 | "license": "MIT", 28 | "author": { 29 | "name": "James Halliday", 30 | "email": "mail@substack.net", 31 | "url": "http://substack.net" 32 | }, 33 | "testling": { 34 | "files": "test/*.js", 35 | "browsers": { 36 | "ie": [ 37 | 6, 38 | 7, 39 | 8, 40 | 9 41 | ], 42 | "ff": [ 43 | 3.5, 44 | 10, 45 | 15 46 | ], 47 | "chrome": [ 48 | 10, 49 | 22 50 | ], 51 | "safari": [ 52 | 5.1 53 | ], 54 | "opera": [ 55 | 12 56 | ] 57 | } 58 | }, 59 | "bugs": { 60 | "url": "https://github.com/substack/node-concat-map/issues" 61 | }, 62 | "homepage": "https://github.com/substack/node-concat-map", 63 | "_id": "concat-map@0.0.1", 64 | "dist": { 65 | "shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", 66 | "tarball": "http://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 67 | }, 68 | "_from": "concat-map@0.0.1", 69 | "_npmVersion": "1.3.21", 70 | "_npmUser": { 71 | "name": "substack", 72 | "email": "mail@substack.net" 73 | }, 74 | "maintainers": [ 75 | { 76 | "name": "substack", 77 | "email": "mail@substack.net" 78 | } 79 | ], 80 | "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", 81 | "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 82 | "readme": "ERROR: No README data found!" 83 | } 84 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js: -------------------------------------------------------------------------------- 1 | var concatMap = require('../'); 2 | var test = require('tape'); 3 | 4 | test('empty or not', function (t) { 5 | var xs = [ 1, 2, 3, 4, 5, 6 ]; 6 | var ixes = []; 7 | var ys = concatMap(xs, function (x, ix) { 8 | ixes.push(ix); 9 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; 10 | }); 11 | t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]); 12 | t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]); 13 | t.end(); 14 | }); 15 | 16 | test('always something', function (t) { 17 | var xs = [ 'a', 'b', 'c', 'd' ]; 18 | var ys = concatMap(xs, function (x) { 19 | return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ]; 20 | }); 21 | t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); 22 | t.end(); 23 | }); 24 | 25 | test('scalars', function (t) { 26 | var xs = [ 'a', 'b', 'c', 'd' ]; 27 | var ys = concatMap(xs, function (x) { 28 | return x === 'b' ? [ 'B', 'B', 'B' ] : x; 29 | }); 30 | t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); 31 | t.end(); 32 | }); 33 | 34 | test('undefs', function (t) { 35 | var xs = [ 'a', 'b', 'c', 'd' ]; 36 | var ys = concatMap(xs, function () {}); 37 | t.same(ys, [ undefined, undefined, undefined, undefined ]); 38 | t.end(); 39 | }); 40 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "brace-expansion", 3 | "description": "Brace expansion as known from sh/bash", 4 | "version": "1.1.2", 5 | "repository": { 6 | "type": "git", 7 | "url": "git://github.com/juliangruber/brace-expansion.git" 8 | }, 9 | "homepage": "https://github.com/juliangruber/brace-expansion", 10 | "main": "index.js", 11 | "scripts": { 12 | "test": "tape test/*.js", 13 | "gentest": "bash test/generate.sh" 14 | }, 15 | "dependencies": { 16 | "balanced-match": "^0.3.0", 17 | "concat-map": "0.0.1" 18 | }, 19 | "devDependencies": { 20 | "tape": "4.2.2" 21 | }, 22 | "keywords": [], 23 | "author": { 24 | "name": "Julian Gruber", 25 | "email": "mail@juliangruber.com", 26 | "url": "http://juliangruber.com" 27 | }, 28 | "license": "MIT", 29 | "testling": { 30 | "files": "test/*.js", 31 | "browsers": [ 32 | "ie/8..latest", 33 | "firefox/20..latest", 34 | "firefox/nightly", 35 | "chrome/25..latest", 36 | "chrome/canary", 37 | "opera/12..latest", 38 | "opera/next", 39 | "safari/5.1..latest", 40 | "ipad/6.0..latest", 41 | "iphone/6.0..latest", 42 | "android-browser/4.2..latest" 43 | ] 44 | }, 45 | "gitHead": "b03773a30fa516b1374945b68e9acb6253d595fa", 46 | "bugs": { 47 | "url": "https://github.com/juliangruber/brace-expansion/issues" 48 | }, 49 | "_id": "brace-expansion@1.1.2", 50 | "_shasum": "f21445d0488b658e2771efd870eff51df29f04ef", 51 | "_from": "brace-expansion@>=1.0.0 <2.0.0", 52 | "_npmVersion": "2.14.7", 53 | "_nodeVersion": "4.2.1", 54 | "_npmUser": { 55 | "name": "juliangruber", 56 | "email": "julian@juliangruber.com" 57 | }, 58 | "dist": { 59 | "shasum": "f21445d0488b658e2771efd870eff51df29f04ef", 60 | "tarball": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.2.tgz" 61 | }, 62 | "maintainers": [ 63 | { 64 | "name": "juliangruber", 65 | "email": "julian@juliangruber.com" 66 | }, 67 | { 68 | "name": "isaacs", 69 | "email": "isaacs@npmjs.com" 70 | } 71 | ], 72 | "directories": {}, 73 | "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.2.tgz", 74 | "readme": "ERROR: No README data found!" 75 | } 76 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": { 3 | "name": "Isaac Z. Schlueter", 4 | "email": "i@izs.me", 5 | "url": "http://blog.izs.me" 6 | }, 7 | "name": "minimatch", 8 | "description": "a glob matcher in javascript", 9 | "version": "3.0.0", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/isaacs/minimatch.git" 13 | }, 14 | "main": "minimatch.js", 15 | "scripts": { 16 | "posttest": "standard minimatch.js test/*.js", 17 | "test": "tap test/*.js" 18 | }, 19 | "engines": { 20 | "node": "*" 21 | }, 22 | "dependencies": { 23 | "brace-expansion": "^1.0.0" 24 | }, 25 | "devDependencies": { 26 | "standard": "^3.7.2", 27 | "tap": "^1.2.0" 28 | }, 29 | "license": "ISC", 30 | "files": [ 31 | "minimatch.js" 32 | ], 33 | "gitHead": "270dbea567f0af6918cb18103e98c612aa717a20", 34 | "bugs": { 35 | "url": "https://github.com/isaacs/minimatch/issues" 36 | }, 37 | "homepage": "https://github.com/isaacs/minimatch#readme", 38 | "_id": "minimatch@3.0.0", 39 | "_shasum": "5236157a51e4f004c177fb3c527ff7dd78f0ef83", 40 | "_from": "minimatch@>=3.0.0 <4.0.0", 41 | "_npmVersion": "3.3.2", 42 | "_nodeVersion": "4.0.0", 43 | "_npmUser": { 44 | "name": "isaacs", 45 | "email": "isaacs@npmjs.com" 46 | }, 47 | "dist": { 48 | "shasum": "5236157a51e4f004c177fb3c527ff7dd78f0ef83", 49 | "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz" 50 | }, 51 | "maintainers": [ 52 | { 53 | "name": "isaacs", 54 | "email": "i@izs.me" 55 | } 56 | ], 57 | "directories": {}, 58 | "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", 59 | "readme": "ERROR: No README data found!" 60 | } 61 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/q/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2009–2014 Kristopher Michael Kowal. All rights reserved. 2 | Permission is hereby granted, free of charge, to any person obtaining a copy 3 | of this software and associated documentation files (the "Software"), to 4 | deal in the Software without restriction, including without limitation the 5 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 6 | sell copies of the Software, and to permit persons to whom the Software is 7 | furnished to do so, subject to the following conditions: 8 | 9 | The above copyright notice and this permission notice shall be included in 10 | all copies or substantial portions of the Software. 11 | 12 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 13 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 14 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 15 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 16 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 17 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 18 | IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/q/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "q", 3 | "version": "1.4.1", 4 | "description": "A library for promises (CommonJS/Promises/A,B,D)", 5 | "homepage": "https://github.com/kriskowal/q", 6 | "author": { 7 | "name": "Kris Kowal", 8 | "email": "kris@cixar.com", 9 | "url": "https://github.com/kriskowal" 10 | }, 11 | "keywords": [ 12 | "q", 13 | "promise", 14 | "promises", 15 | "promises-a", 16 | "promises-aplus", 17 | "deferred", 18 | "future", 19 | "async", 20 | "flow control", 21 | "fluent", 22 | "browser", 23 | "node" 24 | ], 25 | "contributors": [ 26 | { 27 | "name": "Kris Kowal", 28 | "email": "kris@cixar.com", 29 | "url": "https://github.com/kriskowal" 30 | }, 31 | { 32 | "name": "Irakli Gozalishvili", 33 | "email": "rfobic@gmail.com", 34 | "url": "http://jeditoolkit.com" 35 | }, 36 | { 37 | "name": "Domenic Denicola", 38 | "email": "domenic@domenicdenicola.com", 39 | "url": "http://domenicdenicola.com" 40 | } 41 | ], 42 | "bugs": { 43 | "url": "http://github.com/kriskowal/q/issues" 44 | }, 45 | "license": { 46 | "type": "MIT", 47 | "url": "http://github.com/kriskowal/q/raw/master/LICENSE" 48 | }, 49 | "main": "q.js", 50 | "files": [ 51 | "LICENSE", 52 | "q.js", 53 | "queue.js" 54 | ], 55 | "repository": { 56 | "type": "git", 57 | "url": "git://github.com/kriskowal/q.git" 58 | }, 59 | "engines": { 60 | "node": ">=0.6.0", 61 | "teleport": ">=0.2.0" 62 | }, 63 | "dependencies": {}, 64 | "devDependencies": { 65 | "cover": "*", 66 | "grunt": "~0.4.1", 67 | "grunt-cli": "~0.1.9", 68 | "grunt-contrib-uglify": "~0.9.1", 69 | "jasmine-node": "1.11.0", 70 | "jshint": "~2.1.9", 71 | "matcha": "~0.2.0", 72 | "opener": "*", 73 | "promises-aplus-tests": "1.x" 74 | }, 75 | "scripts": { 76 | "test": "jasmine-node spec && promises-aplus-tests spec/aplus-adapter", 77 | "test-browser": "opener spec/q-spec.html", 78 | "benchmark": "matcha", 79 | "lint": "jshint q.js", 80 | "cover": "cover run jasmine-node spec && cover report html && opener cover_html/index.html", 81 | "minify": "grunt", 82 | "prepublish": "grunt" 83 | }, 84 | "overlay": { 85 | "teleport": { 86 | "dependencies": { 87 | "system": ">=0.0.4" 88 | } 89 | } 90 | }, 91 | "directories": { 92 | "test": "./spec" 93 | }, 94 | "gitHead": "d373079d3620152e3d60e82f27265a09ee0e81bd", 95 | "_id": "q@1.4.1", 96 | "_shasum": "55705bcd93c5f3673530c2c2cbc0c2b3addc286e", 97 | "_from": "q@>=1.1.2 <2.0.0", 98 | "_npmVersion": "2.8.3", 99 | "_nodeVersion": "1.8.1", 100 | "_npmUser": { 101 | "name": "kriskowal", 102 | "email": "kris.kowal@cixar.com" 103 | }, 104 | "maintainers": [ 105 | { 106 | "name": "kriskowal", 107 | "email": "kris.kowal@cixar.com" 108 | }, 109 | { 110 | "name": "domenic", 111 | "email": "domenic@domenicdenicola.com" 112 | } 113 | ], 114 | "dist": { 115 | "shasum": "55705bcd93c5f3673530c2c2cbc0c2b3addc286e", 116 | "tarball": "http://registry.npmjs.org/q/-/q-1.4.1.tgz" 117 | }, 118 | "_resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", 119 | "readme": "ERROR: No README data found!" 120 | } 121 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/q/queue.js: -------------------------------------------------------------------------------- 1 | 2 | var Q = require("./q"); 3 | 4 | module.exports = Queue; 5 | function Queue() { 6 | var ends = Q.defer(); 7 | var closed = Q.defer(); 8 | return { 9 | put: function (value) { 10 | var next = Q.defer(); 11 | ends.resolve({ 12 | head: value, 13 | tail: next.promise 14 | }); 15 | ends.resolve = next.resolve; 16 | }, 17 | get: function () { 18 | var result = ends.promise.get("head"); 19 | ends.promise = ends.promise.get("tail"); 20 | return result.fail(function (error) { 21 | closed.resolve(error); 22 | throw error; 23 | }); 24 | }, 25 | closed: closed.promise, 26 | close: function (error) { 27 | error = error || new Error("Can't get value from closed queue"); 28 | var end = {head: Q.reject(error)}; 29 | end.tail = end; 30 | ends.resolve(end); 31 | return closed.promise; 32 | } 33 | }; 34 | } 35 | 36 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/.documentup.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ShellJS", 3 | "twitter": [ 4 | "r2r" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "loopfunc": true, 3 | "sub": true, 4 | "undef": true, 5 | "unused": true, 6 | "node": true 7 | } -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/.npmignore: -------------------------------------------------------------------------------- 1 | test/ 2 | tmp/ -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "0.8" 4 | - "0.10" 5 | - "0.11" 6 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012, Artur Adib 2 | All rights reserved. 3 | 4 | You may use this project under the terms of the New BSD license as follows: 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | * Neither the name of Artur Adib nor the 14 | names of the contributors may be used to endorse or promote products 15 | derived from this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY 21 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/bin/shjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | require('../global'); 3 | 4 | if (process.argv.length < 3) { 5 | console.log('ShellJS: missing argument (script name)'); 6 | console.log(); 7 | process.exit(1); 8 | } 9 | 10 | var args, 11 | scriptName = process.argv[2]; 12 | env['NODE_PATH'] = __dirname + '/../..'; 13 | 14 | if (!scriptName.match(/\.js/) && !scriptName.match(/\.coffee/)) { 15 | if (test('-f', scriptName + '.js')) 16 | scriptName += '.js'; 17 | if (test('-f', scriptName + '.coffee')) 18 | scriptName += '.coffee'; 19 | } 20 | 21 | if (!test('-f', scriptName)) { 22 | console.log('ShellJS: script not found ('+scriptName+')'); 23 | console.log(); 24 | process.exit(1); 25 | } 26 | 27 | args = process.argv.slice(3); 28 | 29 | for (var i = 0, l = args.length; i < l; i++) { 30 | if (args[i][0] !== "-"){ 31 | args[i] = '"' + args[i] + '"'; // fixes arguments with multiple words 32 | } 33 | } 34 | 35 | if (scriptName.match(/\.coffee$/)) { 36 | // 37 | // CoffeeScript 38 | // 39 | if (which('coffee')) { 40 | exec('coffee ' + scriptName + ' ' + args.join(' '), { async: true }); 41 | } else { 42 | console.log('ShellJS: CoffeeScript interpreter not found'); 43 | console.log(); 44 | process.exit(1); 45 | } 46 | } else { 47 | // 48 | // JavaScript 49 | // 50 | exec('node ' + scriptName + ' ' + args.join(' '), { async: true }); 51 | } 52 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/global.js: -------------------------------------------------------------------------------- 1 | var shell = require('./shell.js'); 2 | for (var cmd in shell) 3 | global[cmd] = shell[cmd]; 4 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/make.js: -------------------------------------------------------------------------------- 1 | require('./global'); 2 | 3 | global.config.fatal = true; 4 | global.target = {}; 5 | 6 | // This ensures we only execute the script targets after the entire script has 7 | // been evaluated 8 | var args = process.argv.slice(2); 9 | setTimeout(function() { 10 | var t; 11 | 12 | if (args.length === 1 && args[0] === '--help') { 13 | console.log('Available targets:'); 14 | for (t in global.target) 15 | console.log(' ' + t); 16 | return; 17 | } 18 | 19 | // Wrap targets to prevent duplicate execution 20 | for (t in global.target) { 21 | (function(t, oldTarget){ 22 | 23 | // Wrap it 24 | global.target[t] = function(force) { 25 | if (oldTarget.done && !force) 26 | return; 27 | oldTarget.done = true; 28 | return oldTarget.apply(oldTarget, arguments); 29 | }; 30 | 31 | })(t, global.target[t]); 32 | } 33 | 34 | // Execute desired targets 35 | if (args.length > 0) { 36 | args.forEach(function(arg) { 37 | if (arg in global.target) 38 | global.target[arg](); 39 | else { 40 | console.log('no such target: ' + arg); 41 | } 42 | }); 43 | } else if ('all' in global.target) { 44 | global.target.all(); 45 | } 46 | 47 | }, 0); 48 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "shelljs", 3 | "version": "0.3.0", 4 | "author": { 5 | "name": "Artur Adib", 6 | "email": "aadib@mozilla.com" 7 | }, 8 | "description": "Portable Unix shell commands for Node.js", 9 | "keywords": [ 10 | "unix", 11 | "shell", 12 | "makefile", 13 | "make", 14 | "jake", 15 | "synchronous" 16 | ], 17 | "repository": { 18 | "type": "git", 19 | "url": "git://github.com/arturadib/shelljs.git" 20 | }, 21 | "license": "BSD*", 22 | "homepage": "http://github.com/arturadib/shelljs", 23 | "main": "./shell.js", 24 | "scripts": { 25 | "test": "node scripts/run-tests" 26 | }, 27 | "bin": { 28 | "shjs": "./bin/shjs" 29 | }, 30 | "dependencies": {}, 31 | "devDependencies": { 32 | "jshint": "~2.1.11" 33 | }, 34 | "optionalDependencies": {}, 35 | "engines": { 36 | "node": ">=0.8.0" 37 | }, 38 | "bugs": { 39 | "url": "https://github.com/arturadib/shelljs/issues" 40 | }, 41 | "_id": "shelljs@0.3.0", 42 | "dist": { 43 | "shasum": "3596e6307a781544f591f37da618360f31db57b1", 44 | "tarball": "http://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz" 45 | }, 46 | "_from": "shelljs@>=0.3.0 <0.4.0", 47 | "_npmVersion": "1.3.11", 48 | "_npmUser": { 49 | "name": "artur", 50 | "email": "arturadib@gmail.com" 51 | }, 52 | "maintainers": [ 53 | { 54 | "name": "artur", 55 | "email": "arturadib@gmail.com" 56 | } 57 | ], 58 | "directories": {}, 59 | "_shasum": "3596e6307a781544f591f37da618360f31db57b1", 60 | "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", 61 | "readme": "ERROR: No README data found!" 62 | } 63 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/scripts/generate-docs.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | require('../global'); 3 | 4 | echo('Appending docs to README.md'); 5 | 6 | cd(__dirname + '/..'); 7 | 8 | // Extract docs from shell.js 9 | var docs = grep('//@', 'shell.js'); 10 | 11 | docs = docs.replace(/\/\/\@include (.+)/g, function(match, path) { 12 | var file = path.match('.js$') ? path : path+'.js'; 13 | return grep('//@', file); 14 | }); 15 | 16 | // Remove '//@' 17 | docs = docs.replace(/\/\/\@ ?/g, ''); 18 | // Append docs to README 19 | sed('-i', /## Command reference(.|\n)*/, '## Command reference\n\n' + docs, 'README.md'); 20 | 21 | echo('All done.'); 22 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/scripts/run-tests.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | require('../global'); 3 | 4 | var path = require('path'); 5 | 6 | var failed = false; 7 | 8 | // 9 | // Lint 10 | // 11 | JSHINT_BIN = './node_modules/jshint/bin/jshint'; 12 | cd(__dirname + '/..'); 13 | 14 | if (!test('-f', JSHINT_BIN)) { 15 | echo('JSHint not found. Run `npm install` in the root dir first.'); 16 | exit(1); 17 | } 18 | 19 | if (exec(JSHINT_BIN + ' *.js test/*.js').code !== 0) { 20 | failed = true; 21 | echo('*** JSHINT FAILED! (return code != 0)'); 22 | echo(); 23 | } else { 24 | echo('All JSHint tests passed'); 25 | echo(); 26 | } 27 | 28 | // 29 | // Unit tests 30 | // 31 | cd(__dirname + '/../test'); 32 | ls('*.js').forEach(function(file) { 33 | echo('Running test:', file); 34 | if (exec('node ' + file).code !== 123) { // 123 avoids false positives (e.g. premature exit) 35 | failed = true; 36 | echo('*** TEST FAILED! (missing exit code "123")'); 37 | echo(); 38 | } 39 | }); 40 | 41 | if (failed) { 42 | echo(); 43 | echo('*******************************************************'); 44 | echo('WARNING: Some tests did not pass!'); 45 | echo('*******************************************************'); 46 | exit(1); 47 | } else { 48 | echo(); 49 | echo('All tests passed.'); 50 | } 51 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/cat.js: -------------------------------------------------------------------------------- 1 | var common = require('./common'); 2 | var fs = require('fs'); 3 | 4 | //@ 5 | //@ ### cat(file [, file ...]) 6 | //@ ### cat(file_array) 7 | //@ 8 | //@ Examples: 9 | //@ 10 | //@ ```javascript 11 | //@ var str = cat('file*.txt'); 12 | //@ var str = cat('file1', 'file2'); 13 | //@ var str = cat(['file1', 'file2']); // same as above 14 | //@ ``` 15 | //@ 16 | //@ Returns a string containing the given file, or a concatenated string 17 | //@ containing the files if more than one file is given (a new line character is 18 | //@ introduced between each file). Wildcard `*` accepted. 19 | function _cat(options, files) { 20 | var cat = ''; 21 | 22 | if (!files) 23 | common.error('no paths given'); 24 | 25 | if (typeof files === 'string') 26 | files = [].slice.call(arguments, 1); 27 | // if it's array leave it as it is 28 | 29 | files = common.expand(files); 30 | 31 | files.forEach(function(file) { 32 | if (!fs.existsSync(file)) 33 | common.error('no such file or directory: ' + file); 34 | 35 | cat += fs.readFileSync(file, 'utf8') + '\n'; 36 | }); 37 | 38 | if (cat[cat.length-1] === '\n') 39 | cat = cat.substring(0, cat.length-1); 40 | 41 | return common.ShellString(cat); 42 | } 43 | module.exports = _cat; 44 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/cd.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var common = require('./common'); 3 | 4 | //@ 5 | //@ ### cd('dir') 6 | //@ Changes to directory `dir` for the duration of the script 7 | function _cd(options, dir) { 8 | if (!dir) 9 | common.error('directory not specified'); 10 | 11 | if (!fs.existsSync(dir)) 12 | common.error('no such file or directory: ' + dir); 13 | 14 | if (!fs.statSync(dir).isDirectory()) 15 | common.error('not a directory: ' + dir); 16 | 17 | process.chdir(dir); 18 | } 19 | module.exports = _cd; 20 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/echo.js: -------------------------------------------------------------------------------- 1 | var common = require('./common'); 2 | 3 | //@ 4 | //@ ### echo(string [,string ...]) 5 | //@ 6 | //@ Examples: 7 | //@ 8 | //@ ```javascript 9 | //@ echo('hello world'); 10 | //@ var str = echo('hello world'); 11 | //@ ``` 12 | //@ 13 | //@ Prints string to stdout, and returns string with additional utility methods 14 | //@ like `.to()`. 15 | function _echo() { 16 | var messages = [].slice.call(arguments, 0); 17 | console.log.apply(this, messages); 18 | return common.ShellString(messages.join(' ')); 19 | } 20 | module.exports = _echo; 21 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/error.js: -------------------------------------------------------------------------------- 1 | var common = require('./common'); 2 | 3 | //@ 4 | //@ ### error() 5 | //@ Tests if error occurred in the last command. Returns `null` if no error occurred, 6 | //@ otherwise returns string explaining the error 7 | function error() { 8 | return common.state.error; 9 | }; 10 | module.exports = error; 11 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/find.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var common = require('./common'); 3 | var _ls = require('./ls'); 4 | 5 | //@ 6 | //@ ### find(path [,path ...]) 7 | //@ ### find(path_array) 8 | //@ Examples: 9 | //@ 10 | //@ ```javascript 11 | //@ find('src', 'lib'); 12 | //@ find(['src', 'lib']); // same as above 13 | //@ find('.').filter(function(file) { return file.match(/\.js$/); }); 14 | //@ ``` 15 | //@ 16 | //@ Returns array of all files (however deep) in the given paths. 17 | //@ 18 | //@ The main difference from `ls('-R', path)` is that the resulting file names 19 | //@ include the base directories, e.g. `lib/resources/file1` instead of just `file1`. 20 | function _find(options, paths) { 21 | if (!paths) 22 | common.error('no path specified'); 23 | else if (typeof paths === 'object') 24 | paths = paths; // assume array 25 | else if (typeof paths === 'string') 26 | paths = [].slice.call(arguments, 1); 27 | 28 | var list = []; 29 | 30 | function pushFile(file) { 31 | if (common.platform === 'win') 32 | file = file.replace(/\\/g, '/'); 33 | list.push(file); 34 | } 35 | 36 | // why not simply do ls('-R', paths)? because the output wouldn't give the base dirs 37 | // to get the base dir in the output, we need instead ls('-R', 'dir/*') for every directory 38 | 39 | paths.forEach(function(file) { 40 | pushFile(file); 41 | 42 | if (fs.statSync(file).isDirectory()) { 43 | _ls('-RA', file+'/*').forEach(function(subfile) { 44 | pushFile(subfile); 45 | }); 46 | } 47 | }); 48 | 49 | return list; 50 | } 51 | module.exports = _find; 52 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/grep.js: -------------------------------------------------------------------------------- 1 | var common = require('./common'); 2 | var fs = require('fs'); 3 | 4 | //@ 5 | //@ ### grep([options ,] regex_filter, file [, file ...]) 6 | //@ ### grep([options ,] regex_filter, file_array) 7 | //@ Available options: 8 | //@ 9 | //@ + `-v`: Inverse the sense of the regex and print the lines not matching the criteria. 10 | //@ 11 | //@ Examples: 12 | //@ 13 | //@ ```javascript 14 | //@ grep('-v', 'GLOBAL_VARIABLE', '*.js'); 15 | //@ grep('GLOBAL_VARIABLE', '*.js'); 16 | //@ ``` 17 | //@ 18 | //@ Reads input string from given files and returns a string containing all lines of the 19 | //@ file that match the given `regex_filter`. Wildcard `*` accepted. 20 | function _grep(options, regex, files) { 21 | options = common.parseOptions(options, { 22 | 'v': 'inverse' 23 | }); 24 | 25 | if (!files) 26 | common.error('no paths given'); 27 | 28 | if (typeof files === 'string') 29 | files = [].slice.call(arguments, 2); 30 | // if it's array leave it as it is 31 | 32 | files = common.expand(files); 33 | 34 | var grep = ''; 35 | files.forEach(function(file) { 36 | if (!fs.existsSync(file)) { 37 | common.error('no such file or directory: ' + file, true); 38 | return; 39 | } 40 | 41 | var contents = fs.readFileSync(file, 'utf8'), 42 | lines = contents.split(/\r*\n/); 43 | lines.forEach(function(line) { 44 | var matched = line.match(regex); 45 | if ((options.inverse && !matched) || (!options.inverse && matched)) 46 | grep += line + '\n'; 47 | }); 48 | }); 49 | 50 | return common.ShellString(grep); 51 | } 52 | module.exports = _grep; 53 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/ln.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var path = require('path'); 3 | var common = require('./common'); 4 | var os = require('os'); 5 | 6 | //@ 7 | //@ ### ln(options, source, dest) 8 | //@ ### ln(source, dest) 9 | //@ Available options: 10 | //@ 11 | //@ + `s`: symlink 12 | //@ + `f`: force 13 | //@ 14 | //@ Examples: 15 | //@ 16 | //@ ```javascript 17 | //@ ln('file', 'newlink'); 18 | //@ ln('-sf', 'file', 'existing'); 19 | //@ ``` 20 | //@ 21 | //@ Links source to dest. Use -f to force the link, should dest already exist. 22 | function _ln(options, source, dest) { 23 | options = common.parseOptions(options, { 24 | 's': 'symlink', 25 | 'f': 'force' 26 | }); 27 | 28 | if (!source || !dest) { 29 | common.error('Missing and/or '); 30 | } 31 | 32 | source = path.resolve(process.cwd(), String(source)); 33 | dest = path.resolve(process.cwd(), String(dest)); 34 | 35 | if (!fs.existsSync(source)) { 36 | common.error('Source file does not exist', true); 37 | } 38 | 39 | if (fs.existsSync(dest)) { 40 | if (!options.force) { 41 | common.error('Destination file exists', true); 42 | } 43 | 44 | fs.unlinkSync(dest); 45 | } 46 | 47 | if (options.symlink) { 48 | fs.symlinkSync(source, dest, os.platform() === "win32" ? "junction" : null); 49 | } else { 50 | fs.linkSync(source, dest, os.platform() === "win32" ? "junction" : null); 51 | } 52 | } 53 | module.exports = _ln; 54 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/mkdir.js: -------------------------------------------------------------------------------- 1 | var common = require('./common'); 2 | var fs = require('fs'); 3 | var path = require('path'); 4 | 5 | // Recursively creates 'dir' 6 | function mkdirSyncRecursive(dir) { 7 | var baseDir = path.dirname(dir); 8 | 9 | // Base dir exists, no recursion necessary 10 | if (fs.existsSync(baseDir)) { 11 | fs.mkdirSync(dir, parseInt('0777', 8)); 12 | return; 13 | } 14 | 15 | // Base dir does not exist, go recursive 16 | mkdirSyncRecursive(baseDir); 17 | 18 | // Base dir created, can create dir 19 | fs.mkdirSync(dir, parseInt('0777', 8)); 20 | } 21 | 22 | //@ 23 | //@ ### mkdir([options ,] dir [, dir ...]) 24 | //@ ### mkdir([options ,] dir_array) 25 | //@ Available options: 26 | //@ 27 | //@ + `p`: full path (will create intermediate dirs if necessary) 28 | //@ 29 | //@ Examples: 30 | //@ 31 | //@ ```javascript 32 | //@ mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g'); 33 | //@ mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above 34 | //@ ``` 35 | //@ 36 | //@ Creates directories. 37 | function _mkdir(options, dirs) { 38 | options = common.parseOptions(options, { 39 | 'p': 'fullpath' 40 | }); 41 | if (!dirs) 42 | common.error('no paths given'); 43 | 44 | if (typeof dirs === 'string') 45 | dirs = [].slice.call(arguments, 1); 46 | // if it's array leave it as it is 47 | 48 | dirs.forEach(function(dir) { 49 | if (fs.existsSync(dir)) { 50 | if (!options.fullpath) 51 | common.error('path already exists: ' + dir, true); 52 | return; // skip dir 53 | } 54 | 55 | // Base dir does not exist, and no -p option given 56 | var baseDir = path.dirname(dir); 57 | if (!fs.existsSync(baseDir) && !options.fullpath) { 58 | common.error('no such file or directory: ' + baseDir, true); 59 | return; // skip dir 60 | } 61 | 62 | if (options.fullpath) 63 | mkdirSyncRecursive(dir); 64 | else 65 | fs.mkdirSync(dir, parseInt('0777', 8)); 66 | }); 67 | } // mkdir 68 | module.exports = _mkdir; 69 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/mv.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var path = require('path'); 3 | var common = require('./common'); 4 | 5 | //@ 6 | //@ ### mv(source [, source ...], dest') 7 | //@ ### mv(source_array, dest') 8 | //@ Available options: 9 | //@ 10 | //@ + `f`: force 11 | //@ 12 | //@ Examples: 13 | //@ 14 | //@ ```javascript 15 | //@ mv('-f', 'file', 'dir/'); 16 | //@ mv('file1', 'file2', 'dir/'); 17 | //@ mv(['file1', 'file2'], 'dir/'); // same as above 18 | //@ ``` 19 | //@ 20 | //@ Moves files. The wildcard `*` is accepted. 21 | function _mv(options, sources, dest) { 22 | options = common.parseOptions(options, { 23 | 'f': 'force' 24 | }); 25 | 26 | // Get sources, dest 27 | if (arguments.length < 3) { 28 | common.error('missing and/or '); 29 | } else if (arguments.length > 3) { 30 | sources = [].slice.call(arguments, 1, arguments.length - 1); 31 | dest = arguments[arguments.length - 1]; 32 | } else if (typeof sources === 'string') { 33 | sources = [sources]; 34 | } else if ('length' in sources) { 35 | sources = sources; // no-op for array 36 | } else { 37 | common.error('invalid arguments'); 38 | } 39 | 40 | sources = common.expand(sources); 41 | 42 | var exists = fs.existsSync(dest), 43 | stats = exists && fs.statSync(dest); 44 | 45 | // Dest is not existing dir, but multiple sources given 46 | if ((!exists || !stats.isDirectory()) && sources.length > 1) 47 | common.error('dest is not a directory (too many sources)'); 48 | 49 | // Dest is an existing file, but no -f given 50 | if (exists && stats.isFile() && !options.force) 51 | common.error('dest file already exists: ' + dest); 52 | 53 | sources.forEach(function(src) { 54 | if (!fs.existsSync(src)) { 55 | common.error('no such file or directory: '+src, true); 56 | return; // skip file 57 | } 58 | 59 | // If here, src exists 60 | 61 | // When copying to '/path/dir': 62 | // thisDest = '/path/dir/file1' 63 | var thisDest = dest; 64 | if (fs.existsSync(dest) && fs.statSync(dest).isDirectory()) 65 | thisDest = path.normalize(dest + '/' + path.basename(src)); 66 | 67 | if (fs.existsSync(thisDest) && !options.force) { 68 | common.error('dest file already exists: ' + thisDest, true); 69 | return; // skip file 70 | } 71 | 72 | if (path.resolve(src) === path.dirname(path.resolve(thisDest))) { 73 | common.error('cannot move to self: '+src, true); 74 | return; // skip file 75 | } 76 | 77 | fs.renameSync(src, thisDest); 78 | }); // forEach(src) 79 | } // mv 80 | module.exports = _mv; 81 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/popd.js: -------------------------------------------------------------------------------- 1 | // see dirs.js -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/pushd.js: -------------------------------------------------------------------------------- 1 | // see dirs.js -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/pwd.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var common = require('./common'); 3 | 4 | //@ 5 | //@ ### pwd() 6 | //@ Returns the current directory. 7 | function _pwd(options) { 8 | var pwd = path.resolve(process.cwd()); 9 | return common.ShellString(pwd); 10 | } 11 | module.exports = _pwd; 12 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/sed.js: -------------------------------------------------------------------------------- 1 | var common = require('./common'); 2 | var fs = require('fs'); 3 | 4 | //@ 5 | //@ ### sed([options ,] search_regex, replacement, file) 6 | //@ Available options: 7 | //@ 8 | //@ + `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_ 9 | //@ 10 | //@ Examples: 11 | //@ 12 | //@ ```javascript 13 | //@ sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js'); 14 | //@ sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js'); 15 | //@ ``` 16 | //@ 17 | //@ Reads an input string from `file` and performs a JavaScript `replace()` on the input 18 | //@ using the given search regex and replacement string or function. Returns the new string after replacement. 19 | function _sed(options, regex, replacement, file) { 20 | options = common.parseOptions(options, { 21 | 'i': 'inplace' 22 | }); 23 | 24 | if (typeof replacement === 'string' || typeof replacement === 'function') 25 | replacement = replacement; // no-op 26 | else if (typeof replacement === 'number') 27 | replacement = replacement.toString(); // fallback 28 | else 29 | common.error('invalid replacement string'); 30 | 31 | if (!file) 32 | common.error('no file given'); 33 | 34 | if (!fs.existsSync(file)) 35 | common.error('no such file or directory: ' + file); 36 | 37 | var result = fs.readFileSync(file, 'utf8').replace(regex, replacement); 38 | if (options.inplace) 39 | fs.writeFileSync(file, result, 'utf8'); 40 | 41 | return common.ShellString(result); 42 | } 43 | module.exports = _sed; 44 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/tempdir.js: -------------------------------------------------------------------------------- 1 | var common = require('./common'); 2 | var os = require('os'); 3 | var fs = require('fs'); 4 | 5 | // Returns false if 'dir' is not a writeable directory, 'dir' otherwise 6 | function writeableDir(dir) { 7 | if (!dir || !fs.existsSync(dir)) 8 | return false; 9 | 10 | if (!fs.statSync(dir).isDirectory()) 11 | return false; 12 | 13 | var testFile = dir+'/'+common.randomFileName(); 14 | try { 15 | fs.writeFileSync(testFile, ' '); 16 | common.unlinkSync(testFile); 17 | return dir; 18 | } catch (e) { 19 | return false; 20 | } 21 | } 22 | 23 | 24 | //@ 25 | //@ ### tempdir() 26 | //@ 27 | //@ Examples: 28 | //@ 29 | //@ ```javascript 30 | //@ var tmp = tempdir(); // "/tmp" for most *nix platforms 31 | //@ ``` 32 | //@ 33 | //@ Searches and returns string containing a writeable, platform-dependent temporary directory. 34 | //@ Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir). 35 | function _tempDir() { 36 | var state = common.state; 37 | if (state.tempDir) 38 | return state.tempDir; // from cache 39 | 40 | state.tempDir = writeableDir(os.tempDir && os.tempDir()) || // node 0.8+ 41 | writeableDir(process.env['TMPDIR']) || 42 | writeableDir(process.env['TEMP']) || 43 | writeableDir(process.env['TMP']) || 44 | writeableDir(process.env['Wimp$ScrapDir']) || // RiscOS 45 | writeableDir('C:\\TEMP') || // Windows 46 | writeableDir('C:\\TMP') || // Windows 47 | writeableDir('\\TEMP') || // Windows 48 | writeableDir('\\TMP') || // Windows 49 | writeableDir('/tmp') || 50 | writeableDir('/var/tmp') || 51 | writeableDir('/usr/tmp') || 52 | writeableDir('.'); // last resort 53 | 54 | return state.tempDir; 55 | } 56 | module.exports = _tempDir; 57 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/test.js: -------------------------------------------------------------------------------- 1 | var common = require('./common'); 2 | var fs = require('fs'); 3 | 4 | //@ 5 | //@ ### test(expression) 6 | //@ Available expression primaries: 7 | //@ 8 | //@ + `'-b', 'path'`: true if path is a block device 9 | //@ + `'-c', 'path'`: true if path is a character device 10 | //@ + `'-d', 'path'`: true if path is a directory 11 | //@ + `'-e', 'path'`: true if path exists 12 | //@ + `'-f', 'path'`: true if path is a regular file 13 | //@ + `'-L', 'path'`: true if path is a symboilc link 14 | //@ + `'-p', 'path'`: true if path is a pipe (FIFO) 15 | //@ + `'-S', 'path'`: true if path is a socket 16 | //@ 17 | //@ Examples: 18 | //@ 19 | //@ ```javascript 20 | //@ if (test('-d', path)) { /* do something with dir */ }; 21 | //@ if (!test('-f', path)) continue; // skip if it's a regular file 22 | //@ ``` 23 | //@ 24 | //@ Evaluates expression using the available primaries and returns corresponding value. 25 | function _test(options, path) { 26 | if (!path) 27 | common.error('no path given'); 28 | 29 | // hack - only works with unary primaries 30 | options = common.parseOptions(options, { 31 | 'b': 'block', 32 | 'c': 'character', 33 | 'd': 'directory', 34 | 'e': 'exists', 35 | 'f': 'file', 36 | 'L': 'link', 37 | 'p': 'pipe', 38 | 'S': 'socket' 39 | }); 40 | 41 | var canInterpret = false; 42 | for (var key in options) 43 | if (options[key] === true) { 44 | canInterpret = true; 45 | break; 46 | } 47 | 48 | if (!canInterpret) 49 | common.error('could not interpret expression'); 50 | 51 | if (options.link) { 52 | try { 53 | return fs.lstatSync(path).isSymbolicLink(); 54 | } catch(e) { 55 | return false; 56 | } 57 | } 58 | 59 | if (!fs.existsSync(path)) 60 | return false; 61 | 62 | if (options.exists) 63 | return true; 64 | 65 | var stats = fs.statSync(path); 66 | 67 | if (options.block) 68 | return stats.isBlockDevice(); 69 | 70 | if (options.character) 71 | return stats.isCharacterDevice(); 72 | 73 | if (options.directory) 74 | return stats.isDirectory(); 75 | 76 | if (options.file) 77 | return stats.isFile(); 78 | 79 | if (options.pipe) 80 | return stats.isFIFO(); 81 | 82 | if (options.socket) 83 | return stats.isSocket(); 84 | } // test 85 | module.exports = _test; 86 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/to.js: -------------------------------------------------------------------------------- 1 | var common = require('./common'); 2 | var fs = require('fs'); 3 | var path = require('path'); 4 | 5 | //@ 6 | //@ ### 'string'.to(file) 7 | //@ 8 | //@ Examples: 9 | //@ 10 | //@ ```javascript 11 | //@ cat('input.txt').to('output.txt'); 12 | //@ ``` 13 | //@ 14 | //@ Analogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as 15 | //@ those returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_ 16 | function _to(options, file) { 17 | if (!file) 18 | common.error('wrong arguments'); 19 | 20 | if (!fs.existsSync( path.dirname(file) )) 21 | common.error('no such file or directory: ' + path.dirname(file)); 22 | 23 | try { 24 | fs.writeFileSync(file, this.toString(), 'utf8'); 25 | } catch(e) { 26 | common.error('could not write to file (code '+e.code+'): '+file, true); 27 | } 28 | } 29 | module.exports = _to; 30 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/toEnd.js: -------------------------------------------------------------------------------- 1 | var common = require('./common'); 2 | var fs = require('fs'); 3 | var path = require('path'); 4 | 5 | //@ 6 | //@ ### 'string'.toEnd(file) 7 | //@ 8 | //@ Examples: 9 | //@ 10 | //@ ```javascript 11 | //@ cat('input.txt').toEnd('output.txt'); 12 | //@ ``` 13 | //@ 14 | //@ Analogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as 15 | //@ those returned by `cat`, `grep`, etc). 16 | function _toEnd(options, file) { 17 | if (!file) 18 | common.error('wrong arguments'); 19 | 20 | if (!fs.existsSync( path.dirname(file) )) 21 | common.error('no such file or directory: ' + path.dirname(file)); 22 | 23 | try { 24 | fs.appendFileSync(file, this.toString(), 'utf8'); 25 | } catch(e) { 26 | common.error('could not append to file (code '+e.code+'): '+file, true); 27 | } 28 | } 29 | module.exports = _toEnd; 30 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/which.js: -------------------------------------------------------------------------------- 1 | var common = require('./common'); 2 | var fs = require('fs'); 3 | var path = require('path'); 4 | 5 | // Cross-platform method for splitting environment PATH variables 6 | function splitPath(p) { 7 | for (i=1;i<2;i++) {} 8 | 9 | if (!p) 10 | return []; 11 | 12 | if (common.platform === 'win') 13 | return p.split(';'); 14 | else 15 | return p.split(':'); 16 | } 17 | 18 | function checkPath(path) { 19 | return fs.existsSync(path) && fs.statSync(path).isDirectory() == false; 20 | } 21 | 22 | //@ 23 | //@ ### which(command) 24 | //@ 25 | //@ Examples: 26 | //@ 27 | //@ ```javascript 28 | //@ var nodeExec = which('node'); 29 | //@ ``` 30 | //@ 31 | //@ Searches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions. 32 | //@ Returns string containing the absolute path to the command. 33 | function _which(options, cmd) { 34 | if (!cmd) 35 | common.error('must specify command'); 36 | 37 | var pathEnv = process.env.path || process.env.Path || process.env.PATH, 38 | pathArray = splitPath(pathEnv), 39 | where = null; 40 | 41 | // No relative/absolute paths provided? 42 | if (cmd.search(/\//) === -1) { 43 | // Search for command in PATH 44 | pathArray.forEach(function(dir) { 45 | if (where) 46 | return; // already found it 47 | 48 | var attempt = path.resolve(dir + '/' + cmd); 49 | if (checkPath(attempt)) { 50 | where = attempt; 51 | return; 52 | } 53 | 54 | if (common.platform === 'win') { 55 | var baseAttempt = attempt; 56 | attempt = baseAttempt + '.exe'; 57 | if (checkPath(attempt)) { 58 | where = attempt; 59 | return; 60 | } 61 | attempt = baseAttempt + '.cmd'; 62 | if (checkPath(attempt)) { 63 | where = attempt; 64 | return; 65 | } 66 | attempt = baseAttempt + '.bat'; 67 | if (checkPath(attempt)) { 68 | where = attempt; 69 | return; 70 | } 71 | } // if 'win' 72 | }); 73 | } 74 | 75 | // Command not found anywhere? 76 | if (!checkPath(cmd) && !where) 77 | return null; 78 | 79 | where = where || path.resolve(cmd); 80 | 81 | return common.ShellString(where); 82 | } 83 | module.exports = _which; 84 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/ClientApiBases.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. 3 | var Q = require('q'); 4 | var restm = require('./RestClient'); 5 | var httpm = require('./HttpClient'); 6 | var vsom = require('./VsoClient'); 7 | var ClientApiBase = (function () { 8 | function ClientApiBase(baseUrl, handlers, userAgent) { 9 | this.baseUrl = baseUrl; 10 | this.httpClient = new httpm.HttpClient(userAgent, handlers); 11 | this.restClient = new restm.RestClient(this.httpClient); 12 | this.vsoClient = new vsom.VsoClient(baseUrl, this.restClient); 13 | this.userAgent = userAgent; 14 | } 15 | ClientApiBase.prototype.setUserAgent = function (userAgent) { 16 | this.userAgent = userAgent; 17 | this.httpClient.userAgent = userAgent; 18 | }; 19 | ClientApiBase.prototype.connect = function (onResult) { 20 | this.restClient.getJson(this.vsoClient.resolveUrl('/_apis/connectionData'), "", null, null, onResult); 21 | }; 22 | return ClientApiBase; 23 | })(); 24 | exports.ClientApiBase = ClientApiBase; 25 | var QClientApiBase = (function () { 26 | function QClientApiBase(baseUrl, handlers, api) { 27 | this.api = new api(baseUrl, handlers); 28 | } 29 | QClientApiBase.prototype.connect = function () { 30 | var defer = Q.defer(); 31 | this.api.connect(function (err, statusCode, obj) { 32 | if (err) { 33 | err.statusCode = statusCode; 34 | defer.reject(err); 35 | } 36 | else { 37 | defer.resolve(obj); 38 | } 39 | }); 40 | return defer.promise; 41 | }; 42 | return QClientApiBase; 43 | })(); 44 | exports.QClientApiBase = QClientApiBase; 45 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/README.md: -------------------------------------------------------------------------------- 1 | # vso-node-api 2 | Node client for Visual Studio Online/TFS REST APIs 3 | 4 | ## Goals and Scope 5 | 6 | * **Complete coverage**: All VSO services and resources 7 | * **Always up to date**: Generated and released every sprint by the Visual Studio Online team 8 | * **Share what we use**: Used by our apps including the [VSO build agent](https://github.com/Microsoft/vso-agent) 9 | * **Patterns**: Use traditional node call back patterns or Q Promises. Async/Await when available in ts. 10 | * **Definition Files**: generate typescript d.ts files for all services 11 | * **Authentication Flows**: Alternate Credentials, Personal Access Tokens and OAuth flows 12 | * **Versioning and Negotiation**: Same versioning mechanism and negoation as the other VSO clients. Shares code/logic with VSO web UI code 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/handlers/apiversion.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. 3 | var ApiVersionHandler = (function () { 4 | function ApiVersionHandler(apiVersion) { 5 | this.apiVersion = apiVersion; 6 | } 7 | ApiVersionHandler.prototype.prepareRequest = function (options) { 8 | if (options.headers && options.headers['Accept']) { 9 | options.headers["Accept"] = options.headers['Accept'] + '; api-version=' + this.apiVersion; 10 | } 11 | }; 12 | return ApiVersionHandler; 13 | })(); 14 | exports.ApiVersionHandler = ApiVersionHandler; 15 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/handlers/basiccreds.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. 3 | var BasicCredentialHandler = (function () { 4 | function BasicCredentialHandler(username, password) { 5 | this.username = username; 6 | this.password = password; 7 | } 8 | BasicCredentialHandler.prototype.prepareRequest = function (options) { 9 | options.headers['Authorization'] = 'Basic ' + new Buffer(this.username + ':' + this.password).toString('base64'); 10 | options.headers['X-TFS-FedAuthRedirect'] = 'Suppress'; 11 | }; 12 | return BasicCredentialHandler; 13 | })(); 14 | exports.BasicCredentialHandler = BasicCredentialHandler; 15 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/handlers/bearertoken.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. 3 | var BearerCredentialHandler = (function () { 4 | function BearerCredentialHandler(token) { 5 | this.token = token; 6 | } 7 | BearerCredentialHandler.prototype.prepareRequest = function (options) { 8 | options.headers['Authorization'] = 'Bearer ' + this.token; 9 | options.headers['X-TFS-FedAuthRedirect'] = 'Suppress'; 10 | }; 11 | return BearerCredentialHandler; 12 | })(); 13 | exports.BearerCredentialHandler = BearerCredentialHandler; 14 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/FileContainerInterfaces.js: -------------------------------------------------------------------------------- 1 | /* 2 | * --------------------------------------------------------- 3 | * Copyright(C) Microsoft Corporation. All rights reserved. 4 | * --------------------------------------------------------- 5 | * 6 | * --------------------------------------------------------- 7 | * Generated file, DO NOT EDIT 8 | * --------------------------------------------------------- 9 | */ 10 | "use strict"; 11 | (function (ContainerItemStatus) { 12 | ContainerItemStatus[ContainerItemStatus["Created"] = 1] = "Created"; 13 | ContainerItemStatus[ContainerItemStatus["PendingUpload"] = 2] = "PendingUpload"; 14 | })(exports.ContainerItemStatus || (exports.ContainerItemStatus = {})); 15 | var ContainerItemStatus = exports.ContainerItemStatus; 16 | (function (ContainerItemType) { 17 | ContainerItemType[ContainerItemType["Any"] = 0] = "Any"; 18 | ContainerItemType[ContainerItemType["Folder"] = 1] = "Folder"; 19 | ContainerItemType[ContainerItemType["File"] = 2] = "File"; 20 | })(exports.ContainerItemType || (exports.ContainerItemType = {})); 21 | var ContainerItemType = exports.ContainerItemType; 22 | (function (ContainerOptions) { 23 | ContainerOptions[ContainerOptions["None"] = 0] = "None"; 24 | })(exports.ContainerOptions || (exports.ContainerOptions = {})); 25 | var ContainerOptions = exports.ContainerOptions; 26 | exports.TypeInfo = { 27 | ContainerItemStatus: { 28 | enumValues: { 29 | "created": 1, 30 | "pendingUpload": 2 31 | } 32 | }, 33 | ContainerItemType: { 34 | enumValues: { 35 | "any": 0, 36 | "folder": 1, 37 | "file": 2 38 | } 39 | }, 40 | ContainerOptions: { 41 | enumValues: { 42 | "none": 0 43 | } 44 | }, 45 | FileContainer: { 46 | fields: null 47 | }, 48 | FileContainerItem: { 49 | fields: null 50 | } 51 | }; 52 | exports.TypeInfo.FileContainer.fields = { 53 | dateCreated: { 54 | isDate: true 55 | }, 56 | options: { 57 | enumType: exports.TypeInfo.ContainerOptions 58 | } 59 | }; 60 | exports.TypeInfo.FileContainerItem.fields = { 61 | dateCreated: { 62 | isDate: true 63 | }, 64 | dateLastModified: { 65 | isDate: true 66 | }, 67 | itemType: { 68 | enumType: exports.TypeInfo.ContainerItemType 69 | }, 70 | status: { 71 | enumType: exports.TypeInfo.ContainerItemStatus 72 | } 73 | }; 74 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/common/OperationsInterfaces.js: -------------------------------------------------------------------------------- 1 | /* 2 | * --------------------------------------------------------- 3 | * Copyright(C) Microsoft Corporation. All rights reserved. 4 | * --------------------------------------------------------- 5 | * 6 | * --------------------------------------------------------- 7 | * Generated file, DO NOT EDIT 8 | * --------------------------------------------------------- 9 | */ 10 | "use strict"; 11 | (function (OperationStatus) { 12 | OperationStatus[OperationStatus["NotSet"] = 0] = "NotSet"; 13 | OperationStatus[OperationStatus["Queued"] = 1] = "Queued"; 14 | OperationStatus[OperationStatus["InProgress"] = 2] = "InProgress"; 15 | OperationStatus[OperationStatus["Cancelled"] = 3] = "Cancelled"; 16 | OperationStatus[OperationStatus["Succeeded"] = 4] = "Succeeded"; 17 | OperationStatus[OperationStatus["Failed"] = 5] = "Failed"; 18 | })(exports.OperationStatus || (exports.OperationStatus = {})); 19 | var OperationStatus = exports.OperationStatus; 20 | exports.TypeInfo = { 21 | OperationReference: { 22 | fields: null 23 | }, 24 | OperationStatus: { 25 | enumValues: { 26 | "notSet": 0, 27 | "queued": 1, 28 | "inProgress": 2, 29 | "cancelled": 3, 30 | "succeeded": 4, 31 | "failed": 5 32 | } 33 | } 34 | }; 35 | exports.TypeInfo.OperationReference.fields = { 36 | status: { 37 | enumType: exports.TypeInfo.OperationStatus 38 | } 39 | }; 40 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/common/SystemDataInterfaces.js: -------------------------------------------------------------------------------- 1 | //---------------------------------------------------------- 2 | // Copyright (C) Microsoft Corporation. All rights reserved. 3 | //---------------------------------------------------------- 4 | (function (SqlDbType) { 5 | SqlDbType[SqlDbType["BigInt"] = 0] = "BigInt"; 6 | SqlDbType[SqlDbType["Binary"] = 1] = "Binary"; 7 | SqlDbType[SqlDbType["Bit"] = 2] = "Bit"; 8 | SqlDbType[SqlDbType["Char"] = 3] = "Char"; 9 | SqlDbType[SqlDbType["DateTime"] = 4] = "DateTime"; 10 | SqlDbType[SqlDbType["Decimal"] = 5] = "Decimal"; 11 | SqlDbType[SqlDbType["Float"] = 6] = "Float"; 12 | SqlDbType[SqlDbType["Image"] = 7] = "Image"; 13 | SqlDbType[SqlDbType["Int"] = 8] = "Int"; 14 | SqlDbType[SqlDbType["Money"] = 9] = "Money"; 15 | SqlDbType[SqlDbType["NChar"] = 10] = "NChar"; 16 | SqlDbType[SqlDbType["NText"] = 11] = "NText"; 17 | SqlDbType[SqlDbType["NVarChar"] = 12] = "NVarChar"; 18 | SqlDbType[SqlDbType["Real"] = 13] = "Real"; 19 | SqlDbType[SqlDbType["UniqueIdentifier"] = 14] = "UniqueIdentifier"; 20 | SqlDbType[SqlDbType["SmallDateTime"] = 15] = "SmallDateTime"; 21 | SqlDbType[SqlDbType["SmallInt"] = 16] = "SmallInt"; 22 | SqlDbType[SqlDbType["SmallMoney"] = 17] = "SmallMoney"; 23 | SqlDbType[SqlDbType["Text"] = 18] = "Text"; 24 | SqlDbType[SqlDbType["Timestamp"] = 19] = "Timestamp"; 25 | SqlDbType[SqlDbType["TinyInt"] = 20] = "TinyInt"; 26 | SqlDbType[SqlDbType["VarBinary"] = 21] = "VarBinary"; 27 | SqlDbType[SqlDbType["VarChar"] = 22] = "VarChar"; 28 | SqlDbType[SqlDbType["Variant"] = 23] = "Variant"; 29 | SqlDbType[SqlDbType["Xml"] = 25] = "Xml"; 30 | SqlDbType[SqlDbType["Udt"] = 29] = "Udt"; 31 | SqlDbType[SqlDbType["Structured"] = 30] = "Structured"; 32 | SqlDbType[SqlDbType["Date"] = 31] = "Date"; 33 | SqlDbType[SqlDbType["Time"] = 32] = "Time"; 34 | SqlDbType[SqlDbType["DateTime2"] = 33] = "DateTime2"; 35 | SqlDbType[SqlDbType["DateTimeOffset"] = 34] = "DateTimeOffset"; 36 | })(exports.SqlDbType || (exports.SqlDbType = {})); 37 | var SqlDbType = exports.SqlDbType; 38 | exports.TypeInfo = { 39 | SqlDbType: { 40 | enumValues: { 41 | "BigInt": 0, 42 | "Binary": 1, 43 | "Bit": 2, 44 | "Char": 3, 45 | "DateTime": 4, 46 | "Decimal": 5, 47 | "Float": 6, 48 | "Image": 7, 49 | "Int": 8, 50 | "Money": 9, 51 | "NChar": 10, 52 | "NText": 11, 53 | "NVarChar": 12, 54 | "Real": 13, 55 | "UniqueIdentifier": 14, 56 | "SmallDateTime": 15, 57 | "SmallInt": 16, 58 | "SmallMoney": 17, 59 | "Text": 18, 60 | "Timestamp": 19, 61 | "TinyInt": 20, 62 | "VarBinary": 21, 63 | "VarChar": 22, 64 | "Variant": 23, 65 | "Xml": 25, 66 | "Udt": 29, 67 | "Structured": 30, 68 | "Date": 31, 69 | "Time": 32, 70 | "DateTime2": 33, 71 | "DateTimeOffset": 34 72 | } 73 | } 74 | }; 75 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/common/TfsInterfaces.js: -------------------------------------------------------------------------------- 1 | /* 2 | * --------------------------------------------------------- 3 | * Copyright(C) Microsoft Corporation. All rights reserved. 4 | * --------------------------------------------------------- 5 | * 6 | * --------------------------------------------------------- 7 | * Generated file, DO NOT EDIT 8 | * --------------------------------------------------------- 9 | */ 10 | "use strict"; 11 | exports.TypeInfo = { 12 | TeamProjectCollectionReference: { 13 | fields: null 14 | }, 15 | TeamProjectReference: { 16 | fields: null 17 | }, 18 | WebApiConnectedServiceRef: { 19 | fields: null 20 | } 21 | }; 22 | exports.TypeInfo.TeamProjectCollectionReference.fields = {}; 23 | exports.TypeInfo.TeamProjectReference.fields = {}; 24 | exports.TypeInfo.WebApiConnectedServiceRef.fields = {}; 25 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/common/VSSInterfaces.js: -------------------------------------------------------------------------------- 1 | /* 2 | * --------------------------------------------------------- 3 | * Copyright(C) Microsoft Corporation. All rights reserved. 4 | * --------------------------------------------------------- 5 | * 6 | * --------------------------------------------------------- 7 | * Generated file, DO NOT EDIT 8 | * --------------------------------------------------------- 9 | */ 10 | "use strict"; 11 | (function (Operation) { 12 | Operation[Operation["Add"] = 0] = "Add"; 13 | Operation[Operation["Remove"] = 1] = "Remove"; 14 | Operation[Operation["Replace"] = 2] = "Replace"; 15 | Operation[Operation["Move"] = 3] = "Move"; 16 | Operation[Operation["Copy"] = 4] = "Copy"; 17 | Operation[Operation["Test"] = 5] = "Test"; 18 | })(exports.Operation || (exports.Operation = {})); 19 | var Operation = exports.Operation; 20 | exports.TypeInfo = { 21 | IdentityRef: { 22 | fields: null 23 | }, 24 | JsonPatchDocument: { 25 | fields: null 26 | }, 27 | JsonPatchOperation: { 28 | fields: null 29 | }, 30 | Operation: { 31 | enumValues: { 32 | "add": 0, 33 | "remove": 1, 34 | "replace": 2, 35 | "move": 3, 36 | "copy": 4, 37 | "test": 5 38 | } 39 | }, 40 | OperationReference: { 41 | fields: null 42 | }, 43 | ResourceRef: { 44 | fields: null 45 | }, 46 | VssJsonCollectionWrapper: { 47 | fields: null 48 | }, 49 | VssJsonCollectionWrapperV: { 50 | fields: null 51 | }, 52 | VssJsonCollectionWrapperBase: { 53 | fields: null 54 | } 55 | }; 56 | exports.TypeInfo.IdentityRef.fields = {}; 57 | exports.TypeInfo.JsonPatchDocument.fields = {}; 58 | exports.TypeInfo.JsonPatchOperation.fields = { 59 | op: { 60 | enumType: exports.TypeInfo.Operation 61 | } 62 | }; 63 | exports.TypeInfo.OperationReference.fields = {}; 64 | exports.TypeInfo.ResourceRef.fields = {}; 65 | exports.TypeInfo.VssJsonCollectionWrapper.fields = {}; 66 | exports.TypeInfo.VssJsonCollectionWrapperV.fields = {}; 67 | exports.TypeInfo.VssJsonCollectionWrapperBase.fields = {}; 68 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/common/VsoBaseInterfaces.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. 3 | ; 4 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vso-node-api", 3 | "description": "Node client for Visual Studio Online/TFS REST APIs", 4 | "version": "0.6.1", 5 | "main": "./WebApi.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/Microsoft/vso-node-api.git" 9 | }, 10 | "author": { 11 | "name": "Microsoft Corporation" 12 | }, 13 | "contributors": [ 14 | { 15 | "name": "Teddy Ward", 16 | "email": "t-edward@microsoft.com" 17 | }, 18 | { 19 | "name": "Bryan MacFarlane", 20 | "email": "bryanmac@microsoft.com" 21 | }, 22 | { 23 | "name": "Scott Dallamura", 24 | "email": "scdallam@microsoft.com" 25 | } 26 | ], 27 | "license": "MIT", 28 | "dependencies": { 29 | "q": "^1.0.1" 30 | }, 31 | "devDependencies": { 32 | "del": "^1.1.1", 33 | "gulp": "^3.8.11", 34 | "gulp-gzip": "^1.0.0", 35 | "gulp-mocha": "^2.0.0", 36 | "gulp-tsc": "^0.10.1", 37 | "merge2": "^0.3.1", 38 | "mocha": "^2.1.0", 39 | "dts-generator": "1.5.0" 40 | }, 41 | "bugs": { 42 | "url": "https://github.com/Microsoft/vso-node-api/issues" 43 | }, 44 | "homepage": "https://github.com/Microsoft/vso-node-api", 45 | "_id": "vso-node-api@0.6.1", 46 | "scripts": {}, 47 | "_shasum": "9d3dd06a8dae2ff3682af8f28a845739a0bd6481", 48 | "_from": "vso-node-api@>=0.6.1 <0.7.0", 49 | "_npmVersion": "2.5.1", 50 | "_nodeVersion": "0.12.0", 51 | "_npmUser": { 52 | "name": "vsonline", 53 | "email": "bigbldt@microsoft.com" 54 | }, 55 | "maintainers": [ 56 | { 57 | "name": "vsonline", 58 | "email": "bigbldt@microsoft.com" 59 | } 60 | ], 61 | "dist": { 62 | "shasum": "9d3dd06a8dae2ff3682af8f28a845739a0bd6481", 63 | "tarball": "http://registry.npmjs.org/vso-node-api/-/vso-node-api-0.6.1.tgz" 64 | }, 65 | "directories": {}, 66 | "_resolved": "https://registry.npmjs.org/vso-node-api/-/vso-node-api-0.6.1.tgz", 67 | "readme": "ERROR: No README data found!" 68 | } 69 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vso-task-lib", 3 | "version": "0.5.4", 4 | "description": "VSO Agent Task Library", 5 | "main": "./vsotask.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/Microsoft/vso-task-lib.git" 12 | }, 13 | "keywords": [ 14 | "vso", 15 | "xplat", 16 | "agent", 17 | "build" 18 | ], 19 | "author": { 20 | "name": "Microsoft" 21 | }, 22 | "license": "MIT", 23 | "bugs": { 24 | "url": "https://github.com/Microsoft/vso-agent/issues" 25 | }, 26 | "homepage": "https://github.com/Microsoft/vso-agent", 27 | "dependencies": { 28 | "glob": "^6.0.1", 29 | "minimatch": "^3.0.0", 30 | "q": "^1.1.2", 31 | "shelljs": "^0.3.0", 32 | "vso-node-api": "^0.6.1" 33 | }, 34 | "devDependencies": { 35 | "del": "^1.2.0", 36 | "dts-generator": "1.5.0", 37 | "gulp": "^3.9.0", 38 | "gulp-mocha": "2.0.0", 39 | "gulp-typescript": "^2.9.0", 40 | "merge2": "^0.3.6", 41 | "mocha": "^2.2.5", 42 | "semver": "^5.1.0", 43 | "typescript": "next" 44 | }, 45 | "_id": "vso-task-lib@0.5.4", 46 | "_shasum": "77d5fd00afae3469631033da9aa58dc3139f6e7a", 47 | "_from": "vso-task-lib@*", 48 | "_npmVersion": "3.5.0", 49 | "_nodeVersion": "4.2.2", 50 | "_npmUser": { 51 | "name": "vsonline", 52 | "email": "bigbldt@microsoft.com" 53 | }, 54 | "maintainers": [ 55 | { 56 | "name": "vsonline", 57 | "email": "bigbldt@microsoft.com" 58 | } 59 | ], 60 | "dist": { 61 | "shasum": "77d5fd00afae3469631033da9aa58dc3139f6e7a", 62 | "tarball": "http://registry.npmjs.org/vso-task-lib/-/vso-task-lib-0.5.4.tgz" 63 | }, 64 | "directories": {}, 65 | "_resolved": "https://registry.npmjs.org/vso-task-lib/-/vso-task-lib-0.5.4.tgz" 66 | } 67 | -------------------------------------------------------------------------------- /Utilites/Shell++/node_modules/vso-task-lib/taskcommand.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | // 3 | // Command Format: 4 | // ##vso[artifact.command key=value;key=value]user message 5 | // 6 | // Examples: 7 | // ##vso[task.progress value=58] 8 | // ##vso[task.issue type=warning;]This is the user warning message 9 | // 10 | var CMD_PREFIX = '##vso['; 11 | var TaskCommand = (function () { 12 | function TaskCommand(command, properties, message) { 13 | if (!command) { 14 | command = 'missing.command'; 15 | } 16 | this.command = command; 17 | this.properties = properties; 18 | this.message = message; 19 | } 20 | TaskCommand.prototype.toString = function () { 21 | var cmdStr = CMD_PREFIX + this.command; 22 | if (this.properties && Object.keys(this.properties).length > 0) { 23 | cmdStr += ' '; 24 | for (var key in this.properties) { 25 | if (this.properties.hasOwnProperty(key)) { 26 | var val = this.properties[key]; 27 | if (val) { 28 | cmdStr += key + '=' + val + ';'; 29 | } 30 | } 31 | } 32 | } 33 | cmdStr += ']' + this.message; 34 | return cmdStr; 35 | }; 36 | return TaskCommand; 37 | })(); 38 | exports.TaskCommand = TaskCommand; 39 | function commandFromString(commandLine) { 40 | var preLen = CMD_PREFIX.length; 41 | var lbPos = commandLine.indexOf('['); 42 | var rbPos = commandLine.indexOf(']'); 43 | if (lbPos == -1 || rbPos == -1 || rbPos - lbPos < 3) { 44 | throw new Error('Invalid command brackets'); 45 | } 46 | var cmdInfo = commandLine.substring(lbPos + 1, rbPos); 47 | var spaceIdx = cmdInfo.indexOf(' '); 48 | var command = cmdInfo; 49 | var properties = {}; 50 | if (spaceIdx > 0) { 51 | command = cmdInfo.trim().substring(0, spaceIdx); 52 | var propSection = cmdInfo.trim().substring(spaceIdx + 1); 53 | var propLines = propSection.split(';'); 54 | propLines.forEach(function (propLine) { 55 | propLine = propLine.trim(); 56 | if (propLine.length > 0) { 57 | var propParts = propLine.split('='); 58 | if (propParts.length != 2) { 59 | throw new Error('Invalid property: ' + propLine); 60 | } 61 | properties[propParts[0]] = propParts[1]; 62 | } 63 | }); 64 | } 65 | var msg = commandLine.substring(rbPos + 1); 66 | var cmd = new TaskCommand(command, properties, msg); 67 | return cmd; 68 | } 69 | exports.commandFromString = commandFromString; 70 | -------------------------------------------------------------------------------- /Utilites/Shell++/task.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var tl = require('vso-task-lib'); 3 | var fs = require('fs'); 4 | 5 | var echo = new tl.ToolRunner(tl.which('echo', true)); 6 | var bash = new tl.ToolRunner(tl.which('bash', true)); 7 | 8 | var cwd = tl.getPathInput('cwd', false); 9 | var script = tl.getInput('script', false); 10 | var failOnStdErr = tl.getInput('failOnStandardError') == 'true'; 11 | var scriptPath = tl.getPathInput('scriptPath', false); 12 | var type = tl.getInput('type'); 13 | 14 | if(!type){ 15 | // nothing to do 16 | tl.warning("type is not mentioned") 17 | }else if(type == 'InlineScript'){ 18 | if (cwd == null || cwd == "") { 19 | cwd = "/tmp"; 20 | } 21 | 22 | tl.debug('using cwd: ' + cwd); 23 | tl.cd(cwd); 24 | 25 | scriptPath = cwd + "/user_script.sh"; 26 | fs.writeFileSync(scriptPath,script,'utf8'); 27 | 28 | bash.arg(scriptPath); 29 | bash.exec({ failOnStdErr: failOnStdErr}) 30 | .then(function(code) { 31 | // TODO: switch to setResult in the next couple of sprints 32 | tl.exit(code); 33 | }) 34 | .fail(function(err) { 35 | console.error(err.message); 36 | tl.debug('taskRunner fail'); 37 | tl.exit(1); 38 | }); 39 | }else if(type == 'FilePath'){ 40 | if(!scriptPath){ 41 | tl.warning("No script to execute"); 42 | tl.exit(1); 43 | } 44 | if (!cwd) { 45 | cwd = path.dirname(scriptPath); 46 | } 47 | tl.debug('using cwd: ' + cwd); 48 | tl.cd(cwd); 49 | bash.arg(scriptPath); 50 | bash.arg(tl.getInput('args', false)); 51 | bash.exec({ failOnStdErr: failOnStdErr}) 52 | .then(function(code) { 53 | // TODO: switch to setResult in the next couple of sprints 54 | tl.exit(code); 55 | }) 56 | .fail(function(err) { 57 | console.error(err.message); 58 | tl.debug('taskRunner fail'); 59 | tl.exit(1); 60 | }); 61 | }else{ 62 | tl.debug("something is wrong buddy"); 63 | tl.exit(1); 64 | } 65 | -------------------------------------------------------------------------------- /Utilites/Shell++/task.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "10f1f9a1-74b0-47ab-87bf-e3c9c68e8b0d", 3 | "name": "Shellpp", 4 | "friendlyName": "Shell++", 5 | "description": "Execute bash script", 6 | "author": "ms-devlabs", 7 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)", 8 | "category": "Utility", 9 | "visibility": [ 10 | "Build", 11 | "Release" 12 | ], 13 | "demands": [ 14 | "sh" 15 | ], 16 | "version": { 17 | "Major": "0", 18 | "Minor": "3", 19 | "Patch": "1" 20 | }, 21 | "minimumAgentVersion": "1.83.0", 22 | "instanceNameFormat": "Shell Script", 23 | "groups": [ 24 | { 25 | "name":"advanced", 26 | "displayName":"Advanced", 27 | "isExpanded":false 28 | } 29 | ], 30 | "inputs": [ 31 | { 32 | "name": "type", 33 | "type": "pickList", 34 | "label": "Type", 35 | "defaultValue": "", 36 | "required": true, 37 | "helpMarkDown": "File Path or Inline Script", 38 | "options": { 39 | "InlineScript": "Inline Script", 40 | "FilePath": "File Path" 41 | } 42 | }, 43 | { 44 | "name": "scriptPath", 45 | "type": "filePath", 46 | "label": "Script Path", 47 | "defaultValue":"", 48 | "required":true, 49 | "helpMarkDown": "Relative path from repo root of the shell script file to run.", 50 | "visibleRule": "type = FilePath" 51 | }, 52 | { 53 | "name": "args", 54 | "type": "string", 55 | "label": "Arguments", 56 | "defaultValue":"", 57 | "required":false, 58 | "helpMarkDown": "Arguments passed to the shell script", 59 | "visibleRule": "type = FilePath" 60 | }, 61 | { 62 | "name": "cwd", 63 | "type": "filePath", 64 | "label": "Working Directory", 65 | "defaultValue":"", 66 | "required":false, 67 | "helpMarkDown": "Current working directory when script is run. Defaults to the folder where the script is located." , 68 | "groupName":"advanced" 69 | }, 70 | { 71 | "name": "failOnStandardError", 72 | "type": "boolean", 73 | "label": "Fail on Standard Error", 74 | "defaultValue": "false", 75 | "required": false, 76 | "helpMarkDown": "If this is true, this task will fail if any errors are written to the StandardError stream.", 77 | "groupName":"advanced" 78 | }, 79 | { 80 | "name": "script", 81 | "type": "multiLine", 82 | "label": "Script", 83 | "defaultValue": "echo 'Hello World'", 84 | "required": true, 85 | "properties": { 86 | "resizable": true, 87 | "rows": "20" 88 | }, 89 | "helpMarkDown": "Write your scripts and have fun", 90 | "visibleRule": "type = InlineScript" 91 | } 92 | ], 93 | "execution": { 94 | "Node": { 95 | "target": "task.js", 96 | "argumentFormat": "" 97 | } 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /Utilites/Tokenizer/Helpers.ps1: -------------------------------------------------------------------------------- 1 | function Test-ValidXmlFile { 2 | param ( 3 | [parameter(mandatory=$true)][ValidateNotNullorEmpty()][string]$xmlFilePath 4 | ) 5 | 6 | # Does file exist? 7 | if ((Test-Path -Path $xmlFilePath)){ 8 | # Check for Load or Parse errors when loading the XML file 9 | $xml = New-Object System.Xml.XmlDocument 10 | try { 11 | $xml.Load((Get-ChildItem -Path $xmlFilePath).FullName) 12 | return $true 13 | } 14 | catch [System.Xml.XmlException] { 15 | Write-Verbose "$xmlFilePath : $($_.toString())" 16 | return $false 17 | } 18 | } 19 | else{ 20 | return $false 21 | } 22 | 23 | } 24 | 25 | 26 | function Get-JsonFromFile { 27 | param ( 28 | [parameter(mandatory=$true)][ValidateNotNullorEmpty()][string]$jsonFilePath 29 | ) 30 | # Does file exist? 31 | if ((Test-Path -Path $jsonFilePath)){ 32 | try { 33 | $encoding = Get-FileEncoding $jsonFilePath 34 | $outObject = (Get-Content $jsonFilePath -Encoding $encoding) -join "`n" | ConvertFrom-Json 35 | return $outObject 36 | } 37 | catch { 38 | Write-Host "Error parsing configuration file. Exception message: " 39 | Write-Host $_.Exception | Format-List 40 | return 41 | } 42 | } 43 | else { 44 | Write-Host "Configuration file '$jsonFilePath' not found." 45 | return 46 | } 47 | 48 | } 49 | 50 | function ArrayToHash($a) 51 | { 52 | $hash = @{} 53 | $a | foreach { $hash[$_.Name] = $_ } 54 | return $hash 55 | } 56 | 57 | function Get-FileEncoding { 58 | param ( [string] $FilePath ) 59 | 60 | [byte[]] $byte = get-content -Encoding byte -ReadCount 4 -TotalCount 4 -Path $FilePath 61 | 62 | if ( $byte[0] -eq 0xef -and $byte[1] -eq 0xbb -and $byte[2] -eq 0xbf ) 63 | { $encoding = 'UTF8' } 64 | elseif ($byte[0] -eq 0xfe -and $byte[1] -eq 0xff) 65 | { $encoding = 'BigEndianUnicode' } 66 | elseif ($byte[0] -eq 0xff -and $byte[1] -eq 0xfe) 67 | { $encoding = 'Unicode' } 68 | elseif ($byte[0] -eq 0 -and $byte[1] -eq 0 -and $byte[2] -eq 0xfe -and $byte[3] -eq 0xff) 69 | { $encoding = 'UTF32' } 70 | elseif ($byte[0] -eq 0x2b -and $byte[1] -eq 0x2f -and $byte[2] -eq 0x76) 71 | { $encoding = 'UTF7'} 72 | else 73 | { $encoding = 'ASCII' } 74 | return $encoding 75 | } 76 | -------------------------------------------------------------------------------- /Utilites/Tokenizer/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Tokenizer/icon.png -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/OutFunctions.ps1: -------------------------------------------------------------------------------- 1 | # TODO: It would be better if the Out-Default function resolved the underlying Out-Default 2 | # command in the begin block. This would allow for supporting other modules that override 3 | # Out-Default. 4 | $script:outDefaultCmdlet = $ExecutionContext.InvokeCommand.GetCmdlet("Microsoft.PowerShell.Core\Out-Default") 5 | 6 | ######################################## 7 | # Public functions. 8 | ######################################## 9 | function Out-Default { 10 | [CmdletBinding(ConfirmImpact = "Medium")] 11 | param( 12 | [Parameter(ValueFromPipeline = $true)] 13 | [System.Management.Automation.PSObject]$InputObject) 14 | 15 | begin { 16 | #Write-Host '[Entering Begin Out-Default]' 17 | $__sp = { & $script:outDefaultCmdlet @PSBoundParameters }.GetSteppablePipeline() 18 | $__sp.Begin($pscmdlet) 19 | #Write-Host '[Leaving Begin Out-Default]' 20 | } 21 | 22 | process { 23 | #Write-Host '[Entering Process Out-Default]' 24 | if ($_ -is [System.Management.Automation.ErrorRecord]) { 25 | Write-Verbose -Message 'Error record:' 4>&1 | Out-Default 26 | Write-Verbose -Message (Remove-TrailingNewLine (Out-String -InputObject $_ -Width 2147483647)) 4>&1 | Out-Default 27 | Write-Verbose -Message 'Script stack trace:' 4>&1 | Out-Default 28 | Write-Verbose -Message "$($_.ScriptStackTrace)" 4>&1 | Out-Default 29 | Write-Verbose -Message 'Exception:' 4>&1 | Out-Default 30 | Write-Verbose -Message $_.Exception.ToString() 4>&1 | Out-Default 31 | Write-TaskError -Message $_.Exception.Message 32 | } elseif ($_ -is [System.Management.Automation.WarningRecord]) { 33 | Write-TaskWarning -Message (Remove-TrailingNewLine (Out-String -InputObject $_ -Width 2147483647)) 34 | } elseif ($_ -is [System.Management.Automation.VerboseRecord]) { 35 | foreach ($private:str in (Format-DebugMessage -Object $_)) { 36 | Write-TaskVerbose -Message $private:str 37 | } 38 | } elseif ($_ -is [System.Management.Automation.DebugRecord]) { 39 | foreach ($private:str in (Format-DebugMessage -Object $_)) { 40 | Write-TaskDebug -Message $private:str 41 | } 42 | } else { 43 | # TODO: Consider using out-string here to control the width. As a security precaution it would actually be best to set it to max so wrapping doesn't interfere with secret masking. 44 | $__sp.Process($_) 45 | } 46 | 47 | #Write-Host '[Leaving Process Out-Default]' 48 | } 49 | 50 | end { 51 | #Write-Host '[Entering End Out-Default]' 52 | $__sp.End() 53 | #Write-Host '[Leaving End Out-Default]' 54 | } 55 | } 56 | 57 | ######################################## 58 | # Private functions. 59 | ######################################## 60 | function Format-DebugMessage { 61 | [CmdletBinding()] 62 | param([psobject]$Object) 63 | 64 | $private:str = Out-String -InputObject $Object -Width 2147483647 65 | $private:str = Remove-TrailingNewLine $private:str 66 | "$private:str".Replace("`r`n", "`n").Replace("`r", "`n").Split("`n"[0]) 67 | } 68 | 69 | function Remove-TrailingNewLine { 70 | [CmdletBinding()] 71 | param($Str) 72 | if ([object]::ReferenceEquals($Str, $null)) { 73 | return $Str 74 | } elseif ($Str.EndsWith("`r`n")) { 75 | return $Str.Substring(0, $Str.Length - 2) 76 | } else { 77 | return $Str 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/PSGetModuleInfo.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Tokenizer/ps_modules/VstsTaskSdk/PSGetModuleInfo.xml -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/de-de/resources.resjson: -------------------------------------------------------------------------------- 1 | { 2 | "loc.messages.PSLIB_ContainerPathNotFound0": "Der Containerpfad wurde nicht gefunden: \"{0}\".", 3 | "loc.messages.PSLIB_EndpointAuth0": "\"{0}\"-Dienstendpunkt-Anmeldeinformationen", 4 | "loc.messages.PSLIB_EndpointUrl0": "\"{0}\"-Dienstendpunkt-URL", 5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "Fehler beim Aufzählen von Unterverzeichnissen für den folgenden Pfad: \"{0}\"", 6 | "loc.messages.PSLIB_FileNotFound0": "Die Datei wurde nicht gefunden: \"{0}\".", 7 | "loc.messages.PSLIB_Input0": "\"{0}\"-Eingabe", 8 | "loc.messages.PSLIB_InvalidPattern0": "Ungültiges Muster: \"{0}\"", 9 | "loc.messages.PSLIB_LeafPathNotFound0": "Der Blattpfad wurde nicht gefunden: \"{0}\".", 10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "Fehler bei der Normalisierung bzw. Erweiterung des Pfads. Die Pfadlänge wurde vom Kernel32-Subsystem nicht zurückgegeben für: \"{0}\"", 11 | "loc.messages.PSLIB_PathNotFound0": "Der Pfad wurde nicht gefunden: \"{0}\".", 12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "Der Prozess \"{0}\" wurde mit dem Code \"{1}\" beendet.", 13 | "loc.messages.PSLIB_Required0": "Erforderlich: {0}", 14 | "loc.messages.PSLIB_StringFormatFailed": "Fehler beim Zeichenfolgenformat.", 15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "Der Zeichenfolgen-Ressourcenschlüssel wurde nicht gefunden: \"{0}\".", 16 | "loc.messages.PSLIB_TaskVariable0": "\"{0}\"-Taskvariable" 17 | } -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/en-US/resources.resjson: -------------------------------------------------------------------------------- 1 | { 2 | "loc.messages.PSLIB_ContainerPathNotFound0": "Container path not found: '{0}'", 3 | "loc.messages.PSLIB_EndpointAuth0": "'{0}' service endpoint credentials", 4 | "loc.messages.PSLIB_EndpointUrl0": "'{0}' service endpoint URL", 5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "Enumerating subdirectories failed for path: '{0}'", 6 | "loc.messages.PSLIB_FileNotFound0": "File not found: '{0}'", 7 | "loc.messages.PSLIB_Input0": "'{0}' input", 8 | "loc.messages.PSLIB_InvalidPattern0": "Invalid pattern: '{0}'", 9 | "loc.messages.PSLIB_LeafPathNotFound0": "Leaf path not found: '{0}'", 10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "Path normalization/expansion failed. The path length was not returned by the Kernel32 subsystem for: '{0}'", 11 | "loc.messages.PSLIB_PathNotFound0": "Path not found: '{0}'", 12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "Process '{0}' exited with code '{1}'.", 13 | "loc.messages.PSLIB_Required0": "Required: {0}", 14 | "loc.messages.PSLIB_StringFormatFailed": "String format failed.", 15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "String resource key not found: '{0}'", 16 | "loc.messages.PSLIB_TaskVariable0": "'{0}' task variable" 17 | } -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/es-es/resources.resjson: -------------------------------------------------------------------------------- 1 | { 2 | "loc.messages.PSLIB_ContainerPathNotFound0": "No se encuentra la ruta de acceso del contenedor: '{0}'", 3 | "loc.messages.PSLIB_EndpointAuth0": "Credenciales del punto de conexión de servicio '{0}'", 4 | "loc.messages.PSLIB_EndpointUrl0": "URL del punto de conexión de servicio '{0}'", 5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "No se pudieron enumerar los subdirectorios de la ruta de acceso: '{0}'", 6 | "loc.messages.PSLIB_FileNotFound0": "Archivo no encontrado: '{0}'", 7 | "loc.messages.PSLIB_Input0": "Entrada '{0}'", 8 | "loc.messages.PSLIB_InvalidPattern0": "Patrón no válido: '{0}'", 9 | "loc.messages.PSLIB_LeafPathNotFound0": "No se encuentra la ruta de acceso de la hoja: '{0}'", 10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "No se pudo normalizar o expandir la ruta de acceso. El subsistema Kernel32 no devolvió la longitud de la ruta de acceso para: '{0}'", 11 | "loc.messages.PSLIB_PathNotFound0": "No se encuentra la ruta de acceso: '{0}'", 12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "El proceso '{0}' finalizó con el código '{1}'.", 13 | "loc.messages.PSLIB_Required0": "Se requiere: {0}", 14 | "loc.messages.PSLIB_StringFormatFailed": "Error de formato de cadena.", 15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "No se encuentra la clave de recurso de la cadena: '{0}'", 16 | "loc.messages.PSLIB_TaskVariable0": "Variable de tarea '{0}'" 17 | } -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/fr-fr/resources.resjson: -------------------------------------------------------------------------------- 1 | { 2 | "loc.messages.PSLIB_ContainerPathNotFound0": "Le chemin du conteneur est introuvable : '{0}'", 3 | "loc.messages.PSLIB_EndpointAuth0": "Informations d'identification du point de terminaison de service '{0}'", 4 | "loc.messages.PSLIB_EndpointUrl0": "URL du point de terminaison de service '{0}'", 5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "Échec de l'énumération des sous-répertoires pour le chemin : '{0}'", 6 | "loc.messages.PSLIB_FileNotFound0": "Fichier introuvable : {0}.", 7 | "loc.messages.PSLIB_Input0": "Entrée '{0}'", 8 | "loc.messages.PSLIB_InvalidPattern0": "Modèle non valide : '{0}'", 9 | "loc.messages.PSLIB_LeafPathNotFound0": "Le chemin feuille est introuvable : '{0}'", 10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "Échec de la normalisation/l'expansion du chemin. La longueur du chemin n'a pas été retournée par le sous-système Kernel32 pour : '{0}'", 11 | "loc.messages.PSLIB_PathNotFound0": "Chemin introuvable : '{0}'", 12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "Le processus '{0}' s'est arrêté avec le code '{1}'.", 13 | "loc.messages.PSLIB_Required0": "Obligatoire : {0}", 14 | "loc.messages.PSLIB_StringFormatFailed": "Échec du format de la chaîne.", 15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "Clé de la ressource de type chaîne introuvable : '{0}'", 16 | "loc.messages.PSLIB_TaskVariable0": "Variable de tâche '{0}'" 17 | } -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/it-IT/resources.resjson: -------------------------------------------------------------------------------- 1 | { 2 | "loc.messages.PSLIB_ContainerPathNotFound0": "Percorso del contenitore non trovato: '{0}'", 3 | "loc.messages.PSLIB_EndpointAuth0": "Credenziali dell'endpoint servizio '{0}'", 4 | "loc.messages.PSLIB_EndpointUrl0": "URL dell'endpoint servizio '{0}'", 5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "L'enumerazione delle sottodirectory per il percorso '{0}' non è riuscita", 6 | "loc.messages.PSLIB_FileNotFound0": "File non trovato: '{0}'", 7 | "loc.messages.PSLIB_Input0": "Input di '{0}'", 8 | "loc.messages.PSLIB_InvalidPattern0": "Criterio non valido: '{0}'", 9 | "loc.messages.PSLIB_LeafPathNotFound0": "Percorso foglia non trovato: '{0}'", 10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "La normalizzazione o l'espansione del percorso non è riuscita. Il sottosistema Kernel32 non ha restituito la lunghezza del percorso per '{0}'", 11 | "loc.messages.PSLIB_PathNotFound0": "Percorso non trovato: '{0}'", 12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "Il processo '{0}' è stato terminato ed è stato restituito il codice '{1}'.", 13 | "loc.messages.PSLIB_Required0": "Obbligatorio: {0}", 14 | "loc.messages.PSLIB_StringFormatFailed": "Errore nel formato della stringa.", 15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "La chiave della risorsa stringa non è stata trovata: '{0}'", 16 | "loc.messages.PSLIB_TaskVariable0": "Variabile dell'attività '{0}'" 17 | } -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/ja-jp/resources.resjson: -------------------------------------------------------------------------------- 1 | { 2 | "loc.messages.PSLIB_ContainerPathNotFound0": "コンテナーのパスが見つかりません: '{0}'", 3 | "loc.messages.PSLIB_EndpointAuth0": "'{0}' サービス エンドポイントの資格情報", 4 | "loc.messages.PSLIB_EndpointUrl0": "'{0}' サービス エンドポイントの URL", 5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "パス '{0}' のサブディレクトリを列挙できませんでした", 6 | "loc.messages.PSLIB_FileNotFound0": "ファイルが見つかりません: '{0}'", 7 | "loc.messages.PSLIB_Input0": "'{0}' 入力", 8 | "loc.messages.PSLIB_InvalidPattern0": "使用できないパターンです: '{0}'", 9 | "loc.messages.PSLIB_LeafPathNotFound0": "リーフ パスが見つかりません: '{0}'", 10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "パスの正規化/展開に失敗しました。Kernel32 サブシステムからパス '{0}' の長さが返されませんでした", 11 | "loc.messages.PSLIB_PathNotFound0": "パスが見つかりません: '{0}'", 12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "プロセス '{0}' がコード '{1}' で終了しました。", 13 | "loc.messages.PSLIB_Required0": "必要: {0}", 14 | "loc.messages.PSLIB_StringFormatFailed": "文字列のフォーマットに失敗しました。", 15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "文字列のリソース キーが見つかりません: '{0}'", 16 | "loc.messages.PSLIB_TaskVariable0": "'{0}' タスク変数" 17 | } -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/ko-KR/resources.resjson: -------------------------------------------------------------------------------- 1 | { 2 | "loc.messages.PSLIB_ContainerPathNotFound0": "컨테이너 경로를 찾을 수 없음: '{0}'", 3 | "loc.messages.PSLIB_EndpointAuth0": "'{0}' 서비스 끝점 자격 증명", 4 | "loc.messages.PSLIB_EndpointUrl0": "'{0}' 서비스 끝점 URL", 5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "경로에 대해 하위 디렉터리를 열거하지 못함: '{0}'", 6 | "loc.messages.PSLIB_FileNotFound0": "{0} 파일을 찾을 수 없습니다.", 7 | "loc.messages.PSLIB_Input0": "'{0}' 입력", 8 | "loc.messages.PSLIB_InvalidPattern0": "잘못된 패턴: '{0}'", 9 | "loc.messages.PSLIB_LeafPathNotFound0": "Leaf 경로를 찾을 수 없음: '{0}'", 10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "경로 정규화/확장에 실패했습니다. 다음에 대해 Kernel32 subsystem에서 경로 길이를 반환하지 않음: '{0}'", 11 | "loc.messages.PSLIB_PathNotFound0": "경로를 찾을 수 없음: '{0}'", 12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "'{1}' 코드로 '{0}' 프로세스가 종료되었습니다.", 13 | "loc.messages.PSLIB_Required0": "필수: {0}", 14 | "loc.messages.PSLIB_StringFormatFailed": "문자열을 포맷하지 못했습니다.", 15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "문자열 리소스 키를 찾을 수 없음: '{0}'", 16 | "loc.messages.PSLIB_TaskVariable0": "'{0}' 작업 변수" 17 | } -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/ru-RU/resources.resjson: -------------------------------------------------------------------------------- 1 | { 2 | "loc.messages.PSLIB_ContainerPathNotFound0": "Путь к контейнеру не найден: \"{0}\".", 3 | "loc.messages.PSLIB_EndpointAuth0": "Учетные данные конечной точки службы \"{0}\"", 4 | "loc.messages.PSLIB_EndpointUrl0": "URL-адрес конечной точки службы \"{0}\"", 5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "Сбой перечисления подкаталогов для пути: \"{0}\".", 6 | "loc.messages.PSLIB_FileNotFound0": "Файл не найден: \"{0}\".", 7 | "loc.messages.PSLIB_Input0": "Входные данные \"{0}\".", 8 | "loc.messages.PSLIB_InvalidPattern0": "Недопустимый шаблон: \"{0}\".", 9 | "loc.messages.PSLIB_LeafPathNotFound0": "Путь к конечному объекту не найден: \"{0}\".", 10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "Сбой нормализации и расширения пути. Длина пути не была возвращена подсистемой Kernel32 для: \"{0}\".", 11 | "loc.messages.PSLIB_PathNotFound0": "Путь не найден: \"{0}\".", 12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "Процесс \"{0}\" завершил работу с кодом \"{1}\".", 13 | "loc.messages.PSLIB_Required0": "Требуется: {0}", 14 | "loc.messages.PSLIB_StringFormatFailed": "Сбой формата строки.", 15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "Ключ ресурса строки не найден: \"{0}\".", 16 | "loc.messages.PSLIB_TaskVariable0": "Переменная задачи \"{0}\"" 17 | } -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/zh-CN/resources.resjson: -------------------------------------------------------------------------------- 1 | { 2 | "loc.messages.PSLIB_ContainerPathNotFound0": "找不到容器路径:“{0}”", 3 | "loc.messages.PSLIB_EndpointAuth0": "“{0}”服务终结点凭据", 4 | "loc.messages.PSLIB_EndpointUrl0": "“{0}”服务终结点 URL", 5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "枚举路径的子目录失败:“{0}”", 6 | "loc.messages.PSLIB_FileNotFound0": "找不到文件: {0}。", 7 | "loc.messages.PSLIB_Input0": "“{0}”输入", 8 | "loc.messages.PSLIB_InvalidPattern0": "无效的模式:“{0}”", 9 | "loc.messages.PSLIB_LeafPathNotFound0": "找不到叶路径:“{0}”", 10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "路径规范化/扩展失败。路径长度不是由“{0}”的 Kernel32 子系统返回的", 11 | "loc.messages.PSLIB_PathNotFound0": "找不到路径:“{0}”", 12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "过程“{0}”已退出,代码为“{1}”。", 13 | "loc.messages.PSLIB_Required0": "必需: {0}", 14 | "loc.messages.PSLIB_StringFormatFailed": "字符串格式无效。", 15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "找不到字符串资源关键字:“{0}”", 16 | "loc.messages.PSLIB_TaskVariable0": "“{0}”任务变量" 17 | } -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/zh-TW/resources.resjson: -------------------------------------------------------------------------------- 1 | { 2 | "loc.messages.PSLIB_ContainerPathNotFound0": "找不到容器路徑: '{0}'", 3 | "loc.messages.PSLIB_EndpointAuth0": "'{0}' 服務端點認證", 4 | "loc.messages.PSLIB_EndpointUrl0": "'{0}' 服務端點 URL", 5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "為路徑列舉子目錄失敗: '{0}'", 6 | "loc.messages.PSLIB_FileNotFound0": "找不到檔案: '{0}'", 7 | "loc.messages.PSLIB_Input0": "'{0}' 輸入", 8 | "loc.messages.PSLIB_InvalidPattern0": "模式無效: '{0}'", 9 | "loc.messages.PSLIB_LeafPathNotFound0": "找不到分葉路徑: '{0}'", 10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "路徑正規化/展開失敗。Kernel32 子系統未傳回 '{0}' 的路徑長度", 11 | "loc.messages.PSLIB_PathNotFound0": "找不到路徑: '{0}'", 12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "處理序 '{0}' 以返回碼 '{1}' 結束。", 13 | "loc.messages.PSLIB_Required0": "必要項: {0}", 14 | "loc.messages.PSLIB_StringFormatFailed": "字串格式失敗。", 15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "找不到字串資源索引鍵: '{0}'", 16 | "loc.messages.PSLIB_TaskVariable0": "'{0}' 工作變數" 17 | } -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/ToolFunctions.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | .SYNOPSIS 3 | Asserts that a path exists. Throws if the path does not exist. 4 | 5 | .PARAMETER PassThru 6 | True to return the path. 7 | #> 8 | function Assert-Path { 9 | [CmdletBinding()] 10 | param( 11 | [Parameter(Mandatory = $true)] 12 | [string]$LiteralPath, 13 | [Microsoft.PowerShell.Commands.TestPathType]$PathType = [Microsoft.PowerShell.Commands.TestPathType]::Any, 14 | [switch]$PassThru) 15 | 16 | if ($PathType -eq [Microsoft.PowerShell.Commands.TestPathType]::Any) { 17 | Write-Verbose "Asserting path exists: '$LiteralPath'" 18 | } else { 19 | Write-Verbose "Asserting $("$PathType".ToLowerInvariant()) path exists: '$LiteralPath'" 20 | } 21 | 22 | if (Test-Path -LiteralPath $LiteralPath -PathType $PathType) { 23 | if ($PassThru) { 24 | return $LiteralPath 25 | } 26 | 27 | return 28 | } 29 | 30 | $resourceKey = switch ($PathType) { 31 | ([Microsoft.PowerShell.Commands.TestPathType]::Container) { "PSLIB_ContainerPathNotFound0" ; break } 32 | ([Microsoft.PowerShell.Commands.TestPathType]::Leaf) { "PSLIB_LeafPathNotFound0" ; break } 33 | default { "PSLIB_PathNotFound0" } 34 | } 35 | 36 | throw (Get-LocString -Key $resourceKey -ArgumentList $LiteralPath) 37 | } 38 | 39 | <# 40 | .SYNOPSIS 41 | Executes an external program. 42 | 43 | .DESCRIPTION 44 | Executes an external program and waits for the process to exit. 45 | 46 | After calling this command, the exit code of the process can be retrieved from the variable $LASTEXITCODE. 47 | 48 | .PARAMETER Encoding 49 | This parameter not required for most scenarios. Indicates how to interpret the encoding from the external program. An example use case would be if an external program outputs UTF-16 XML and the output needs to be parsed. 50 | 51 | .PARAMETER RequireExitCodeZero 52 | Indicates whether to write an error to the error pipeline if the exit code is not zero. 53 | #> 54 | function Invoke-Tool { # TODO: RENAME TO INVOKE-PROCESS? 55 | [CmdletBinding()] 56 | param( 57 | [ValidatePattern('^[^\r\n]*$')] 58 | [Parameter(Mandatory = $true)] 59 | [string]$FileName, 60 | [ValidatePattern('^[^\r\n]*$')] 61 | [Parameter()] 62 | [string]$Arguments, 63 | [string]$WorkingDirectory, 64 | [System.Text.Encoding]$Encoding, 65 | [switch]$RequireExitCodeZero) 66 | 67 | Trace-EnteringInvocation $MyInvocation 68 | $isPushed = $false 69 | $originalEncoding = $null 70 | try { 71 | if ($Encoding) { 72 | $originalEncoding = [System.Console]::OutputEncoding 73 | [System.Console]::OutputEncoding = $Encoding 74 | } 75 | 76 | if ($WorkingDirectory) { 77 | Push-Location -LiteralPath $WorkingDirectory -ErrorAction Stop 78 | $isPushed = $true 79 | } 80 | 81 | $FileName = $FileName.Replace('"', '').Replace("'", "''") 82 | Write-Host "##[command]""$FileName"" $Arguments" 83 | Invoke-Expression "& '$FileName' --% $Arguments" 84 | Write-Verbose "Exit code: $LASTEXITCODE" 85 | if ($RequireExitCodeZero -and $LASTEXITCODE -ne 0) { 86 | Write-Error (Get-LocString -Key PSLIB_Process0ExitedWithCode1 -ArgumentList ([System.IO.Path]::GetFileName($FileName)), $LASTEXITCODE) 87 | } 88 | } finally { 89 | if ($originalEncoding) { 90 | [System.Console]::OutputEncoding = $originalEncoding 91 | } 92 | 93 | if ($isPushed) { 94 | Pop-Location 95 | } 96 | 97 | Trace-LeavingInvocation $MyInvocation 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/VstsTaskSdk.psd1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Tokenizer/ps_modules/VstsTaskSdk/VstsTaskSdk.psd1 -------------------------------------------------------------------------------- /Utilites/Tokenizer/ps_modules/VstsTaskSdk/lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "messages": { 3 | "PSLIB_ContainerPathNotFound0": "Container path not found: '{0}'", 4 | "PSLIB_EndpointAuth0": "'{0}' service endpoint credentials", 5 | "PSLIB_EndpointUrl0": "'{0}' service endpoint URL", 6 | "PSLIB_EnumeratingSubdirectoriesFailedForPath0": "Enumerating subdirectories failed for path: '{0}'", 7 | "PSLIB_FileNotFound0": "File not found: '{0}'", 8 | "PSLIB_Input0": "'{0}' input", 9 | "PSLIB_InvalidPattern0": "Invalid pattern: '{0}'", 10 | "PSLIB_LeafPathNotFound0": "Leaf path not found: '{0}'", 11 | "PSLIB_PathLengthNotReturnedFor0": "Path normalization/expansion failed. The path length was not returned by the Kernel32 subsystem for: '{0}'", 12 | "PSLIB_PathNotFound0": "Path not found: '{0}'", 13 | "PSLIB_Process0ExitedWithCode1": "Process '{0}' exited with code '{1}'.", 14 | "PSLIB_Required0": "Required: {0}", 15 | "PSLIB_StringFormatFailed": "String format failed.", 16 | "PSLIB_StringResourceKeyNotFound0": "String resource key not found: '{0}'", 17 | "PSLIB_TaskVariable0": "'{0}' task variable" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Utilites/Tokenizer/task.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "57ee7959-ba10-47a7-8adb-19d032873133", 3 | "name": "Tokenizer", 4 | "friendlyName": "Tokenize with XPath/Regular expressions", 5 | "description": "Replaces ____ and/or XPath for XML documents with User Defined variables or configuration json document", 6 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)", 7 | "category": "Utility", 8 | "visibility": [ 9 | "Build", 10 | "Release" 11 | ], 12 | "author": "ms-devlabs", 13 | "version": { 14 | "Major": 2, 15 | "Minor": 1, 16 | "Patch": 0 17 | }, 18 | "demands": [ 19 | ], 20 | "groups": [ 21 | { 22 | "name": "advanced", 23 | "displayName": "Advanced", 24 | "isExpanded": false 25 | } 26 | ], 27 | "inputs": [ 28 | { 29 | "name": "SourcePath", 30 | "type": "filePath", 31 | "label": "Source filename", 32 | "defaultValue": "", 33 | "required": true, 34 | "helpMarkDown": "Source file name that contains the tokens (____). These patterns will be replaced with user-defined variables or from Configuration Json FileName. If it is an XML document, XPaths mentioned in the Configuration JsonFileName will be set as per environment" 35 | }, 36 | { 37 | "name": "DestinationPath", 38 | "type": "string", 39 | "label": "Destination filename", 40 | "defaultValue": "", 41 | "helpMarkDown": "The destination filename that has transformed Source filename. If this is empty, the 'Source filename' will be modified.", 42 | "required": false 43 | }, 44 | { 45 | "name": "ConfigurationJsonFile", 46 | "type": "string", 47 | "label": "Configuration Json filename", 48 | "defaultValue": "", 49 | "helpMarkDown": "Json file that contains environment specific settings in the form XPath, Attribute, Value and values for user-defined variables.", 50 | "required": false 51 | }, 52 | { 53 | "name": "ReplaceUndefinedValuesWithEmpty", 54 | "type": "boolean", 55 | "label": "Replace undefined values with empty", 56 | "defaultValue": false, 57 | "groupName": "advanced", 58 | "helpMarkDown": "If set tokens will be set to an empty value if neither environment variable was set nor the value be found in the configuration. Otherwise the token will be skipped.", 59 | "required": false 60 | } 61 | ], 62 | "instanceNameFormat": "Tokenizer: Transform Source filename", 63 | "execution": { 64 | "Powershell": { 65 | "target": "$(currentDirectory)\\tokenize.ps1", 66 | "argumentFormat": "", 67 | "workingDirectory": "$(currentDirectory)", 68 | "platforms": [ 69 | "windows" 70 | ] 71 | }, 72 | "Powershell3": { 73 | "target": "tokenize-ps3.ps1" 74 | } 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /Utilites/UnZip/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/UnZip/icon.png -------------------------------------------------------------------------------- /Utilites/UnZip/task.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "f3256ce0-a7ba-11e5-9412-1587795ee05c", 3 | "name": "unzip", 4 | "friendlyName": "UnZip A package", 5 | "description": "UnZip a package", 6 | "author": "ms-devlabs", 7 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)", 8 | "category": "Utility", 9 | "visibility": [ 10 | "Build", 11 | "Release" 12 | ], 13 | "demands": [ 14 | "DotNetFramework" 15 | ], 16 | "version": { 17 | "Major": "0", 18 | "Minor": "1", 19 | "Patch": "1" 20 | }, 21 | "minimumAgentVersion": "1.83.0", 22 | "instanceNameFormat": "UnZip", 23 | "inputs": [ 24 | { 25 | "name": "pathToZipFile", 26 | "type": "filePath", 27 | "label": "Path to the zip file", 28 | "defaultValue": "", 29 | "required": true, 30 | "helpMarkDown": "Path to the zip file which you want to unzip" 31 | }, 32 | { 33 | "name": "pathToZipFolder", 34 | "type": "filePath", 35 | "label": "Path to folder", 36 | "defaultValue": "", 37 | "required": true, 38 | "helpMarkDown": "Path to the folder where you want unzipped content." 39 | } 40 | ], 41 | "execution": { 42 | "PowerShell": { 43 | "target": "$(currentDirectory)\\unzip.ps1", 44 | "argumentFormat": "", 45 | "workingDirectory": "$(currentDirectory)" 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /Utilites/UnZip/unzip.ps1: -------------------------------------------------------------------------------- 1 | param ( 2 | [string]$pathToZipFile, 3 | [string]$pathToZipFolder 4 | 5 | ) 6 | 7 | Write-Verbose 'Entering sample.ps1' 8 | Write-Verbose "pathToZipFile = $pathToZipFile" 9 | Write-Verbose "pathToZipFolder = $pathToZipFolder" 10 | 11 | 12 | # Import the Task.Common dll that has all the cmdlets we need for Build 13 | # import-module "Microsoft.TeamFoundation.DistributedTask.Task.Common" 14 | Add-Type -A System.IO.Compression.FileSystem 15 | 16 | [IO.Compression.ZipFile]::ExtractToDirectory($pathToZipFile, $pathToZipFolder) 17 | -------------------------------------------------------------------------------- /Utilites/Zip/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Zip/icon.png -------------------------------------------------------------------------------- /Utilites/Zip/task.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "dc66d2f0-a7ba-11e5-ae62-3deab86d85e3", 3 | "name": "zip", 4 | "friendlyName": "Zip A Folder", 5 | "description": "Zip Files and Folder", 6 | "author": "ms-devlabs", 7 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)", 8 | "category": "Utility", 9 | "visibility": [ 10 | "Build", 11 | "Release" 12 | ], 13 | "demands": [], 14 | "version": { 15 | "Major": "0", 16 | "Minor": "2", 17 | "Patch": "0" 18 | }, 19 | "minimumAgentVersion": "1.83.0", 20 | "instanceNameFormat": "Zip", 21 | "groups": [ 22 | { 23 | "name":"advanced", 24 | "displayName":"Advanced", 25 | "isExpanded":false 26 | } 27 | ], 28 | "inputs": [ 29 | { 30 | "name": "pathToZipFolder", 31 | "type": "filePath", 32 | "label": "Path to folder", 33 | "defaultValue": "", 34 | "required": true, 35 | "helpMarkDown": "Path to the folder whose content has to be zipped." 36 | }, 37 | { 38 | "name": "pathToZipFile", 39 | "type": "filePath", 40 | "label": "Path to the zip file", 41 | "defaultValue": "", 42 | "required": true, 43 | "helpMarkDown": "Path to the zip file which will be generated" 44 | }, 45 | { 46 | "name": "overwrite", 47 | "type": "boolean", 48 | "label": "Overwrite zip file", 49 | "defaultValue": "false", 50 | "required":false, 51 | "helpMarkDown": "Overwrites the existing zip file", 52 | "groupName":"advanced" 53 | } 54 | ], 55 | "execution": { 56 | "PowerShell": { 57 | "target": "$(currentDirectory)\\zip.ps1", 58 | "argumentFormat": "", 59 | "workingDirectory": "$(currentDirectory)" 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Utilites/Zip/zip.ps1: -------------------------------------------------------------------------------- 1 | param ( 2 | [string]$pathToZipFolder, 3 | [string]$pathToZipFile, 4 | [string]$overwrite 5 | ) 6 | 7 | Write-Verbose 'Entering sample.ps1' 8 | Write-Verbose "pathToZipFolder = $pathToZipFolder" 9 | Write-Verbose "pathToZipFile = $pathToZipFile" 10 | Write-Verbose "overwrite = $overwrite" 11 | 12 | Add-Type -A System.IO.Compression.FileSystem 13 | 14 | # This is a hack since the agent passes this as a string. 15 | if($overwrite -eq "true"){ 16 | $overwrite = $true 17 | }else{ 18 | $overwrite = $false 19 | } 20 | 21 | if ($overwrite -and (Test-Path $pathToZipFile)){ 22 | Write-Verbose "Removing the old file" 23 | Remove-Item $pathToZipFile 24 | } 25 | 26 | [IO.Compression.ZipFile]::CreateFromDirectory($pathToZipFolder, $pathToZipFile) -------------------------------------------------------------------------------- /Utilites/images/Icon1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/Icon1024.png -------------------------------------------------------------------------------- /Utilites/images/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/Icon128.png -------------------------------------------------------------------------------- /Utilites/images/Icon256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/Icon256.png -------------------------------------------------------------------------------- /Utilites/images/Icon512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/Icon512.png -------------------------------------------------------------------------------- /Utilites/images/Icon64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/Icon64.png -------------------------------------------------------------------------------- /Utilites/images/screen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/screen1.png -------------------------------------------------------------------------------- /Utilites/ms-devlabs.utilitytasks-0.1.10.vsix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.10.vsix -------------------------------------------------------------------------------- /Utilites/ms-devlabs.utilitytasks-0.1.3.vsix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.3.vsix -------------------------------------------------------------------------------- /Utilites/ms-devlabs.utilitytasks-0.1.5.vsix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.5.vsix -------------------------------------------------------------------------------- /Utilites/ms-devlabs.utilitytasks-0.1.6.vsix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.6.vsix -------------------------------------------------------------------------------- /Utilites/ms-devlabs.utilitytasks-0.1.8.vsix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.8.vsix -------------------------------------------------------------------------------- /Utilites/ms-devlabs.utilitytasks-0.1.9.vsix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.9.vsix --------------------------------------------------------------------------------