diff --git a/CHANGELOG.md b/CHANGELOG.md
index 82b56d1..9033fde 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,25 @@
[![Share via Facebook](https://raw.githubusercontent.com/mkloubert/vscode-deploy-reloaded/master/img/share/Facebook.png)](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-deploy-reloaded"e=vscode-deploy-reloaded) [![Share via Twitter](https://raw.githubusercontent.com/mkloubert/vscode-deploy-reloaded/master/img/share/Twitter.png)](https://twitter.com/intent/tweet?source=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-deploy-reloaded&text=vscode-deploy-reloaded:%20https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-deploy-reloaded&via=mjkloubert) [![Share via Google+](https://raw.githubusercontent.com/mkloubert/vscode-deploy-reloaded/master/img/share/Google+.png)](https://plus.google.com/share?url=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-deploy-reloaded) [![Share via Pinterest](https://raw.githubusercontent.com/mkloubert/vscode-deploy-reloaded/master/img/share/Pinterest.png)](https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-deploy-reloaded&media=https://raw.githubusercontent.com/mkloubert/vscode-deploy-reloaded/master/img/demo1.gif&description=Recoded%20version%20of%20Visual%20Studio%20Code%20extension%20%27vs-deploy%27%2C%20which%20provides%20commands%20to%20deploy%20files%20to%20one%20or%20more%20destinations.) [![Share via Reddit](https://raw.githubusercontent.com/mkloubert/vscode-deploy-reloaded/master/img/share/Reddit.png)](https://www.reddit.com/submit?url=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-deploy-reloaded&title=vscode-deploy-reloaded) [![Share via LinkedIn](https://raw.githubusercontent.com/mkloubert/vscode-deploy-reloaded/master/img/share/LinkedIn.png)](https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-deploy-reloaded&title=vscode-deploy-reloaded&summary=Recoded%20version%20of%20Visual%20Studio%20Code%20extension%20%27vs-deploy%27%2C%20which%20provides%20commands%20to%20deploy%20files%20to%20one%20or%20more%20destinations.&source=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-deploy-reloaded) [![Share via Wordpress](https://raw.githubusercontent.com/mkloubert/vscode-deploy-reloaded/master/img/share/Wordpress.png)](https://wordpress.com/press-this.php?u=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-deploy-reloaded"e=vscode-deploy-reloaded&s=Recoded%20version%20of%20Visual%20Studio%20Code%20extension%20%27vs-deploy%27%2C%20which%20provides%20commands%20to%20deploy%20files%20to%20one%20or%20more%20destinations.&i=https://raw.githubusercontent.com/mkloubert/vscode-deploy-reloaded/master/img/demo1.gif) [![Share via Email](https://raw.githubusercontent.com/mkloubert/vscode-deploy-reloaded/master/img/share/Email.png)](mailto:?subject=vscode-deploy-reloaded&body=Recoded%20version%20of%20Visual%20Studio%20Code%20extension%20'vs-deploy'%2C%20which%20provides%20commands%20to%20deploy%20files%20to%20one%20or%20more%20destinations.:%20https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dmkloubert.vscode-deploy-reloaded)
+## 0.21.0 (January 5th, 2018; copy remote directory to clipboard)
+
+* can copy directory path to clipboard, when [list of remote directory](https://github.com/mkloubert/vscode-deploy-reloaded#list-remote-files-), now, s. [issue #10](https://github.com/mkloubert/vscode-deploy-reloaded/issues/10)
+
+![Demo Copy remote directory path to clipboard](https://raw.githubusercontent.com/mkloubert/vscode-deploy-reloaded/master/img/demo14.gif)
+
+* last remote directory is cached now
+* updated [npm packages](https://www.npmjs.com):
+ * [@slack/client](https://www.npmjs.com/package/@slack/client) to `^3.15.0`
+ * [aws-sdk](https://www.npmjs.com/package/aws-sdk) to `^2.176.0`
+ * [azure-storage](https://www.npmjs.com/package/azure-storage) to `^2.7.0`
+ * [coffeescript](https://www.npmjs.com/package/coffeescript) to `"^2.1.1`
+ * [dropbox](https://www.npmjs.com/package/dropbox) to `"^2.5.13`
+ * [fs-extra](https://www.npmjs.com/package/fs-extra) to `^4.0.3`
+ * [i18next](https://www.npmjs.com/package/i18next) to `^10.2.2`
+ * [marked](https://www.npmjs.com/package/marked) to `"^0.3.9`
+ * [moment](https://www.npmjs.com/package/moment) to `"^2.20.1`
+ * [uglify-js](https://www.npmjs.com/package/uglify-js) to `^3.3.4`
+
## 0.20.0 (January 4th, 2018; 'prepare' target operations)
* [exec target operation](https://github.com/mkloubert/vscode-deploy-reloaded/wiki/target_operations#exec-) now displays output in output channel by default, s. [issue #6](https://github.com/mkloubert/vscode-deploy-reloaded/issues/6)
diff --git a/img/demo14.gif b/img/demo14.gif
new file mode 100644
index 0000000..4afbc28
Binary files /dev/null and b/img/demo14.gif differ
diff --git a/package-lock.json b/package-lock.json
index 9652dfe..d22cd68 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "vscode-deploy-reloaded",
- "version": "0.20.0",
+ "version": "0.21.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -10,9 +10,9 @@
"integrity": "sha1-OD9Faya8lseInwMyB59DWLFsWNw="
},
"@slack/client": {
- "version": "3.14.2",
- "resolved": "https://registry.npmjs.org/@slack/client/-/client-3.14.2.tgz",
- "integrity": "sha512-Rs95C+yC2cJ81qydH8uH0beH/5wp60aCmX4k0Hj2v1vG4ntjHARyr8Dbeq/G2n9l8dkwdCwDS09KyLEyermmrg==",
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/@slack/client/-/client-3.15.0.tgz",
+ "integrity": "sha512-MIgf5s9PrcxFaPlkJ2cFOhrfh9/KOmUKK5GG/Eka1IJK7+oBCscJFnQ6FfYnZICwIQxWkkuiXmeWYWNevZhCLg==",
"requires": {
"async": "1.5.2",
"bluebird": "3.5.1",
@@ -26,40 +26,6 @@
"url-join": "0.0.1",
"winston": "2.4.0",
"ws": "1.1.5"
- },
- "dependencies": {
- "node-uuid": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
- "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc="
- },
- "request": {
- "version": "2.76.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.76.0.tgz",
- "integrity": "sha1-vkRQWv73A2CgQ2lVEGvjlF2VVg4=",
- "requires": {
- "aws-sign2": "0.6.0",
- "aws4": "1.6.0",
- "caseless": "0.11.0",
- "combined-stream": "1.0.5",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.1.4",
- "har-validator": "2.0.6",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.17",
- "node-uuid": "1.4.8",
- "oauth-sign": "0.8.2",
- "qs": "6.3.2",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.3",
- "tunnel-agent": "0.4.3"
- }
- }
}
},
"@types/clean-css": {
@@ -68,6 +34,18 @@
"integrity": "sha1-AFLBNvUkgAJCjjY4s33ko5gYZB0=",
"dev": true
},
+ "@types/copy-paste": {
+ "version": "1.1.30",
+ "resolved": "https://registry.npmjs.org/@types/copy-paste/-/copy-paste-1.1.30.tgz",
+ "integrity": "sha1-p9RUyeHkVCMo9/Huz1Mzvoz7UO0=",
+ "dev": true
+ },
+ "@types/events": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz",
+ "integrity": "sha512-y3bR98mzYOo0pAZuiLari+cQyiKk3UXRuT45h1RjhfeCzqkjaVsfZJNaxdgtk7/3tzOm1ozLTqEqMP3VbI48jw==",
+ "dev": true
+ },
"@types/filesize": {
"version": "3.2.15",
"resolved": "https://registry.npmjs.org/@types/filesize/-/filesize-3.2.15.tgz",
@@ -75,12 +53,12 @@
"dev": true
},
"@types/fs-extra": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-4.0.5.tgz",
- "integrity": "sha512-tIG0GpHum5IFb8Qze/cSv0w/0gNzHB+MUDftTQaxenx46z50g51/MPkNLssLz9+uZLzCDd35bT9qtWOTXZ21Gw==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-4.0.7.tgz",
+ "integrity": "sha512-BN48b/2F3kL0Ual7tjcHjj0Fl+nuYKtHa0G/xT3Q43HuCpN7rQD5vIx6Aqnl9x10oBI5xMJh8Ly+FQpP205JlA==",
"dev": true,
"requires": {
- "@types/node": "7.0.48"
+ "@types/node": "7.0.52"
}
},
"@types/ftp": {
@@ -89,17 +67,18 @@
"integrity": "sha1-ZhI4WHuexlPHEla9IThUW+e6c5M=",
"dev": true,
"requires": {
- "@types/node": "7.0.48"
+ "@types/node": "7.0.52"
}
},
"@types/glob": {
- "version": "5.0.33",
- "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.33.tgz",
- "integrity": "sha512-BcD4yyWz+qmCggaYMSFF0Xn7GkO6tgwm3Fh9Gxk/kQmEU3Z7flQTnVlMyKBUNvXXNTCCyjqK4XT4/2hLd1gQ2A==",
+ "version": "5.0.34",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.34.tgz",
+ "integrity": "sha512-sUvpieq+HsWTLdkeOI8Mi8u22Ag3AoGuM3sv+XMP1bKtbaIAHpEA2f52K2mz6vK5PVhTa3bFyRZLZMqTxOo2Cw==",
"dev": true,
"requires": {
- "@types/minimatch": "3.0.1",
- "@types/node": "7.0.48"
+ "@types/events": "1.1.0",
+ "@types/minimatch": "3.0.3",
+ "@types/node": "7.0.52"
}
},
"@types/html-entities": {
@@ -109,14 +88,14 @@
"dev": true
},
"@types/html-minifier": {
- "version": "1.1.30",
- "resolved": "https://registry.npmjs.org/@types/html-minifier/-/html-minifier-1.1.30.tgz",
- "integrity": "sha1-OzgXwn3yOSL3taqH7/RbOrk0rsk=",
+ "version": "1.1.31",
+ "resolved": "https://registry.npmjs.org/@types/html-minifier/-/html-minifier-1.1.31.tgz",
+ "integrity": "sha512-L/935PXha1hm+J0A+T7b5+5O/a/tUbLuTWvK379a2G2b9wHy/TJZtIm61GwxWphsiqzODseZHaMvvykQZEFzhg==",
"dev": true,
"requires": {
"@types/clean-css": "3.4.30",
"@types/relateurl": "0.2.28",
- "@types/uglify-js": "2.6.29"
+ "@types/uglify-js": "2.6.30"
}
},
"@types/i18next": {
@@ -131,7 +110,7 @@
"integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==",
"dev": true,
"requires": {
- "@types/node": "7.0.48"
+ "@types/node": "7.0.52"
}
},
"@types/less": {
@@ -153,15 +132,15 @@
"dev": true
},
"@types/minimatch": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.1.tgz",
- "integrity": "sha512-rUO/jz10KRSyA9SHoCWQ8WX9BICyj5jZYu1/ucKEJKb4KzLZCKMURdYbadP157Q6Zl1x0vHsrU+Z/O0XlhYQDw==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
"dev": true
},
"@types/mocha": {
- "version": "2.2.44",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.44.tgz",
- "integrity": "sha512-k2tWTQU8G4+iSMvqKi0Q9IIsWAp/n8xzdZS4Q4YVIltApoMA00wFBFdlJnmoaK1/z7B0Cy0yPe6GgXteSmdUNw==",
+ "version": "2.2.46",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.46.tgz",
+ "integrity": "sha512-fwTTP5QLf4xHMkv7ovcKvmlLWX3GrxCa5DRQDOilVyYGCp+arZTAQJCy7/4GKezzYJjfWMpB/Cy4e8nrc9XioA==",
"dev": true
},
"@types/moment-timezone": {
@@ -170,7 +149,7 @@
"integrity": "sha512-FdnK7nZZXkSDO2InIBociTYbsEOLN/NijlNevFcB1vexHuh9lRGwdbClTQAI3eH1clJmwdQ7Q+jOSv9H3EJTJw==",
"dev": true,
"requires": {
- "moment": "2.19.3"
+ "moment": "2.20.1"
}
},
"@types/mssql": {
@@ -179,7 +158,7 @@
"integrity": "sha512-59tGR0k2cygPsK1zxFi6zdCRHfriLWQ7Prsk+LMYXdkFq/4hw3KgcMIOlprGPz+mqIQr8LukV1GYPHK+PQ4EEw==",
"dev": true,
"requires": {
- "@types/node": "7.0.48"
+ "@types/node": "7.0.52"
}
},
"@types/mysql": {
@@ -188,13 +167,13 @@
"integrity": "sha512-5U5pYZd+UMGfDJfmNLYJ6+PBEfjZbHqd0kzDDItFPB2COPmFmlmMsV6t6om/loorx1XMWY3rYTQn7wLipmt4JA==",
"dev": true,
"requires": {
- "@types/node": "7.0.48"
+ "@types/node": "7.0.52"
}
},
"@types/node": {
- "version": "7.0.48",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.48.tgz",
- "integrity": "sha512-LLlXafM3BD52MH056tHxTXO8JFCnpJJQkdzIU3+m8ew+CXJY/5zIXgDNb4TK/QFvlI8QexLS5tL+sE0Qhegr1w==",
+ "version": "7.0.52",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.52.tgz",
+ "integrity": "sha512-jjpyQsKGsOF/wUElNjfPULk+d8PKvJOIXk3IUeBYYmNCy5dMWfrI+JiixYNw8ppKOlcRwWTXFl0B+i5oGrf95Q==",
"dev": true
},
"@types/nodemailer": {
@@ -203,7 +182,7 @@
"integrity": "sha512-6Y+W44okdSco6w3zhahnwJXbONrCrfgi0LnF/aQAdHFnrel4VYwfF0u81NNKHTbweKacu2TVDv/2BIZhgutxIA==",
"dev": true,
"requires": {
- "@types/node": "7.0.48"
+ "@types/node": "7.0.52"
}
},
"@types/public-ip": {
@@ -230,19 +209,13 @@
"integrity": "sha1-uqGPXOQzD8uz6nti9lVQlj2aqgc=",
"dev": true
},
- "@types/source-map": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/@types/source-map/-/source-map-0.5.2.tgz",
- "integrity": "sha512-++w4WmMbk3dS3UeHGzAG+xJOSz5Xqtjys/TBkqG3qp3SeWE7Wwezqe5eB7B51cxUyh4PW7bwVotpsLdBK0D8cw==",
- "dev": true
- },
"@types/ssh2": {
"version": "0.5.35",
"resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.35.tgz",
"integrity": "sha1-1uYNWbf8ItsQq/RzCqdEi6vefjs=",
"dev": true,
"requires": {
- "@types/node": "7.0.48",
+ "@types/node": "7.0.52",
"@types/ssh2-streams": "0.1.2"
}
},
@@ -261,7 +234,7 @@
"integrity": "sha1-eqGLjCRQ8XaZ6eoYp278g4GI1Y0=",
"dev": true,
"requires": {
- "@types/node": "7.0.48"
+ "@types/node": "7.0.52"
}
},
"@types/tmp": {
@@ -271,12 +244,12 @@
"dev": true
},
"@types/uglify-js": {
- "version": "2.6.29",
- "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-2.6.29.tgz",
- "integrity": "sha512-BdFLCZW0GTl31AbqXSak8ss/MqEZ3DN2MH9rkAyGoTuzK7ifGUlX+u0nfbWeTsa7IPcZhtn8BlpYBXSV+vqGhQ==",
+ "version": "2.6.30",
+ "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-2.6.30.tgz",
+ "integrity": "sha512-NjiBNGFl58vHJeijl63w1fWRIjLnrfOvimsXF5b3lTzEzkTV1BnVsbqQeLejg54upsHPWIF63aiub5TEwH619A==",
"dev": true,
"requires": {
- "@types/source-map": "0.5.2"
+ "source-map": "0.6.1"
}
},
"@types/uuid": {
@@ -285,7 +258,7 @@
"integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==",
"dev": true,
"requires": {
- "@types/node": "7.0.48"
+ "@types/node": "7.0.52"
}
},
"acorn": {
@@ -325,15 +298,12 @@
}
},
"ajv": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.0.tgz",
- "integrity": "sha1-6yhAdG6dxIvV4GOjbj/UAMXqtak=",
- "dev": true,
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
"requires": {
"co": "4.6.0",
- "fast-deep-equal": "1.0.0",
- "fast-json-stable-stringify": "2.0.0",
- "json-schema-traverse": "0.3.1"
+ "json-stable-stringify": "1.0.1"
}
},
"align-text": {
@@ -351,6 +321,33 @@
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
},
+ "ansi-cyan": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
+ "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-red": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
+ "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
@@ -361,13 +358,20 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
+ "ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
+ "dev": true
+ },
"arr-diff": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
- "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
+ "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
"dev": true,
"requires": {
- "arr-flatten": "1.1.0"
+ "arr-flatten": "1.1.0",
+ "array-slice": "0.2.3"
}
},
"arr-flatten": {
@@ -387,6 +391,12 @@
"integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
"dev": true
},
+ "array-slice": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+ "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
+ "dev": true
+ },
"array-union": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
@@ -445,9 +455,9 @@
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"aws-sdk": {
- "version": "2.165.0",
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.165.0.tgz",
- "integrity": "sha1-Sub3MRHD6DrLcPraxXkcSJK4TT0=",
+ "version": "2.176.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.176.0.tgz",
+ "integrity": "sha1-JyPBThxiOsRcW4kKP8c27ugIX2c=",
"requires": {
"buffer": "4.9.1",
"crypto-browserify": "1.0.9",
@@ -472,9 +482,9 @@
"integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
},
"azure-storage": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/azure-storage/-/azure-storage-2.6.0.tgz",
- "integrity": "sha1-hHR+5UpL0ZS7lg+J8+/4nWes8c8=",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/azure-storage/-/azure-storage-2.7.0.tgz",
+ "integrity": "sha1-EGw18LpsVR+Si9OUwCbkTQQB/88=",
"requires": {
"browserify-mime": "1.2.9",
"extend": "1.2.1",
@@ -489,15 +499,6 @@
"xmlbuilder": "0.4.3"
},
"dependencies": {
- "ajv": {
- "version": "4.11.8",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
- "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
- "requires": {
- "co": "4.6.0",
- "json-stable-stringify": "1.0.1"
- }
- },
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
@@ -508,11 +509,6 @@
"resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz",
"integrity": "sha1-oPX9bPyDpf5J72mNYOyKYk3UV2w="
},
- "har-schema": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
- "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4="
- },
"har-validator": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
@@ -522,11 +518,6 @@
"har-schema": "1.0.5"
}
},
- "performance-now": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
- "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
- },
"qs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
@@ -847,9 +838,9 @@
}
},
"clone": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
- "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
"dev": true
},
"clone-buffer": {
@@ -901,9 +892,15 @@
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
},
"coffeescript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.1.0.tgz",
- "integrity": "sha512-RuEF4gFUV9QSFPREl8gx6w0vS6Ncnr0Nd71lOmxSHfKQFQI66meE54Y636TACbe55j2Lwi6R1O8lOa0dD550GA=="
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.1.1.tgz",
+ "integrity": "sha512-Tl2z6/rNMqJ2LqWlVxLKwLF9FniwJpweonfSLCwhX8NFCEsGBcFIErtfKd8+t4XHDSYRshj9FXxPX53BT3lC9w=="
+ },
+ "color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "dev": true
},
"colors": {
"version": "1.0.3",
@@ -958,6 +955,15 @@
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz",
"integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o="
},
+ "copy-paste": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/copy-paste/-/copy-paste-1.3.0.tgz",
+ "integrity": "sha1-p+bEocKP3t8rCB5yuX3y75X0ce0=",
+ "requires": {
+ "iconv-lite": "0.4.19",
+ "sync-exec": "0.6.2"
+ }
+ },
"core-js": {
"version": "2.5.3",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz",
@@ -1101,13 +1107,13 @@
"integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk="
},
"dropbox": {
- "version": "2.5.12",
- "resolved": "https://registry.npmjs.org/dropbox/-/dropbox-2.5.12.tgz",
- "integrity": "sha1-nwC7g10ZjAQQaqYL8mL18ks770I=",
+ "version": "2.5.13",
+ "resolved": "https://registry.npmjs.org/dropbox/-/dropbox-2.5.13.tgz",
+ "integrity": "sha1-VGwTDh2Ff3gDXN0mUIVK1SBukHM=",
"requires": {
- "es6-promise": "4.1.1",
- "mime": "2.0.3",
- "superagent": "3.8.1",
+ "es6-promise": "4.2.2",
+ "mime": "2.2.0",
+ "superagent": "3.8.2",
"superagent-proxy": "1.0.2"
}
},
@@ -1196,16 +1202,16 @@
}
},
"es6-promise": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz",
- "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng=="
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.2.tgz",
+ "integrity": "sha512-LSas5vsuA6Q4nEdf9wokY5/AJYXry98i0IzXsv49rYsgDGDNDPbqAYR1Pe23iFxygfbGZNR/5VrHXBCh2BhvUQ=="
},
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"requires": {
- "es6-promise": "4.1.1"
+ "es6-promise": "4.2.2"
}
},
"escape-string-regexp": {
@@ -1297,12 +1303,20 @@
"integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
},
"extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
+ "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
"dev": true,
"requires": {
- "is-extendable": "0.1.1"
+ "kind-of": "1.1.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
+ "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
+ "dev": true
+ }
}
},
"extglob": {
@@ -1333,12 +1347,13 @@
"integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A="
},
"fancy-log": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz",
- "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz",
+ "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=",
"dev": true,
"requires": {
- "chalk": "1.1.3",
+ "ansi-gray": "0.1.1",
+ "color-support": "1.1.3",
"time-stamp": "1.1.0"
}
},
@@ -1452,9 +1467,9 @@
}
},
"fs-extra": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz",
- "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
"requires": {
"graceful-fs": "4.1.11",
"jsonfile": "4.0.0",
@@ -1792,14 +1807,14 @@
}
},
"gulp-filter": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-5.0.1.tgz",
- "integrity": "sha512-5olRzAhFdXB2klCu1lnazP65aO9YdA/5WfC9VdInIc8PrUeDIoZfaA3Edb0yUBGhVdHv4eHKL9Fg5tUoEJ9z5A==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-5.1.0.tgz",
+ "integrity": "sha1-oF4Rr/sHz33PQafeHLe2OsN4PnM=",
"dev": true,
"requires": {
- "gulp-util": "3.0.8",
"multimatch": "2.1.0",
- "streamfilter": "1.0.5"
+ "plugin-error": "0.1.2",
+ "streamfilter": "1.0.7"
}
},
"gulp-gunzip": {
@@ -1812,12 +1827,6 @@
"vinyl": "0.4.6"
},
"dependencies": {
- "clone": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
- "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
- "dev": true
- },
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
@@ -1851,16 +1860,6 @@
"readable-stream": "1.0.34",
"xtend": "4.0.1"
}
- },
- "vinyl": {
- "version": "0.4.6",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
- "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
- "dev": true,
- "requires": {
- "clone": "0.2.0",
- "clone-stats": "0.0.1"
- }
}
}
},
@@ -1877,18 +1876,18 @@
"vinyl": "2.0.2"
},
"dependencies": {
+ "clone": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
+ "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
+ "dev": true
+ },
"clone-stats": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
"integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
"dev": true
},
- "replace-ext": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
- "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
- "dev": true
- },
"request": {
"version": "2.79.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
@@ -1947,6 +1946,18 @@
"vinyl": "1.2.0"
},
"dependencies": {
+ "clone": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
+ "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
+ "dev": true
+ },
+ "replace-ext": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
+ "dev": true
+ },
"vinyl": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
@@ -1996,7 +2007,7 @@
"beeper": "1.1.1",
"chalk": "1.1.3",
"dateformat": "2.2.0",
- "fancy-log": "1.3.0",
+ "fancy-log": "1.3.2",
"gulplog": "1.0.0",
"has-gulplog": "0.1.0",
"lodash._reescape": "3.0.0",
@@ -2009,6 +2020,37 @@
"replace-ext": "0.0.1",
"through2": "2.0.3",
"vinyl": "0.5.3"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
+ "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
+ "dev": true
+ },
+ "replace-ext": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
+ "dev": true
+ },
+ "vinyl": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
+ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.3",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ }
}
},
"gulp-vinyl-zip": {
@@ -2047,12 +2089,6 @@
"inherits": "2.0.3"
}
},
- "replace-ext": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
- "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
- "dev": true
- },
"vinyl": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz",
@@ -2079,10 +2115,9 @@
}
},
"har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "dev": true
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+ "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4="
},
"har-validator": {
"version": "2.0.6",
@@ -2091,7 +2126,7 @@
"requires": {
"chalk": "1.1.3",
"commander": "2.12.2",
- "is-my-json-valid": "2.16.1",
+ "is-my-json-valid": "2.17.1",
"pinkie-promise": "2.0.1"
}
},
@@ -2292,9 +2327,9 @@
}
},
"i18next": {
- "version": "10.2.1",
- "resolved": "https://registry.npmjs.org/i18next/-/i18next-10.2.1.tgz",
- "integrity": "sha512-7h/ILxepsAjQCMabPvevDZcn+Nxc4/5v52NkMtrzgVOe14BGlGQDs2ygRPki+45VFmRsz2e/In6veRIKQEBGkQ=="
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-10.2.2.tgz",
+ "integrity": "sha512-sWazkOEWjPxfcFEATDaZsHNkIbcCTFzee+qNoJyBWl1jHz0Haabhfk+/j2KVrZcDp2v7tZ9FDSUj3kh6G/IF0Q=="
},
"iconv-lite": {
"version": "0.4.19",
@@ -2416,9 +2451,9 @@
}
},
"is-my-json-valid": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz",
- "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==",
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz",
+ "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==",
"requires": {
"generate-function": "2.0.0",
"generate-object-property": "1.2.0",
@@ -2999,9 +3034,9 @@
"dev": true
},
"marked": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.7.tgz",
- "integrity": "sha512-zBEP4qO1YQp5aXHt8S5wTiOv9i2X74V/LQL0zhUNvVaklt6Ywa6lChxIvS+ibYlCGgADwKwZFhjC3+XfpsvQvQ=="
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.9.tgz",
+ "integrity": "sha512-nW5u0dxpXxHfkHzzrveY45gCbi+R4PaO4WRZYqZNl+vB0hVGeqlFn0aOg1c8AKL63TrNFn9Bm2UP4AdiZ9TPLw=="
},
"md5.js": {
"version": "1.3.4",
@@ -3058,6 +3093,15 @@
"regex-cache": "0.4.4"
},
"dependencies": {
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0"
+ }
+ },
"is-extglob": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
@@ -3076,9 +3120,9 @@
}
},
"mime": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.0.3.tgz",
- "integrity": "sha512-TrpAd/vX3xaLPDgVRm6JkZwLR0KHfukMdU2wTEbqMDdCnY6Yo3mE+mjs9YE6oMNw2QRfXVeBEYpmpO94BIqiug=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz",
+ "integrity": "sha512-0Qz9uF1ATtl8RKJG4VRfOymh7PyEor6NbrI/61lRfuRe4vx9SNATrvAeTj2EWVRKjEQGskrzWkJBBY5NbaVHIA=="
},
"mime-db": {
"version": "1.30.0",
@@ -3144,9 +3188,9 @@
}
},
"mocha": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.0.1.tgz",
- "integrity": "sha512-evDmhkoA+cBNiQQQdSKZa2b9+W2mpLoj50367lhy+Klnx9OV8XlCIhigUnn1gaTFLQCa0kdNhEGDr0hCXOQFDw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz",
+ "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==",
"dev": true,
"requires": {
"browser-stdout": "1.3.0",
@@ -3179,16 +3223,16 @@
}
},
"moment": {
- "version": "2.19.3",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.3.tgz",
- "integrity": "sha1-vbmdJw1tf9p4zA+6zoVeJ/59pp8="
+ "version": "2.20.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz",
+ "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg=="
},
"moment-timezone": {
"version": "0.5.14",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.14.tgz",
"integrity": "sha1-TrOP+VOLgBCLpGekWPPtQmjM/LE=",
"requires": {
- "moment": "2.19.3"
+ "moment": "2.20.1"
}
},
"ms": {
@@ -3337,9 +3381,9 @@
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
},
"object-assign": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
- "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true
},
"object.omit": {
@@ -3551,10 +3595,9 @@
"dev": true
},
"performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "dev": true
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+ "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
},
"pify": {
"version": "3.0.0",
@@ -3579,6 +3622,27 @@
"resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
"integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8="
},
+ "plugin-error": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
+ "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
+ "dev": true,
+ "requires": {
+ "ansi-cyan": "0.1.1",
+ "ansi-red": "0.1.1",
+ "arr-diff": "1.1.0",
+ "arr-union": "2.1.0",
+ "extend-shallow": "1.1.4"
+ },
+ "dependencies": {
+ "arr-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
+ "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
+ "dev": true
+ }
+ }
+ },
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
@@ -3964,161 +4028,42 @@
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
},
"replace-ext": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
- "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
"dev": true
},
"request": {
- "version": "2.83.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
- "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
- "dev": true,
+ "version": "2.76.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.76.0.tgz",
+ "integrity": "sha1-vkRQWv73A2CgQ2lVEGvjlF2VVg4=",
"requires": {
- "aws-sign2": "0.7.0",
+ "aws-sign2": "0.6.0",
"aws4": "1.6.0",
- "caseless": "0.12.0",
+ "caseless": "0.11.0",
"combined-stream": "1.0.5",
"extend": "3.0.1",
"forever-agent": "0.6.1",
- "form-data": "2.3.1",
- "har-validator": "5.0.3",
- "hawk": "6.0.2",
- "http-signature": "1.2.0",
+ "form-data": "2.1.4",
+ "har-validator": "2.0.6",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.17",
+ "node-uuid": "1.4.8",
"oauth-sign": "0.8.2",
- "performance-now": "2.1.0",
- "qs": "6.5.1",
- "safe-buffer": "5.1.1",
+ "qs": "6.3.2",
"stringstream": "0.0.5",
"tough-cookie": "2.3.3",
- "tunnel-agent": "0.6.0",
- "uuid": "3.1.0"
+ "tunnel-agent": "0.4.3"
},
"dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "dev": true
- },
- "boom": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
- "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
- "dev": true,
- "requires": {
- "hoek": "4.2.0"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "dev": true
- },
- "cryptiles": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
- "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
- "dev": true,
- "requires": {
- "boom": "5.2.0"
- },
- "dependencies": {
- "boom": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
- "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
- "dev": true,
- "requires": {
- "hoek": "4.2.0"
- }
- }
- }
- },
- "form-data": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
- "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
- "dev": true,
- "requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.5",
- "mime-types": "2.1.17"
- }
- },
- "har-validator": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
- "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
- "dev": true,
- "requires": {
- "ajv": "5.5.0",
- "har-schema": "2.0.0"
- }
- },
- "hawk": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
- "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
- "dev": true,
- "requires": {
- "boom": "4.3.1",
- "cryptiles": "3.1.2",
- "hoek": "4.2.0",
- "sntp": "2.1.0"
- }
- },
- "hoek": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
- "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==",
- "dev": true
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "jsprim": "1.4.1",
- "sshpk": "1.13.1"
- }
- },
- "qs": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
- "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
- "dev": true
- },
- "sntp": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
- "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
- "dev": true,
- "requires": {
- "hoek": "4.2.0"
- }
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
- "requires": {
- "safe-buffer": "5.1.1"
- }
+ "node-uuid": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
+ "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc="
}
}
},
@@ -4379,9 +4324,9 @@
"dev": true
},
"streamfilter": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.5.tgz",
- "integrity": "sha1-h1BxEb644phFFxe1Ec/tjwAqv1M=",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz",
+ "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==",
"dev": true,
"requires": {
"readable-stream": "2.3.3"
@@ -4444,9 +4389,9 @@
}
},
"superagent": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.1.tgz",
- "integrity": "sha512-VMBFLYgFuRdfeNQSMLbxGSLfmXL/xc+OO+BZp41Za/NRDBet/BNbkRJrYzCUu0u4GU0i/ml2dtT8b9qgkw9z6Q==",
+ "version": "3.8.2",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz",
+ "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==",
"requires": {
"component-emitter": "1.2.1",
"cookiejar": "2.1.1",
@@ -4506,6 +4451,12 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
},
+ "sync-exec": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/sync-exec/-/sync-exec-0.6.2.tgz",
+ "integrity": "sha1-cX0izFPwzh3vVZQ2LzqJouu5EQU=",
+ "optional": true
+ },
"tar": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
@@ -4586,6 +4537,17 @@
"dev": true,
"requires": {
"extend-shallow": "2.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
}
},
"token-stream": {
@@ -4635,9 +4597,9 @@
"dev": true
},
"uglify-js": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.2.2.tgz",
- "integrity": "sha512-++1NO/zZIEdWf6cDIGceSJQPX31SqIpbVAHwFG5+240MtZqPG/NIPoinj8zlXQtAfMBqEt1Jyv2FiLP3n9gVhQ==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.4.tgz",
+ "integrity": "sha512-hfIwuAQI5dlXP30UtdmWoYF9k+ypVqBXIdmd6ZKBiaNHHvA8ty7ZloMe3+7S5AEKVkxHbjByl4DfRHQ7QpZquw==",
"requires": {
"commander": "2.12.2",
"source-map": "0.6.1"
@@ -4777,14 +4739,13 @@
}
},
"vinyl": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
- "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
"dev": true,
"requires": {
- "clone": "1.0.3",
- "clone-stats": "0.0.1",
- "replace-ext": "0.0.1"
+ "clone": "0.2.0",
+ "clone-stats": "0.0.1"
}
},
"vinyl-fs": {
@@ -4812,10 +4773,16 @@
"vinyl": "1.2.0"
},
"dependencies": {
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "clone": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
+ "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
+ "dev": true
+ },
+ "replace-ext": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
"dev": true
},
"vinyl": {
@@ -4832,65 +4799,13 @@
}
},
"vinyl-source-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.0.tgz",
- "integrity": "sha1-RMvlEIIFJ53rDFZTwJSiiHk4sas=",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.2.tgz",
+ "integrity": "sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=",
"dev": true,
"requires": {
- "through2": "0.6.5",
+ "through2": "2.0.3",
"vinyl": "0.4.6"
- },
- "dependencies": {
- "clone": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
- "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
- "dev": true
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- },
- "through2": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
- "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
- "dev": true,
- "requires": {
- "readable-stream": "1.0.34",
- "xtend": "4.0.1"
- }
- },
- "vinyl": {
- "version": "0.4.6",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
- "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
- "dev": true,
- "requires": {
- "clone": "0.2.0",
- "clone-stats": "0.0.1"
- }
- }
}
},
"void-elements": {
@@ -4899,25 +4814,202 @@
"integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
},
"vscode": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.9.tgz",
- "integrity": "sha512-xhSh410NntYViiBYIPimAwF0U6NZgORtqQenlpTI/qKBGwHMtZSCJcL3/JIhfCw43HBXqPg59kA947OT3UvZKQ==",
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.10.tgz",
+ "integrity": "sha512-MvFXXSGuhw0Q6GC6dQrnRc0ES+63wpttGIoYGBMQnoS9JFCCNC/rWfX0lBCHJyuKL2Q8CYg0ROsMEHbHVwEtVw==",
"dev": true,
"requires": {
"glob": "7.1.2",
"gulp-chmod": "2.0.0",
- "gulp-filter": "5.0.1",
+ "gulp-filter": "5.1.0",
"gulp-gunzip": "1.0.0",
"gulp-remote-src": "0.4.3",
"gulp-symdest": "1.1.0",
"gulp-untar": "0.0.6",
"gulp-vinyl-zip": "2.1.0",
- "mocha": "4.0.1",
+ "mocha": "4.1.0",
"request": "2.83.0",
"semver": "5.4.1",
"source-map-support": "0.5.0",
"url-parse": "1.2.0",
- "vinyl-source-stream": "1.1.0"
+ "vinyl-source-stream": "1.1.2"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "fast-deep-equal": "1.0.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "dev": true
+ },
+ "boom": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
+ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "cryptiles": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
+ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
+ "dev": true,
+ "requires": {
+ "boom": "5.2.0"
+ },
+ "dependencies": {
+ "boom": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
+ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ }
+ }
+ },
+ "form-data": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
+ "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
+ "dev": true,
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.17"
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
+ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "dev": true,
+ "requires": {
+ "ajv": "5.5.2",
+ "har-schema": "2.0.0"
+ }
+ },
+ "hawk": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
+ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
+ "dev": true,
+ "requires": {
+ "boom": "4.3.1",
+ "cryptiles": "3.1.2",
+ "hoek": "4.2.0",
+ "sntp": "2.1.0"
+ }
+ },
+ "hoek": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
+ "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==",
+ "dev": true
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.13.1"
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+ "dev": true
+ },
+ "request": {
+ "version": "2.83.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
+ "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "0.7.0",
+ "aws4": "1.6.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.3.1",
+ "har-validator": "5.0.3",
+ "hawk": "6.0.2",
+ "http-signature": "1.2.0",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.17",
+ "oauth-sign": "0.8.2",
+ "performance-now": "2.1.0",
+ "qs": "6.5.1",
+ "safe-buffer": "5.1.1",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.3",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.1.0"
+ }
+ },
+ "sntp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
+ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
+ "dev": true,
+ "requires": {
+ "hoek": "4.2.0"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ }
}
},
"window-size": {
diff --git a/package.json b/package.json
index b12392b..ee59d9c 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "vscode-deploy-reloaded",
"displayName": "Deploy (Reloaded)",
"description": "Deploys files of a workspace to a destination.",
- "version": "0.20.0",
+ "version": "0.21.0",
"publisher": "mkloubert",
"engines": {
"vscode": "^1.19.0"
@@ -54539,23 +54539,24 @@
"test": "npm run compile && node ./node_modules/vscode/bin/test"
},
"devDependencies": {
+ "@types/copy-paste": "^1.1.30",
"@types/filesize": "^3.2.15",
- "@types/fs-extra": "^4.0.5",
+ "@types/fs-extra": "^4.0.7",
"@types/ftp": "^0.3.29",
- "@types/glob": "^5.0.33",
+ "@types/glob": "^5.0.34",
"@types/html-entities": "^1.2.16",
- "@types/html-minifier": "^1.1.30",
+ "@types/html-minifier": "^1.1.31",
"@types/i18next": "^8.4.2",
"@types/is-stream": "^1.1.0",
"@types/less": "0.0.32",
"@types/marked": "^0.3.0",
"@types/mime-types": "^2.1.0",
- "@types/minimatch": "^3.0.1",
- "@types/mocha": "^2.2.42",
+ "@types/minimatch": "^3.0.3",
+ "@types/mocha": "^2.2.46",
"@types/moment-timezone": "^0.5.3",
"@types/mssql": "^4.0.6",
"@types/mysql": "^2.15.2",
- "@types/node": "^7.0.43",
+ "@types/node": "^7.0.52",
"@types/nodemailer": "^4.3.1",
"@types/public-ip": "^2.3.0",
"@types/pug": "^2.0.4",
@@ -54564,7 +54565,7 @@
"@types/tmp": "0.0.33",
"@types/uuid": "^3.4.3",
"typescript": "^2.6.1",
- "vscode": "^1.1.6"
+ "vscode": "^1.1.10"
},
"icon": "icon.png",
"badges": [
@@ -54586,29 +54587,30 @@
},
"readmeFilename": "README.md",
"dependencies": {
- "@slack/client": "^3.14.2",
- "aws-sdk": "^2.165.0",
- "azure-storage": "^2.6.0",
- "coffeescript": "^2.1.0",
+ "@slack/client": "^3.15.0",
+ "aws-sdk": "^2.176.0",
+ "azure-storage": "^2.7.0",
+ "coffeescript": "^2.1.1",
"compare-versions": "^3.1.0",
- "dropbox": "^2.5.12",
+ "copy-paste": "^1.3.0",
+ "dropbox": "^2.5.13",
"filesize": "^3.5.11",
- "fs-extra": "^4.0.2",
+ "fs-extra": "^4.0.3",
"ftp": "^0.3.10",
"glob": "^7.1.2",
"hexy": "^0.2.10",
"html-entities": "^1.2.1",
"html-minifier": "^3.5.8",
- "i18next": "^10.2.1",
+ "i18next": "^10.2.2",
"is-stream": "^1.1.0",
"isbinaryfile": "^3.0.2",
"jsftp": "^2.1.2",
"less": "^2.7.3",
- "marked": "^0.3.7",
+ "marked": "^0.3.9",
"merge-deep": "^3.0.0",
"mime-types": "^2.1.17",
"minimatch": "^3.0.4",
- "moment": "^2.19.3",
+ "moment": "^2.20.1",
"moment-timezone": "^0.5.14",
"mssql": "^4.1.0",
"mysql": "^2.15.0",
@@ -54623,7 +54625,7 @@
"sanitize-filename": "^1.6.1",
"ssh2-sftp-client": "^2.0.1",
"tmp": "0.0.33",
- "uglify-js": "^3.2.2",
+ "uglify-js": "^3.3.4",
"uuid": "^3.1.0"
}
}
diff --git a/src/clients/azureblob.ts b/src/clients/azureblob.ts
index ce08c86..9feb281 100644
--- a/src/clients/azureblob.ts
+++ b/src/clients/azureblob.ts
@@ -205,6 +205,7 @@ export class AzureBlobClient extends deploy_clients.AsyncFileListBase {
let existingDir = DIRS_ALREADY_ADDED[DIR];
if (!existingDir) {
const DI: deploy_files.DirectoryInfo = {
+ //TODO: exportPath: false,
name: DIR,
path: path,
type: deploy_files.FileSystemType.Directory,
@@ -223,6 +224,7 @@ export class AzureBlobClient extends deploy_clients.AsyncFileListBase {
path + '/' + NAME_WITHOUT_PATH
);
},
+ //TODO: exportPath: false,
name: NAME_WITHOUT_PATH,
path: path,
size: parseInt( deploy_helpers.toStringSafe(R.contentLength).trim() ),
diff --git a/src/clients/dropbox.ts b/src/clients/dropbox.ts
index 0d0650f..6ba14cd 100644
--- a/src/clients/dropbox.ts
+++ b/src/clients/dropbox.ts
@@ -115,6 +115,7 @@ export class DropBoxClient extends deploy_clients.AsyncFileListBase {
)
);
},
+ //TODO: exportPath: false,
name: ENTRY.name,
path: normalizePath(path),
size: ENTRY.size,
@@ -129,6 +130,7 @@ export class DropBoxClient extends deploy_clients.AsyncFileListBase {
case 'folder':
{
const DI: deploy_files.DirectoryInfo = {
+ //TODO: exportPath: false,
name: ENTRY.name,
path: normalizePath(path),
type: deploy_files.FileSystemType.Directory,
@@ -141,6 +143,7 @@ export class DropBoxClient extends deploy_clients.AsyncFileListBase {
default:
{
const FSI: deploy_files.FileSystemInfo = {
+ //TODO: exportPath: false,
name: ENTRY.name,
path: normalizePath(path),
};
diff --git a/src/clients/ftp.ts b/src/clients/ftp.ts
index a2eae29..b053f5a 100644
--- a/src/clients/ftp.ts
+++ b/src/clients/ftp.ts
@@ -418,10 +418,11 @@ class FtpClient extends FTPClientBase {
}
}
},
- time: time,
+ //TODO: exportPath: false,
name: ITEM.name,
path: dir,
size: size,
+ time: time,
type: deploy_files.FileSystemType.File,
};
@@ -433,9 +434,10 @@ class FtpClient extends FTPClientBase {
// folder
{
const DI: deploy_files.DirectoryInfo = {
- time: time,
+ //TODO: exportPath: false,
name: ITEM.name,
path: dir,
+ time: time,
type: deploy_files.FileSystemType.Directory,
};
@@ -447,6 +449,7 @@ class FtpClient extends FTPClientBase {
// unknown
{
const FSI: deploy_files.FileSystemInfo = {
+ //TODO: exportPath: false,
time: time,
name: ITEM.name,
path: dir,
@@ -777,10 +780,11 @@ class JsFTPClient extends FTPClientBase {
}
}
},
- time: time,
+ //TODO: exportPath: false,
name: ITEM.name,
path: dir,
size: size,
+ time: time,
type: deploy_files.FileSystemType.File,
};
@@ -792,9 +796,10 @@ class JsFTPClient extends FTPClientBase {
// folder
{
const DI: deploy_files.DirectoryInfo = {
- time: time,
+ //TODO: exportPath: false,
name: ITEM.name,
path: dir,
+ time: time,
type: deploy_files.FileSystemType.Directory,
};
@@ -806,9 +811,10 @@ class JsFTPClient extends FTPClientBase {
// unknown
{
const FSI: deploy_files.FileSystemInfo = {
- time: time,
+ //TODO: exportPath: false,
name: ITEM.name,
path: dir,
+ time: time,
};
newFSIItem = FSI;
diff --git a/src/clients/s3bucket.ts b/src/clients/s3bucket.ts
index 74b0eb8..d956a6d 100644
--- a/src/clients/s3bucket.ts
+++ b/src/clients/s3bucket.ts
@@ -391,6 +391,7 @@ export class S3BucketClient extends deploy_clients.AsyncFileListBase {
let existingDir = DIRS_ALREADY_ADDED[DIR];
if (!existingDir) {
const DI: deploy_files.DirectoryInfo = {
+ //TODO: exportPath: false,
name: DIR,
path: path,
type: deploy_files.FileSystemType.Directory,
@@ -409,6 +410,7 @@ export class S3BucketClient extends deploy_clients.AsyncFileListBase {
path + '/' + KEY_WITHOUT_PATH
);
},
+ //TODO: exportPath: false,
name: KEY_WITHOUT_PATH,
path: path,
size: O.Size,
diff --git a/src/clients/sftp.ts b/src/clients/sftp.ts
index 7b97e15..e89848e 100644
--- a/src/clients/sftp.ts
+++ b/src/clients/sftp.ts
@@ -227,6 +227,7 @@ export class SFTPClient extends deploy_clients.AsyncFileListBase {
if ('d' === FI.type) {
RESULT.push(
{
+ //TODO: exportPath: false,
name: FI.name,
path: normalizePath(path),
size: FI.size,
@@ -256,6 +257,7 @@ export class SFTPClient extends deploy_clients.AsyncFileListBase {
}
}
},
+ //TODO: exportPath: false,
name: FI.name,
path: normalizePath(path),
size: FI.size,
@@ -268,6 +270,7 @@ export class SFTPClient extends deploy_clients.AsyncFileListBase {
else {
RESULT.push(
{
+ //TODO: exportPath: false,
name: FI.name,
path: normalizePath(path),
size: FI.size,
diff --git a/src/clients/slack.ts b/src/clients/slack.ts
index 22e139b..a945f72 100644
--- a/src/clients/slack.ts
+++ b/src/clients/slack.ts
@@ -85,6 +85,7 @@ export class SlackClient extends deploy_clients.AsyncFileListBase {
return await deploy_http.readBody(RESPONSE);
},
+ //TODO: exportPath: false,
internal_name: obj.id,
name: obj.name,
path: path,
@@ -237,6 +238,7 @@ export class SlackClient extends deploy_clients.AsyncFileListBase {
}
const DI: deploy_files.DirectoryInfo = {
+ //TODO: exportPath: false,
icon: 'book',
internal_name: CHANNEL.id,
name: CHANNEL.name,
diff --git a/src/files.ts b/src/files.ts
index 32de4ec..c8fb3c0 100644
--- a/src/files.ts
+++ b/src/files.ts
@@ -15,9 +15,21 @@
* along with this program. If not, see .
*/
+import * as deploy_helpers from './helpers';
+import * as Path from 'path';
import * as Moment from 'moment';
+/**
+ * Additional options for 'createDefaultDirectoryInfo()' function.
+ */
+export interface CreateDefaultDirectoryInfoOptions {
+ /**
+ * The custom export path.
+ */
+ readonly exportPath?: string;
+}
+
/**
* Information about a directory.
*/
@@ -52,6 +64,11 @@ export interface FileSystemInfo {
* An optional method to compare that object with another.
*/
readonly compareTo?: (other: FileSystemInfo) => number;
+ /**
+ * A value that can be used to export the path
+ * to clipboard, e.g.
+ */
+ readonly exportPath?: string;
/**
* A custom icon to use.
*/
@@ -95,3 +112,49 @@ export enum FileSystemType {
*/
File = 2,
}
+
+
+/**
+ * Creates a default directory info object from a path.
+ *
+ * @param {string} dir The path of the directory.
+ * @param {CreateDefaultDirectoryInfoOptions} [opts] Additional options.
+ *
+ * @return {DirectoryInfo} The created object.
+ */
+export function createDefaultDirectoryInfo(dir: string, opts?: CreateDefaultDirectoryInfoOptions): DirectoryInfo {
+ dir = deploy_helpers.normalizePath(dir);
+
+ if (!opts) {
+ opts = {};
+ }
+
+ let name: string;
+ let path: string;
+ let exportPath = deploy_helpers.toStringSafe(opts.exportPath);
+ if (!deploy_helpers.isEmptyString(dir)) {
+ path = Path.dirname(dir);
+ if ('.' === path) {
+ path = '';
+ }
+
+ name = Path.basename(dir);
+ }
+
+ if (deploy_helpers.isEmptyString(name)) {
+ name = '';
+ }
+ if (deploy_helpers.isEmptyString(path)) {
+ path = '';
+ }
+ if (deploy_helpers.isEmptyString(exportPath)) {
+ exportPath = '/';
+ }
+
+ return {
+ exportPath: exportPath,
+ name: name,
+ path: path,
+ type: FileSystemType.Directory,
+ };
+}
diff --git a/src/i18.ts b/src/i18.ts
index ecddbea..fbb864e 100644
--- a/src/i18.ts
+++ b/src/i18.ts
@@ -179,6 +179,13 @@ export interface Translation {
file?: string;
};
listDirectory?: {
+ copyPathToClipboard?: {
+ description?: string;
+ errors?: {
+ failed?: string;
+ };
+ label?: string;
+ };
currentDirectory?: string;
directoryIsEmpty?: string;
errors?: {
diff --git a/src/lang/de.ts b/src/lang/de.ts
index d6c9431..ccb65ae 100644
--- a/src/lang/de.ts
+++ b/src/lang/de.ts
@@ -36,7 +36,7 @@ export const translation: Translation = {
label: "Aktuelle Datei ...",
},
errors: {
- operationFailed: "Konnte Vergleich nicht durchführen (s. Debugkonsole 'STRG + SHIFT + Y')!",
+ operationFailed: "Konnte Vergleich nicht durchführen (s. Debugkonsole 'STRG/CMD + SHIFT + Y')!",
},
title: "Vergleich{0:trim,surround,leading_space}",
},
@@ -67,7 +67,7 @@ export const translation: Translation = {
errors: {
invalidWorkspace: "Die Datei{0:trim,surround,leading_space} is nicht Teil des Arbeitsbereiches{1:trim,surround,leading_space}!",
invalidWorkspaceForPackage: "Das Paket{0:trim,surround,leading_space} ist nicht Teil des Arbeitsbereiches{1:trim,surround,leading_space}!",
- operationFailed: "Konnte das Löschen nicht durchführen (s. Debugkonsole 'STRG + SHIFT + Y')!",
+ operationFailed: "Konnte das Löschen nicht durchführen (s. Debugkonsole 'STRG/CMD + SHIFT + Y')!",
},
finishedOperation: "Das Löschen der Dateien in{0:trim,surround,leading_space} wurde erfolgreich abgeschlossen.",
finishedOperationWithErrors: "[FEHLER] Konnte Dateien nicht in{0:trim,surround,leading_space} löschen:{1:trim,surround,leading_space}",
@@ -106,7 +106,7 @@ export const translation: Translation = {
errors: {
invalidWorkspace: "Die Datei{0:trim,surround,leading_space} kann nicht über den Arbeitsbereich{1:trim,surround,leading_space} bereitgestellt werden!",
invalidWorkspaceForPackage: "Das Paket{0:trim,surround,leading_space} kann nicht über den Arbeitsbereich{1:trim,surround,leading_space} bereitgestellt werden!",
- operationFailed: "Konnte das Bereitstellen nicht durchführen (s. Debugkonsole 'STRG + SHIFT + Y')!",
+ operationFailed: "Konnte das Bereitstellen nicht durchführen (s. Debugkonsole 'STRG/CMD + SHIFT + Y')!",
operationToTargetFailed: "Das Bereitstellen der Datei(en) ins Ziel{0:trim,surround,leading_space} schlug fehl:{1:trim,surround,leading_space}",
},
finishedOperation: "Das Bereitstellen der Dateien in{0:trim,surround,leading_space} wurde erfolgreich abgeschlossen.",
@@ -172,10 +172,17 @@ export const translation: Translation = {
file: "{0:trim,surround,ending_space}ist keine Datei!",
},
listDirectory: {
+ copyPathToClipboard: {
+ description: "Kopiert den aktuellen Pfad in die Zwischenablage",
+ errors: {
+ failed: "Konnte Pfad nicht in Zwischenablage speichern (s. Debugkonsole 'STRG/CMD + SHIFT + Y'): {0}",
+ },
+ label: "Pfad kopieren ...",
+ },
currentDirectory: "Aktuelles Verzeichnis:{0:trim,surround,leading_space} ({1:trim,surround})",
directoryIsEmpty: "(Verzeichnis ist leer)",
errors: {
- operationFailed: "Konnte das Auflisten eines Verzeichnisses nicht durchführen (s. Debugkonsole 'STRG + SHIFT + Y')!",
+ operationFailed: "Konnte das Auflisten eines Verzeichnisses nicht durchführen (s. Debugkonsole 'STRG/CMD + SHIFT + Y')!",
},
lastModified: "Letzte Änderung:{0:trim,leading_space}",
loading: "Lade Verzeichnis{0:trim,surround,leading_space} ({1:trim} / {2:trim})...",
@@ -221,8 +228,8 @@ export const translation: Translation = {
invalidDirectory: "{0:trim,surround,ending_space}ist ein ungültiges Verzeichnis!",
},
errors: {
- initializationFailed: "Die Initialisierung des Plugins{0:trim,surround,leading_space} ist fehlgeschlagen (s. Debugkonsole 'STRG + SHIFT + Y')!",
- loadingFailed: "Fehler beim Laden von{0:trim,surround,leading_space} (s. Debugkonsole 'STRG + SHIFT + Y')!",
+ initializationFailed: "Die Initialisierung des Plugins{0:trim,surround,leading_space} ist fehlgeschlagen (s. Debugkonsole 'STRG/CMD + SHIFT + Y')!",
+ loadingFailed: "Fehler beim Laden von{0:trim,surround,leading_space} (s. Debugkonsole 'STRG/CMD + SHIFT + Y')!",
noFactoryFunction: "Das Plugin-Modul{0:trim,surround,leading_space} beinhaltet keine Factory-Funktion!",
noModule: "Das Plugin{0:trim,surround,leading_space} enthält kein Modul!",
noneFoundIn: "Es wurden keine Plugins in{0:trim,surround,leading_space} gefunden!",
@@ -304,7 +311,7 @@ export const translation: Translation = {
errors: {
invalidWorkspace: "Die Datei{0:trim,surround,leading_space} kann nicht in den Arbeitsbereich{1:trim,surround,leading_space} geladen werden!",
invalidWorkspaceForPackage: "Das Paket{0:trim,surround,leading_space} kann nicht in den Arbeitsbereich{1:trim,surround,leading_space} geladen werden!",
- operationFailed: "Konnte das Laden nicht durchführen (s. Debugkonsole 'STRG + SHIFT + Y')!",
+ operationFailed: "Konnte das Laden nicht durchführen (s. Debugkonsole 'STRG/CMD + SHIFT + Y')!",
operationForSourceFailed: "Das Laden der Datei(en) aus der Quelle{0:trim,surround,leading_space} schlug fehl:{1:trim,surround,leading_space}",
},
finishedOperation: "Das Laden der Dateien von{0:trim,surround,leading_space} wurde erfolgreich abgeschlossen.",
@@ -356,7 +363,7 @@ export const translation: Translation = {
},
switches: {
errors: {
- operationFailed: "Schalter-Operation ist fehlgeschlagen (s. Debugkonsole 'STRG + SHIFT + Y')!",
+ operationFailed: "Schalter-Operation ist fehlgeschlagen (s. Debugkonsole 'STRG/CMD + SHIFT + Y')!",
},
},
sync: {
@@ -453,7 +460,7 @@ export const translation: Translation = {
selectTarget: "Wählen Sie ein Ziel ...",
},
errors: {
- operationFailed: "Konnte Funktion nicht ausführen (s. Debugkonsole 'STRG + SHIFT + Y')!",
+ operationFailed: "Konnte Funktion nicht ausführen (s. Debugkonsole 'STRG/CMD + SHIFT + Y')!",
},
npm: {
description: "Werkzeuge für das einfache Arbeiten mit 'npm'",
@@ -543,7 +550,7 @@ export const translation: Translation = {
workspaces: {
active: {
errors: {
- selectWorkspaceFailed: "Das Selektieren des aktiven Arbeitsbereiches ist fehlgeschlagen (s. Debugkonsole 'STRG + SHIFT + Y')!",
+ selectWorkspaceFailed: "Das Selektieren des aktiven Arbeitsbereiches ist fehlgeschlagen (s. Debugkonsole 'STRG/CMD + SHIFT + Y')!",
},
noneFound: "Keine aktiven Arbeitsbereiche gefunden!",
selectWorkspace: "Wählen Sie den aktiven Arbeitsbereich aus ...",
diff --git a/src/lang/en.ts b/src/lang/en.ts
index e4f69d1..0242c11 100644
--- a/src/lang/en.ts
+++ b/src/lang/en.ts
@@ -36,7 +36,7 @@ export const translation: Translation = {
label: "Current file ...",
},
errors: {
- operationFailed: "Compare operation failed (s. debug output 'CTRL + SHIFT + Y')!",
+ operationFailed: "Compare operation failed (s. debug console 'CTRL/CMD + SHIFT + Y')!",
},
title: "Diff{0:trim,surround,leading_space}",
},
@@ -67,7 +67,7 @@ export const translation: Translation = {
errors: {
invalidWorkspace: "File{0:trim,surround,leading_space} is not part of workspace{1:trim,surround,leading_space}!",
invalidWorkspaceForPackage: "Package{0:trim,surround,leading_space} is not part of workspace{1:trim,surround,leading_space}!",
- operationFailed: "Delete operation failed (s. debug output 'CTRL + SHIFT + Y')!",
+ operationFailed: "Delete operation failed (s. debug console 'CTRL/CMD + SHIFT + Y')!",
},
finishedOperation: "Deleting files in{0:trim,surround,leading_space} has been finished.",
finishedOperationWithErrors: "[ERROR] Could not delete files in{0:trim,surround,leading_space}:{1:trim,surround,leading_space}",
@@ -108,7 +108,7 @@ export const translation: Translation = {
errors: {
invalidWorkspace: "Cannot deploy file{0:trim,surround,leading_space} from workspace{1:trim,surround,leading_space}!",
invalidWorkspaceForPackage: "Cannot deploy package{0:trim,surround,leading_space} from workspace{1:trim,surround,leading_space}!",
- operationFailed: "Deploy operation failed (s. debug output 'CTRL + SHIFT + Y')!",
+ operationFailed: "Deploy operation failed (s. debug console 'CTRL/CMD + SHIFT + Y')!",
operationToTargetFailed: "Deploying to target{0:trim,surround,leading_space} failed:{1:trim,surround,leading_space}",
},
gitCommit: {
@@ -172,10 +172,17 @@ export const translation: Translation = {
file: "{0:trim,surround,ending_space}is no file!",
},
listDirectory: {
+ copyPathToClipboard: {
+ description: "Copies the current path to clipboard",
+ errors: {
+ failed: "Could not save path to clipboard (s. debug console 'CTRL/CMD + SHIFT + Y'): {0}",
+ },
+ label: "Copy path ...",
+ },
currentDirectory: "Current directory:{0:trim,surround,leading_space} ({1:trim,surround})",
directoryIsEmpty: "(directory is empty)",
errors: {
- operationFailed: "List directory operation failed (s. Debugkonsole 'STRG + SHIFT + Y')!",
+ operationFailed: "List directory operation failed (s. debug console 'CTRL/CMD + SHIFT + Y')!",
},
lastModified: "Last modified:{0:trim,leading_space}",
loading: "Loading directory{0:trim,surround,leading_space} ({1:trim} / {2:trim})...",
@@ -222,8 +229,8 @@ export const translation: Translation = {
invalidDirectory: "{0:trim,surround,ending_space}is an invalid directory!",
},
errors: {
- initializationFailed: "Initialization of plugin{0:trim,surround,leading_space} failed (s. debug output 'CTRL + SHIFT + Y')!",
- loadingFailed: "Error while loading{0:trim,surround,leading_space} (s. debug output 'CTRL + SHIFT + Y')!",
+ initializationFailed: "Initialization of plugin{0:trim,surround,leading_space} failed (s. debug console 'CTRL/CMD + SHIFT + Y')!",
+ loadingFailed: "Error while loading{0:trim,surround,leading_space} (s. debug console 'CTRL/CMD + SHIFT + Y')!",
noFactoryFunction: "Plugin module{0:trim,surround,leading_space} contains no factory function!",
noModule: "Plugin{0:trim,surround,leading_space} contains no module!",
noneFoundIn: "No plugins found in{0:trim,surround,leading_space}!",
@@ -305,7 +312,7 @@ export const translation: Translation = {
errors: {
invalidWorkspace: "Cannot pull file{0:trim,surround,leading_space} to workspace{1:trim,surround,leading_space}!",
invalidWorkspaceForPackage: "Cannot pull package{0:trim,surround,leading_space} to workspace{1:trim,surround,leading_space}!",
- operationFailed: "Pull operation failed (s. debug output 'CTRL + SHIFT + Y')!",
+ operationFailed: "Pull operation failed (s. debug console 'CTRL/CMD + SHIFT + Y')!",
operationForSourceFailed: "Pulling file(s) from source{0:trim,surround,leading_space} failed:{1:trim,surround,leading_space}",
},
finishedOperation: "Pulling files from{0:trim,surround,leading_space} has been finished.",
@@ -357,7 +364,7 @@ export const translation: Translation = {
},
switches: {
errors: {
- operationFailed: "Switch operation failed (s. debug output 'CTRL + SHIFT + Y')!",
+ operationFailed: "Switch operation failed (s. debug console 'CTRL/CMD + SHIFT + Y')!",
},
},
sync: {
@@ -454,7 +461,7 @@ export const translation: Translation = {
selectTarget: "Select a target ...",
},
errors: {
- operationFailed: "Tool operation failed (s. debug output 'CTRL + SHIFT + Y')!",
+ operationFailed: "Tool operation failed (s. debug console 'CTRL/CMD + SHIFT + Y')!",
},
npm: {
description: "Tools for simple use of 'npm'",
@@ -544,7 +551,7 @@ export const translation: Translation = {
workspaces: {
active: {
errors: {
- selectWorkspaceFailed: "Selecting active workspace failed (s. debug output 'CTRL + SHIFT + Y')!",
+ selectWorkspaceFailed: "Selecting active workspace failed (s. debug console 'CTRL/CMD + SHIFT + Y')!",
},
noneFound: "No active workspaces found!",
selectWorkspace: "Select the active workspace ...",
diff --git a/src/list.ts b/src/list.ts
index ee03aec..d8d2033 100644
--- a/src/list.ts
+++ b/src/list.ts
@@ -15,9 +15,12 @@
* along with this program. If not, see .
*/
+import * as CopyPaste from 'copy-paste';
+import * as Crypto from 'crypto';
import * as deploy_contracts from './contracts';
import * as deploy_files from './files';
import * as deploy_helpers from './helpers';
+import * as deploy_log from './log';
import * as deploy_plugins from './plugins';
import * as deploy_targets from './targets';
import * as deploy_workspaces from './workspaces';
@@ -73,250 +76,330 @@ export async function listDirectory(target: deploy_targets.Target, dir?: string)
return;
}
- const TARGET_NAME = deploy_targets.getTargetName(target);
+ let fromCache = false;
- dir = deploy_helpers.toStringSafe(dir);
+ const LAST_DIR_CACHE = ME.workspaceSessionState['list']['lastDirectories'];
- const PLUGINS = ME.getListPlugins(target);
- if (PLUGINS.length < 1) {
- ME.showWarningMessage(
- ME.t('targets.noPluginsFound')
- );
+ const TARGET_NAME = deploy_targets.getTargetName(target);
+ const TARGET_CACHE_KEY = target.__index + '::' + Crypto.createHash('sha256')
+ .update( new Buffer(deploy_helpers.toStringSafe(target.__id), 'utf8') )
+ .digest('hex');
- return;
- }
+ if (arguments.length < 2) {
+ // try to get last directory
+ // from cache
- let displayDir = dir;
- if (deploy_helpers.isEmptyString(displayDir)) {
- displayDir = '/';
- }
+ const LAST_DIR = LAST_DIR_CACHE[TARGET_CACHE_KEY];
+ if (!deploy_helpers.isEmptyString(LAST_DIR)) {
+ fromCache = true;
- const FILES_AND_FOLDERS = await deploy_helpers.withProgress(async (ctx) => {
- const CANCELLATION_SOURCE = new vscode.CancellationTokenSource();
- try {
- const LOADED_FILES_AND_FILES: deploy_files.FileSystemInfo[] = [];
+ dir = LAST_DIR;
+ }
+ }
- let index = -1;
- const TOTAL_COUNT = PLUGINS.length;
- while (PLUGINS.length > 0) {
- ++index;
+ dir = deploy_helpers.toStringSafe(dir);
- if (CANCELLATION_SOURCE.token.isCancellationRequested) {
- return false;
- }
+ let wholeOperationHasFailed = false;
+ try {
+ const PLUGINS = ME.getListPlugins(target);
+ if (PLUGINS.length < 1) {
+ ME.showWarningMessage(
+ ME.t('targets.noPluginsFound')
+ );
- const PI = PLUGINS.shift();
+ return;
+ }
- ctx.message = ME.t('listDirectory.loading',
- displayDir, index + 1, TOTAL_COUNT);
+ let displayDir = dir;
+ if (deploy_helpers.isEmptyString(displayDir)) {
+ displayDir = '/';
+ }
- const CTX: deploy_plugins.ListDirectoryContext = {
- cancellationToken: CANCELLATION_SOURCE.token,
- dir: dir,
- isCancelling: undefined,
- target: target,
- workspace: ME,
- };
+ let selfInfo: deploy_files.DirectoryInfo;
+ const FILES_AND_FOLDERS = await deploy_helpers.withProgress(async (ctx) => {
+ const CANCELLATION_SOURCE = new vscode.CancellationTokenSource();
+ try {
+ const LOADED_FILES_AND_FILES: deploy_files.FileSystemInfo[] = [];
- // CTX.isCancelling
- Object.defineProperty(CTX, 'isCancelling', {
- enumerable: true,
+ let index = -1;
+ const TOTAL_COUNT = PLUGINS.length;
+ while (PLUGINS.length > 0) {
+ ++index;
- get: () => {
- return CTX.cancellationToken.isCancellationRequested;
+ if (CANCELLATION_SOURCE.token.isCancellationRequested) {
+ return false;
}
- });
-
- const ITEMS = await PI.listDirectory(CTX);
- if (ITEMS) {
- const LOADED_ITEMS: deploy_files.FileSystemInfo[] = deploy_helpers.asArray(
- ITEMS.dirs,
- ).concat(
- deploy_helpers.asArray(
- ITEMS.files
- )
- ).concat(
- deploy_helpers.asArray(
- ITEMS.others
- )
- );
- LOADED_FILES_AND_FILES.push
- .apply(LOADED_FILES_AND_FILES, LOADED_ITEMS);
+ const PI = PLUGINS.shift();
+
+ ctx.message = ME.t('listDirectory.loading',
+ displayDir, index + 1, TOTAL_COUNT);
+
+ const CTX: deploy_plugins.ListDirectoryContext = {
+ cancellationToken: CANCELLATION_SOURCE.token,
+ dir: dir,
+ isCancelling: undefined,
+ target: target,
+ workspace: ME,
+ };
+
+ // CTX.isCancelling
+ Object.defineProperty(CTX, 'isCancelling', {
+ enumerable: true,
+
+ get: () => {
+ return CTX.cancellationToken.isCancellationRequested;
+ }
+ });
+
+ const ITEMS = await PI.listDirectory(CTX);
+ if (ITEMS) {
+ selfInfo = ITEMS.info;
+
+ const LOADED_ITEMS: deploy_files.FileSystemInfo[] = deploy_helpers.asArray(
+ ITEMS.dirs,
+ ).concat(
+ deploy_helpers.asArray(
+ ITEMS.files
+ )
+ ).concat(
+ deploy_helpers.asArray(
+ ITEMS.others
+ )
+ );
+
+ LOADED_FILES_AND_FILES.push
+ .apply(LOADED_FILES_AND_FILES, LOADED_ITEMS);
+ }
}
+
+ return LOADED_FILES_AND_FILES;
+ }
+ finally {
+ deploy_helpers.tryDispose(CANCELLATION_SOURCE);
}
+ }, {
+ title: `[${TARGET_NAME}]`,
+ });
- return LOADED_FILES_AND_FILES;
+ if (false === FILES_AND_FOLDERS) {
+ return;
}
- finally {
- deploy_helpers.tryDispose(CANCELLATION_SOURCE);
- }
- }, {
- title: `[${TARGET_NAME}]`,
- });
- if (false === FILES_AND_FOLDERS) {
- return;
- }
-
- const QUICK_PICK_ITEMS: deploy_contracts.ActionQuickPick[] = [];
+ const QUICK_PICK_ITEMS: deploy_contracts.ActionQuickPick[] = [];
- const LIST_DIRECTORY = async (d: string) => {
- listDirectory.apply(
- ME,
- [ target, d ]
- );
- };
+ const LIST_DIRECTORY = async (d: string) => {
+ listDirectory.apply(
+ ME,
+ [ target, d ]
+ );
+ };
- FILES_AND_FOLDERS.sort((x, y) => {
- // first by type:
- //
- // 1. directories
- // 2. others
- const COMP0 = deploy_helpers.compareValuesBy(x, y, (f) => {
- return deploy_files.FileSystemType.Directory == f.type ? 0 : 1;
- });
- if (0 !== COMP0) {
- return COMP0;
- }
+ FILES_AND_FOLDERS.sort((x, y) => {
+ // first by type:
+ //
+ // 1. directories
+ // 2. others
+ const COMP0 = deploy_helpers.compareValuesBy(x, y, (f) => {
+ return deploy_files.FileSystemType.Directory == f.type ? 0 : 1;
+ });
+ if (0 !== COMP0) {
+ return COMP0;
+ }
- // custom comparer?
- if (x.type == y.type) {
- if (x.compareTo) {
- const COMP1 = x.compareTo(y);
- if (0 != COMP1) {
- return COMP1;
+ // custom comparer?
+ if (x.type == y.type) {
+ if (x.compareTo) {
+ const COMP1 = x.compareTo(y);
+ if (0 != COMP1) {
+ return COMP1;
+ }
}
}
- }
- // then by name
- const COMP2 = deploy_helpers.compareValuesBy(x, y, (f) => {
- return deploy_helpers.normalizeString(f.name);
- });
- if (0 !== COMP2) {
- return COMP2;
- }
+ // then by name
+ const COMP2 = deploy_helpers.compareValuesBy(x, y, (f) => {
+ return deploy_helpers.normalizeString(f.name);
+ });
+ if (0 !== COMP2) {
+ return COMP2;
+ }
- // then by timestamp (DESC)
- return deploy_helpers.compareValuesBy(y, x, (f) => {
- const LT = deploy_helpers.asLocalTime(f.time);
- if (LT) {
- return LT.unix();
+ // then by timestamp (DESC)
+ return deploy_helpers.compareValuesBy(y, x, (f) => {
+ const LT = deploy_helpers.asLocalTime(f.time);
+ if (LT) {
+ return LT.unix();
+ }
+ });
+ }).forEach(f => {
+ let label = deploy_helpers.toStringSafe(f.name).trim();
+ if ('' === label) {
+ label = ME.t('listDirectory.noName');
}
- });
- }).forEach(f => {
- let label = deploy_helpers.toStringSafe(f.name).trim();
- if ('' === label) {
- label = ME.t('listDirectory.noName');
- }
- const DETAIL_ITEMS: string[] = [];
+ const DETAIL_ITEMS: string[] = [];
- const GET_ICON_SAFE = (defaultIcon: string) => {
- let icon = deploy_helpers.toStringSafe(f.icon).trim();
- if ('' === icon) {
- icon = defaultIcon;
- }
+ const GET_ICON_SAFE = (defaultIcon: string) => {
+ let icon = deploy_helpers.toStringSafe(f.icon).trim();
+ if ('' === icon) {
+ icon = defaultIcon;
+ }
- return '$(' + icon + ') ';
- };
+ return '$(' + icon + ') ';
+ };
- let action: () => any;
- if (deploy_files.FileSystemType.Directory == f.type) {
- // directory
+ let action: () => any;
+ if (deploy_files.FileSystemType.Directory == f.type) {
+ // directory
- label = GET_ICON_SAFE('file-directory') + label;
+ label = GET_ICON_SAFE('file-directory') + label;
- action = async () => {
- let pathPart = f.internal_name;
- if (deploy_helpers.isEmptyString(pathPart)) {
- pathPart = f.name;
+ action = async () => {
+ let pathPart = f.internal_name;
+ if (deploy_helpers.isEmptyString(pathPart)) {
+ pathPart = f.name;
+ }
+
+ LIST_DIRECTORY(
+ dir + '/' + pathPart,
+ );
+ };
+ }
+ else if (deploy_files.FileSystemType.File == f.type) {
+ // file
+
+ label = GET_ICON_SAFE('file-binary') + label;
+
+ action = createSelectFileAction(
+ f
+ );
+ }
+ else {
+ label = GET_ICON_SAFE('question') + label;
+ }
+
+ if (deploy_files.FileSystemType.Directory != f.type) {
+ if (!isNaN(f.size)) {
+ DETAIL_ITEMS.push(
+ ME.t('listDirectory.size',
+ FileSize(f.size, {round: 2}))
+ );
}
+ }
- LIST_DIRECTORY(
- dir + '/' + pathPart,
+ const LOCAL_TIME = deploy_helpers.asLocalTime(f.time);
+ if (LOCAL_TIME && LOCAL_TIME.isValid()) {
+ DETAIL_ITEMS.push(
+ ME.t('listDirectory.lastModified',
+ LOCAL_TIME.format( ME.t('time.dateTimeWithSeconds') ))
);
- };
- }
- else if (deploy_files.FileSystemType.File == f.type) {
- // file
+ }
- label = GET_ICON_SAFE('file-binary') + label;
-
- action = createSelectFileAction(
- f
- );
+ QUICK_PICK_ITEMS.push({
+ label: label,
+ description: '',
+ detail: DETAIL_ITEMS.join(', '),
+ action: action,
+ });
+ });
+
+ if (!deploy_helpers.isEmptyString(dir)) {
+ let parentDir = Enumerable.from(
+ dir.split('/')
+ ).skipLast()
+ .joinToString('/');
+
+ QUICK_PICK_ITEMS.unshift({
+ label: '..',
+ description: '',
+ detail: ME.t('listDirectory.parentDirectory'),
+
+ action: async () => {
+ LIST_DIRECTORY(
+ parentDir
+ );
+ }
+ });
}
- else {
- label = GET_ICON_SAFE('question') + label;
+
+ if (QUICK_PICK_ITEMS.length < 1) {
+ QUICK_PICK_ITEMS.push({
+ label: ME.t('listDirectory.directoryIsEmpty'),
+ description: '',
+ });
}
- if (deploy_files.FileSystemType.Directory != f.type) {
- if (!isNaN(f.size)) {
- DETAIL_ITEMS.push(
- ME.t('listDirectory.size',
- FileSize(f.size, {round: 2}))
- );
+ // functions
+ {
+ if (deploy_helpers.isObject(selfInfo)) {
+ let exportPath = deploy_helpers.toStringSafe(selfInfo.exportPath);
+ if (deploy_helpers.isEmptyString(exportPath)) {
+ exportPath = dir;
+ }
+
+ if (!deploy_helpers.isEmptyString(exportPath)) {
+ // copy path to clipboard
+ QUICK_PICK_ITEMS.push({
+ action: async () => {
+ try {
+ await Promise.resolve(
+ CopyPaste.copy(exportPath)
+ );
+ }
+ catch (e) {
+ deploy_log.CONSOLE
+ .trace(e, 'list.listDirectory(1)');
+
+ ME.showWarningMessage(
+ ME.t('listDirectory.copyPathToClipboard.errors.failed',
+ exportPath)
+ );
+ }
+ },
+
+ label: '$(clippy) ' + ME.t('listDirectory.copyPathToClipboard.label'),
+ description: ME.t('listDirectory.copyPathToClipboard.description'),
+ });
+ }
}
}
- const LOCAL_TIME = deploy_helpers.asLocalTime(f.time);
- if (LOCAL_TIME && LOCAL_TIME.isValid()) {
- DETAIL_ITEMS.push(
- ME.t('listDirectory.lastModified',
- LOCAL_TIME.format( ME.t('time.dateTimeWithSeconds') ))
- );
+ let placeHolder = dir.trim();
+ if (!placeHolder.startsWith('/')) {
+ placeHolder = '/' + placeHolder;
}
- QUICK_PICK_ITEMS.push({
- label: label,
- description: '',
- detail: DETAIL_ITEMS.join(', '),
- action: action,
+ const SELECTED_ITEM = await vscode.window.showQuickPick(QUICK_PICK_ITEMS, {
+ placeHolder: ME.t('listDirectory.currentDirectory',
+ placeHolder, TARGET_NAME),
});
- });
-
- if (!deploy_helpers.isEmptyString(dir)) {
- let parentDir = Enumerable.from(
- dir.split('/')
- ).skipLast()
- .joinToString('/');
-
- QUICK_PICK_ITEMS.unshift({
- label: '..',
- description: '',
- detail: ME.t('listDirectory.parentDirectory'),
-
- action: async () => {
- LIST_DIRECTORY(
- parentDir
+ if (SELECTED_ITEM) {
+ if (SELECTED_ITEM.action) {
+ await Promise.resolve(
+ SELECTED_ITEM.action()
);
}
- });
+ }
}
+ catch (e) {
+ wholeOperationHasFailed = true;
- if (QUICK_PICK_ITEMS.length < 1) {
- QUICK_PICK_ITEMS.push({
- label: ME.t('listDirectory.directoryIsEmpty'),
- description: '',
- });
- }
+ if (fromCache) {
+ // reset and retry
- let placeHolder = dir.trim();
- if (!placeHolder.startsWith('/')) {
- placeHolder = '/' + placeHolder;
- }
+ delete LAST_DIR_CACHE[TARGET_CACHE_KEY];
- const SELECTED_ITEM = await vscode.window.showQuickPick(QUICK_PICK_ITEMS, {
- placeHolder: ME.t('listDirectory.currentDirectory',
- placeHolder, TARGET_NAME),
- });
- if (SELECTED_ITEM) {
- if (SELECTED_ITEM.action) {
- await Promise.resolve(
- SELECTED_ITEM.action()
- );
+ await listDirectory.apply(this, arguments);
+ }
+ else {
+ throw e;
+ }
+ }
+ finally {
+ if (!wholeOperationHasFailed) {
+ // cache
+ LAST_DIR_CACHE[TARGET_CACHE_KEY] = dir;
}
}
}
diff --git a/src/plugins.ts b/src/plugins.ts
index e6f8550..db984e8 100644
--- a/src/plugins.ts
+++ b/src/plugins.ts
@@ -29,6 +29,7 @@ import * as deploy_values from './values';
import * as deploy_workspaces from './workspaces';
import * as Events from 'events';
import * as i18 from './i18';
+import * as Path from 'path';
import * as Stream from 'stream';
import * as vscode from 'vscode';
@@ -195,6 +196,10 @@ export interface ListDirectoryResult string;
+ /**
+ * Returns the "real" path of a sub directory, which can be exported.
+ *
+ * @param {string} subDir The sub directory.
+ *
+ * @return {string} The "export" path.
+ */
+ readonly getExportPath?: (subDir: string) => string;
/**
* The underlying target.
*/
@@ -888,14 +901,31 @@ export abstract class AsyncFileClientPluginBase {
+ const DIR = conn.getDir(context.dir);
+
+ let exportPath: string;
+ if (conn.getExportPath) {
+ exportPath = conn.getExportPath(context.dir);
+ }
+ if (deploy_helpers.isEmptyString(exportPath)) {
+ exportPath = DIR;
+ }
+ exportPath = deploy_helpers.toStringSafe(exportPath);
+ if (!exportPath.trim().startsWith('/')) {
+ exportPath = '/' + exportPath;
+ }
+
const RESULT: ListDirectoryResult = {
dirs: [],
files: [],
+ info: deploy_files.createDefaultDirectoryInfo(context.dir, {
+ exportPath: exportPath,
+ }),
others: [],
target: context.target,
};
- const LIST = await conn.client.listDirectory(conn.getDir(context.dir));
+ const LIST = await conn.client.listDirectory(DIR);
if (LIST) {
for (const FSI of LIST) {
if (!FSI) {
@@ -1402,6 +1432,7 @@ export abstract class IterablePluginBase {
const RESULT: deploy_plugins.ListDirectoryResult = {
dirs: [],
files: [],
+ info: deploy_files.createDefaultDirectoryInfo(context.dir, {
+ exportPath: targetDir,
+ }),
others: [],
target: context.target,
};
@@ -462,6 +465,9 @@ class AppPlugin extends deploy_plugins.PluginBase {
if (STATS.isDirectory()) {
const DI: deploy_files.DirectoryInfo = {
+ exportPath: Path.resolve(
+ Path.join(OUT_DIR, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
@@ -476,6 +482,9 @@ class AppPlugin extends deploy_plugins.PluginBase {
download: async () => {
return deploy_helpers.readFile(fullPath);
},
+ exportPath: Path.resolve(
+ Path.join(OUT_DIR, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
@@ -487,6 +496,9 @@ class AppPlugin extends deploy_plugins.PluginBase {
}
else {
const FSI: deploy_files.FileSystemInfo = {
+ exportPath: Path.resolve(
+ Path.join(OUT_DIR, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
diff --git a/src/plugins/compiler.ts b/src/plugins/compiler.ts
index ebd16bd..d8c719a 100644
--- a/src/plugins/compiler.ts
+++ b/src/plugins/compiler.ts
@@ -223,6 +223,9 @@ class CompilerPlugin extends deploy_plugins.PluginBase {
const RESULT: deploy_plugins.ListDirectoryResult = {
dirs: [],
files: [],
+ info: deploy_files.createDefaultDirectoryInfo(context.dir, {
+ exportPath: targetDir,
+ }),
others: [],
target: context.target,
};
@@ -251,6 +254,9 @@ class CompilerPlugin extends deploy_plugins.PluginBase {
if (STATS.isDirectory()) {
const DI: deploy_files.DirectoryInfo = {
+ exportPath: Path.resolve(
+ Path.join(targetDir, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
@@ -265,6 +271,9 @@ class CompilerPlugin extends deploy_plugins.PluginBase {
download: async () => {
return deploy_helpers.readFile(fullPath);
},
+ exportPath: Path.resolve(
+ Path.join(targetDir, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
@@ -276,6 +285,9 @@ class CompilerPlugin extends deploy_plugins.PluginBase {
}
else {
const FSI: deploy_files.FileSystemInfo = {
+ exportPath: Path.resolve(
+ Path.join(targetDir, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
diff --git a/src/plugins/local.ts b/src/plugins/local.ts
index 3fae7ac..52051a9 100644
--- a/src/plugins/local.ts
+++ b/src/plugins/local.ts
@@ -190,6 +190,9 @@ class LocalPlugin extends deploy_plugins.PluginBase {
const RESULT: deploy_plugins.ListDirectoryResult = {
dirs: [],
files: [],
+ info: deploy_files.createDefaultDirectoryInfo(context.dir, {
+ exportPath: targetDir,
+ }),
others: [],
target: context.target,
};
@@ -218,6 +221,9 @@ class LocalPlugin extends deploy_plugins.PluginBase {
if (STATS.isDirectory()) {
const DI: deploy_files.DirectoryInfo = {
+ exportPath: Path.resolve(
+ Path.join(targetDir, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
@@ -232,6 +238,9 @@ class LocalPlugin extends deploy_plugins.PluginBase {
download: async () => {
return deploy_helpers.readFile(fullPath);
},
+ exportPath: Path.resolve(
+ Path.join(targetDir, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
@@ -243,6 +252,9 @@ class LocalPlugin extends deploy_plugins.PluginBase {
}
else {
const FSI: deploy_files.FileSystemInfo = {
+ exportPath: Path.resolve(
+ Path.join(targetDir, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
diff --git a/src/plugins/script.ts b/src/plugins/script.ts
index 541ebfd..46eed82 100644
--- a/src/plugins/script.ts
+++ b/src/plugins/script.ts
@@ -254,6 +254,7 @@ class ScriptPlugin extends deploy_plugins.PluginBase {
dirs: [],
files: [],
others: [],
+ info: deploy_files.createDefaultDirectoryInfo(context.dir),
target: context.target,
};
diff --git a/src/plugins/slack.ts b/src/plugins/slack.ts
index 5f382d8..051ef97 100644
--- a/src/plugins/slack.ts
+++ b/src/plugins/slack.ts
@@ -74,6 +74,7 @@ class SlackPlugin extends deploy_plugins.PluginBase {
const RESULT: deploy_plugins.ListDirectoryResult = {
dirs: [],
files: [],
+ info: deploy_files.createDefaultDirectoryInfo(context.dir),
others: [],
target: t,
};
diff --git a/src/plugins/test.ts b/src/plugins/test.ts
index 7fdce26..bbbc099 100644
--- a/src/plugins/test.ts
+++ b/src/plugins/test.ts
@@ -124,6 +124,9 @@ class TestPlugin extends deploy_plugins.PluginBase {
const RESULT: deploy_plugins.ListDirectoryResult = {
dirs: [],
files: [],
+ info: deploy_files.createDefaultDirectoryInfo(context.dir, {
+ exportPath: targetDir,
+ }),
others: [],
target: context.target,
};
@@ -152,6 +155,9 @@ class TestPlugin extends deploy_plugins.PluginBase {
if (STATS.isDirectory()) {
const DI: deploy_files.DirectoryInfo = {
+ exportPath: Path.resolve(
+ Path.join(targetDir, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
@@ -166,6 +172,9 @@ class TestPlugin extends deploy_plugins.PluginBase {
download: async () => {
return deploy_helpers.readFile(fullPath);
},
+ exportPath: Path.resolve(
+ Path.join(targetDir, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
@@ -177,6 +186,9 @@ class TestPlugin extends deploy_plugins.PluginBase {
}
else {
const FSI: deploy_files.FileSystemInfo = {
+ exportPath: Path.resolve(
+ Path.join(targetDir, F)
+ ),
name: F,
path: relativePath,
size: SIZE,
diff --git a/src/plugins/zip.ts b/src/plugins/zip.ts
index 679b13e..a639a8a 100644
--- a/src/plugins/zip.ts
+++ b/src/plugins/zip.ts
@@ -253,13 +253,6 @@ class ZipPlugin extends deploy_plugins.PluginBase {
const ME = this;
const WORKSPACE = context.workspace;
- const RESULT: deploy_plugins.ListDirectoryResult = {
- dirs: [],
- files: [],
- others: [],
- target: context.target,
- };
-
if (context.isCancelling) {
return;
}
@@ -267,6 +260,16 @@ class ZipPlugin extends deploy_plugins.PluginBase {
const DIR = deploy_helpers.normalizePath(context.dir);
const TARGET_DIR = await ME.getTargetDirectory(context.target, false);
+ const RESULT: deploy_plugins.ListDirectoryResult = {
+ dirs: [],
+ files: [],
+ others: [],
+ info: deploy_files.createDefaultDirectoryInfo(context.dir, {
+ exportPath: TARGET_DIR,
+ }),
+ target: context.target,
+ };
+
if (deploy_helpers.isEmptyString(DIR)) {
const ZIP_FILES = await ME.getZipFiles(context.target);
@@ -279,6 +282,7 @@ class ZipPlugin extends deploy_plugins.PluginBase {
const CREATION_TIME = Moment.utc(`${MATCH[4]} ${MATCH[6]}`,
'YYYYMMDD HHmmss');
const DI: deploy_files.DirectoryInfo = {
+ exportPath: ZF,
internal_name: FILE_NAME,
name: deploy_helpers.asLocalTime(CREATION_TIME)
.format( ME.t(context.target, 'time.dateTimeWithSeconds') ),
@@ -354,6 +358,7 @@ class ZipPlugin extends deploy_plugins.PluginBase {
}
const FI: deploy_files.FileInfo = {
+ exportPath: ZIP_FILE_PATH + '::' + FILENAME,
name: FILENAME,
path: ZIP_FILE_NAME,
type: deploy_files.FileSystemType.File,
diff --git a/src/workspaces.ts b/src/workspaces.ts
index 529ce95..89aca0e 100644
--- a/src/workspaces.ts
+++ b/src/workspaces.ts
@@ -644,6 +644,9 @@ export class Workspace extends deploy_objects.DisposableBase implements deploy_c
NEW_SESSION_STATE['commands'] = {};
NEW_SESSION_STATE['commands']['events'] = new Events.EventEmitter();
+ NEW_SESSION_STATE['list'] = {};
+ NEW_SESSION_STATE['list']['lastDirectories'] = {};
+
NEW_SESSION_STATE['pull'] = {};
NEW_SESSION_STATE['pull']['events'] = new Events.EventEmitter();
NEW_SESSION_STATE['pull']['states'] = {};