Compare commits
23 Commits
sql-parser
...
0.0.30
Author | SHA1 | Date | |
---|---|---|---|
|
c5447c2ebe | ||
|
700de5c93b | ||
|
917d77fa84 | ||
|
5bb64db2fe | ||
|
504e209202 | ||
|
0d194a9e19 | ||
|
1ef2f9eb96 | ||
|
68740939fa | ||
|
107a162370 | ||
|
5a1c85aa04 | ||
|
cd25b6a0f7 | ||
|
ae2dfe3db1 | ||
|
f6d05981a8 | ||
|
217ced320f | ||
|
4acb140b25 | ||
|
8a1f942298 | ||
|
da12eb698d | ||
|
85add9bb6b | ||
|
69eec45dc1 | ||
|
c684fa0c7c | ||
|
2267d86f03 | ||
|
1e66025b23 | ||
|
aed27e72be |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@ node_modules
|
||||
.vscode-test/
|
||||
*.vsix
|
||||
**/.DS_Store
|
||||
npm-debug.log
|
34
CHANGELOG.md
34
CHANGELOG.md
@@ -1,7 +1,35 @@
|
||||
# Change Log
|
||||
|
||||
All notable changes to the "frog" extension will be documented in this file.
|
||||
|
||||
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
|
||||
## 0.0.25
|
||||
|
||||
## [Unreleased]
|
||||
- Initial release
|
||||
- Fixed problems with deletes
|
||||
|
||||
## 0.0.24
|
||||
|
||||
- Better display of result set and values
|
||||
|
||||
## 0.0.23
|
||||
|
||||
- Added commit and rollback buttons
|
||||
|
||||
## 0.0.22
|
||||
|
||||
- Bugfixes
|
||||
|
||||
## 0.0.21
|
||||
|
||||
- Added icon
|
||||
|
||||
## 0.0.20
|
||||
|
||||
- Fixes for better session handling
|
||||
|
||||
## 0.0.19
|
||||
|
||||
- Maintenance release
|
||||
|
||||
## 0.0.18
|
||||
|
||||
- Fixed bug with endless loop
|
||||
|
@@ -32,3 +32,7 @@ To configure the available connections you can create a file named `.frog.json`
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Credits
|
||||
|
||||
Extension icon made by Smashicons from www.flaticon.com
|
||||
|
BIN
frog-runner.jar
BIN
frog-runner.jar
Binary file not shown.
54
images/commit.svg
Normal file
54
images/commit.svg
Normal file
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="474.8px" height="474.801px" viewBox="0 0 474.8 474.801" style="enable-background:new 0 0 474.8 474.801;"
|
||||
xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M396.283,257.097c-1.14-0.575-2.282-0.862-3.433-0.862c-2.478,0-4.661,0.951-6.563,2.857l-18.274,18.271
|
||||
c-1.708,1.715-2.566,3.806-2.566,6.283v72.513c0,12.565-4.463,23.314-13.415,32.264c-8.945,8.945-19.701,13.418-32.264,13.418
|
||||
H82.226c-12.564,0-23.319-4.473-32.264-13.418c-8.947-8.949-13.418-19.698-13.418-32.264V118.622
|
||||
c0-12.562,4.471-23.316,13.418-32.264c8.945-8.946,19.7-13.418,32.264-13.418H319.77c4.188,0,8.47,0.571,12.847,1.714
|
||||
c1.143,0.378,1.999,0.571,2.563,0.571c2.478,0,4.668-0.949,6.57-2.852l13.99-13.99c2.282-2.281,3.142-5.043,2.566-8.276
|
||||
c-0.571-3.046-2.286-5.236-5.141-6.567c-10.272-4.752-21.412-7.139-33.403-7.139H82.226c-22.65,0-42.018,8.042-58.102,24.126
|
||||
C8.042,76.613,0,95.978,0,118.629v237.543c0,22.647,8.042,42.014,24.125,58.098c16.084,16.088,35.452,24.13,58.102,24.13h237.541
|
||||
c22.647,0,42.017-8.042,58.101-24.13c16.085-16.084,24.134-35.45,24.134-58.098v-90.797
|
||||
C402.001,261.381,400.088,258.623,396.283,257.097z"/>
|
||||
<path d="M467.95,93.216l-31.409-31.409c-4.568-4.567-9.996-6.851-16.279-6.851c-6.275,0-11.707,2.284-16.271,6.851
|
||||
L219.265,246.532l-75.084-75.089c-4.569-4.57-9.995-6.851-16.274-6.851c-6.28,0-11.704,2.281-16.274,6.851l-31.405,31.405
|
||||
c-4.568,4.568-6.854,9.994-6.854,16.277c0,6.28,2.286,11.704,6.854,16.274l122.767,122.767c4.569,4.571,9.995,6.851,16.274,6.851
|
||||
c6.279,0,11.704-2.279,16.274-6.851l232.404-232.403c4.565-4.567,6.854-9.994,6.854-16.274S472.518,97.783,467.95,93.216z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
10
images/commit_inverse.svg
Normal file
10
images/commit_inverse.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="474.8" height="474.801" viewBox="0, 0, 474.8, 474.801">
|
||||
<g id="Ebene_1">
|
||||
<g>
|
||||
<path d="M396.283,257.097 C395.143,256.522 394.001,256.235 392.85,256.235 C390.372,256.235 388.189,257.186 386.287,259.092 L368.013,277.363 C366.305,279.078 365.447,281.169 365.447,283.646 L365.447,356.159 C365.447,368.724 360.984,379.473 352.032,388.423 C343.087,397.368 332.331,401.841 319.768,401.841 L82.226,401.841 C69.662,401.841 58.907,397.368 49.962,388.423 C41.015,379.474 36.544,368.725 36.544,356.159 L36.544,118.622 C36.544,106.06 41.015,95.306 49.962,86.358 C58.907,77.412 69.662,72.94 82.226,72.94 L319.77,72.94 C323.958,72.94 328.24,73.511 332.617,74.654 C333.76,75.032 334.616,75.225 335.18,75.225 C337.658,75.225 339.848,74.276 341.75,72.373 L355.74,58.383 C358.022,56.102 358.882,53.34 358.306,50.107 C357.735,47.061 356.02,44.871 353.165,43.54 C342.893,38.788 331.753,36.401 319.762,36.401 L82.226,36.401 C59.576,36.401 40.208,44.443 24.124,60.527 C8.042,76.613 0,95.978 0,118.629 L0,356.172 C0,378.819 8.042,398.186 24.125,414.27 C40.209,430.358 59.577,438.4 82.227,438.4 L319.768,438.4 C342.415,438.4 361.785,430.358 377.869,414.27 C393.954,398.186 402.003,378.82 402.003,356.172 L402.003,265.375 C402.001,261.381 400.088,258.623 396.283,257.097 z" fill="#FFFFFF"/>
|
||||
<path d="M467.95,93.216 L436.541,61.807 C431.973,57.24 426.545,54.956 420.262,54.956 C413.987,54.956 408.555,57.24 403.991,61.807 L219.265,246.532 L144.181,171.443 C139.612,166.873 134.186,164.592 127.907,164.592 C121.627,164.592 116.203,166.873 111.633,171.443 L80.228,202.848 C75.66,207.416 73.374,212.842 73.374,219.125 C73.374,225.405 75.66,230.829 80.228,235.399 L202.995,358.166 C207.564,362.737 212.99,365.017 219.269,365.017 C225.548,365.017 230.973,362.738 235.543,358.166 L467.947,125.763 C472.512,121.196 474.801,115.769 474.801,109.489 C474.801,103.209 472.518,97.783 467.95,93.216 z" fill="#FFFFFF"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
BIN
images/database.png
Normal file
BIN
images/database.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
51
images/rollback.svg
Normal file
51
images/rollback.svg
Normal file
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="438.533px" height="438.533px" viewBox="0 0 438.533 438.533" style="enable-background:new 0 0 438.533 438.533;"
|
||||
xml:space="preserve">
|
||||
<g>
|
||||
<path d="M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0
|
||||
c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267
|
||||
c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407
|
||||
s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062
|
||||
C438.533,179.485,428.732,142.795,409.133,109.203z M322.621,270.939c3.617,3.613,5.428,7.905,5.428,12.854
|
||||
c0,5.133-1.811,9.514-5.428,13.127l-25.693,25.701c-3.614,3.613-7.994,5.42-13.135,5.42c-4.948,0-9.236-1.807-12.847-5.42
|
||||
l-51.676-51.682l-51.678,51.682c-3.616,3.613-7.898,5.42-12.847,5.42c-5.14,0-9.517-1.807-13.134-5.42l-25.697-25.701
|
||||
c-3.616-3.613-5.424-7.994-5.424-13.127c0-4.948,1.809-9.24,5.424-12.854l51.678-51.673l-51.678-51.678
|
||||
c-3.616-3.612-5.424-7.898-5.424-12.847c0-5.14,1.809-9.517,5.424-13.134l25.697-25.693c3.617-3.616,7.994-5.424,13.134-5.424
|
||||
c4.949,0,9.231,1.809,12.847,5.424l51.678,51.674l51.676-51.674c3.61-3.616,7.898-5.424,12.847-5.424
|
||||
c5.141,0,9.521,1.809,13.135,5.424l25.693,25.693c3.617,3.617,5.428,7.994,5.428,13.134c0,4.948-1.811,9.235-5.428,12.847
|
||||
l-51.675,51.678L322.621,270.939z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
7
images/rollback_inverse.svg
Normal file
7
images/rollback_inverse.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="438.533" height="438.533" viewBox="0, 0, 438.533, 438.533">
|
||||
<g id="Ebene_1">
|
||||
<path d="M409.133,109.202 C389.525,75.61 362.928,49.013 329.335,29.406 C295.736,9.8 259.059,-0.001 219.273,-0.001 C179.492,-0.001 142.803,9.8 109.21,29.406 C75.615,49.01 49.018,75.607 29.41,109.202 C9.801,142.799 0,179.488 0,219.266 C0,259.047 9.804,295.729 29.407,329.328 C49.014,362.921 75.611,389.517 109.206,409.126 C142.803,428.732 179.49,438.534 219.27,438.534 C259.049,438.534 295.74,428.732 329.335,409.126 C362.927,389.525 389.523,362.921 409.129,329.328 C428.732,295.732 438.533,259.044 438.533,219.266 C438.534,179.484 428.732,142.794 409.133,109.202 z M322.621,270.939 C326.238,274.551 328.049,278.844 328.049,283.792 C328.049,288.926 326.238,293.306 322.621,296.919 L296.928,322.62 C293.314,326.233 288.935,328.04 283.793,328.04 C278.845,328.04 274.557,326.233 270.947,322.62 L219.27,270.939 L167.592,322.62 C163.977,326.233 159.694,328.04 154.745,328.04 C149.605,328.04 145.229,326.233 141.611,322.62 L115.914,296.919 C112.298,293.306 110.49,288.926 110.49,283.792 C110.49,278.844 112.299,274.552 115.914,270.939 L167.592,219.265 L115.914,167.587 C112.298,163.975 110.49,159.689 110.49,154.74 C110.49,149.6 112.299,145.223 115.914,141.606 L141.611,115.913 C145.229,112.297 149.605,110.489 154.745,110.489 C159.694,110.489 163.977,112.298 167.592,115.913 L219.27,167.587 L270.947,115.913 C274.556,112.297 278.844,110.489 283.793,110.489 C288.935,110.489 293.314,112.298 296.928,115.913 L322.621,141.606 C326.238,145.223 328.049,149.6 328.049,154.74 C328.049,159.688 326.238,163.975 322.621,167.587 L270.947,219.265 L322.621,270.939 z" fill="#FFFFFF"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
734
package-lock.json
generated
Normal file
734
package-lock.json
generated
Normal file
@@ -0,0 +1,734 @@
|
||||
{
|
||||
"name": "frog",
|
||||
"version": "0.0.30",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@types/mocha": {
|
||||
"version": "2.2.44",
|
||||
"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.44.tgz",
|
||||
"integrity": "sha1-HUp5jlPzUhL9WtTQQFBiAXHNW14=",
|
||||
"dev": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "9.6.47",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.47.tgz",
|
||||
"integrity": "sha512-56wEJWXZs+3XXoTe/OCpdZ6czrONhy+6hT0GdPOb7HvudLTMJ1T5tuZPs37K5cPR5t+J9+vLPFDQgUQ8NWJE1w==",
|
||||
"dev": true
|
||||
},
|
||||
"agent-base": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
|
||||
"integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"es6-promisify": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"ajv": {
|
||||
"version": "6.10.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
|
||||
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fast-deep-equal": "^2.0.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"json-schema-traverse": "^0.4.1",
|
||||
"uri-js": "^4.2.2"
|
||||
}
|
||||
},
|
||||
"asn1": {
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
|
||||
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safer-buffer": "~2.1.0"
|
||||
}
|
||||
},
|
||||
"assert-plus": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
|
||||
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
|
||||
"dev": true
|
||||
},
|
||||
"asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
|
||||
"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
|
||||
},
|
||||
"aws4": {
|
||||
"version": "1.8.0",
|
||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
|
||||
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
|
||||
"dev": true
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"dev": true
|
||||
},
|
||||
"bcrypt-pbkdf": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
|
||||
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tweetnacl": "^0.14.3"
|
||||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"browser-stdout": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
|
||||
"integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
|
||||
"dev": true
|
||||
},
|
||||
"buffer-from": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
|
||||
"dev": true
|
||||
},
|
||||
"caseless": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
|
||||
"dev": true
|
||||
},
|
||||
"combined-stream": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
|
||||
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"commander": {
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
|
||||
"integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=",
|
||||
"dev": true
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
|
||||
"dev": true
|
||||
},
|
||||
"dashdash": {
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
||||
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"assert-plus": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
|
||||
"dev": true
|
||||
},
|
||||
"diff": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz",
|
||||
"integrity": "sha1-qoVnpu7QPFMfyJ0/cRzQ5SWd7HU=",
|
||||
"dev": true
|
||||
},
|
||||
"ecc-jsbn": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
|
||||
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"jsbn": "~0.1.0",
|
||||
"safer-buffer": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"es6-promise": {
|
||||
"version": "4.2.6",
|
||||
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz",
|
||||
"integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==",
|
||||
"dev": true
|
||||
},
|
||||
"es6-promisify": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
|
||||
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"es6-promise": "^4.0.3"
|
||||
}
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||
"dev": true
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
|
||||
"dev": true
|
||||
},
|
||||
"extsprintf": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
|
||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
|
||||
"dev": true
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
|
||||
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
|
||||
"dev": true
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
|
||||
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
|
||||
"dev": true
|
||||
},
|
||||
"forever-agent": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
||||
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
|
||||
"dev": true
|
||||
},
|
||||
"form-data": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
|
||||
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.6",
|
||||
"mime-types": "^2.1.12"
|
||||
}
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
},
|
||||
"getpass": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
|
||||
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"assert-plus": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.1.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
|
||||
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"growl": {
|
||||
"version": "1.10.3",
|
||||
"resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
|
||||
"integrity": "sha1-GSa6kM8+3+KttJJ/WIC8IsZseQ8=",
|
||||
"dev": true
|
||||
},
|
||||
"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.1.3",
|
||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
|
||||
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "^6.5.5",
|
||||
"har-schema": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
|
||||
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
|
||||
"dev": true
|
||||
},
|
||||
"he": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
|
||||
"integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
|
||||
"dev": true
|
||||
},
|
||||
"http-proxy-agent": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
|
||||
"integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"agent-base": "4",
|
||||
"debug": "3.1.0"
|
||||
}
|
||||
},
|
||||
"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.2.2",
|
||||
"sshpk": "^1.7.0"
|
||||
}
|
||||
},
|
||||
"https-proxy-agent": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
|
||||
"integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"agent-base": "^4.1.0",
|
||||
"debug": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
||||
"dev": true
|
||||
},
|
||||
"is-typedarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
|
||||
"dev": true
|
||||
},
|
||||
"isstream": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
|
||||
"dev": true
|
||||
},
|
||||
"jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
|
||||
"dev": true
|
||||
},
|
||||
"json-schema": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
|
||||
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
|
||||
"dev": true
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
|
||||
"dev": true
|
||||
},
|
||||
"json-stringify-safe": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
|
||||
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
|
||||
"dev": true
|
||||
},
|
||||
"jsprim": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
|
||||
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0",
|
||||
"extsprintf": "1.3.0",
|
||||
"json-schema": "0.2.3",
|
||||
"verror": "1.10.0"
|
||||
}
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.40.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
|
||||
"integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
|
||||
"dev": true
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.24",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
|
||||
"integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mime-db": "1.40.0"
|
||||
}
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||
"dev": true
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
}
|
||||
},
|
||||
"mocha": {
|
||||
"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",
|
||||
"commander": "2.11.0",
|
||||
"debug": "3.1.0",
|
||||
"diff": "3.3.1",
|
||||
"escape-string-regexp": "1.0.5",
|
||||
"glob": "7.1.2",
|
||||
"growl": "1.10.3",
|
||||
"he": "1.1.1",
|
||||
"mkdirp": "0.5.1",
|
||||
"supports-color": "4.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"glob": {
|
||||
"version": "7.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
|
||||
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
||||
"dev": true
|
||||
},
|
||||
"oauth-sign": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
||||
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
|
||||
"dev": true
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"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
|
||||
},
|
||||
"psl": {
|
||||
"version": "1.1.31",
|
||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
|
||||
"integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==",
|
||||
"dev": true
|
||||
},
|
||||
"punycode": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
||||
"dev": true
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
|
||||
"dev": true
|
||||
},
|
||||
"querystringify": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
|
||||
"integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==",
|
||||
"dev": true
|
||||
},
|
||||
"request": {
|
||||
"version": "2.88.0",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
|
||||
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"aws-sign2": "~0.7.0",
|
||||
"aws4": "^1.8.0",
|
||||
"caseless": "~0.12.0",
|
||||
"combined-stream": "~1.0.6",
|
||||
"extend": "~3.0.2",
|
||||
"forever-agent": "~0.6.1",
|
||||
"form-data": "~2.3.2",
|
||||
"har-validator": "~5.1.0",
|
||||
"http-signature": "~1.2.0",
|
||||
"is-typedarray": "~1.0.0",
|
||||
"isstream": "~0.1.2",
|
||||
"json-stringify-safe": "~5.0.1",
|
||||
"mime-types": "~2.1.19",
|
||||
"oauth-sign": "~0.9.0",
|
||||
"performance-now": "^2.1.0",
|
||||
"qs": "~6.5.2",
|
||||
"safe-buffer": "^5.1.2",
|
||||
"tough-cookie": "~2.4.3",
|
||||
"tunnel-agent": "^0.6.0",
|
||||
"uuid": "^3.3.2"
|
||||
}
|
||||
},
|
||||
"requires-port": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
|
||||
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
|
||||
"dev": true
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
||||
"dev": true
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
||||
"dev": true
|
||||
},
|
||||
"semver": {
|
||||
"version": "5.7.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
|
||||
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
|
||||
"dev": true
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
|
||||
"dev": true
|
||||
},
|
||||
"source-map-support": {
|
||||
"version": "0.5.12",
|
||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
|
||||
"integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"buffer-from": "^1.0.0",
|
||||
"source-map": "^0.6.0"
|
||||
}
|
||||
},
|
||||
"sshpk": {
|
||||
"version": "1.16.1",
|
||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
|
||||
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"asn1": "~0.2.3",
|
||||
"assert-plus": "^1.0.0",
|
||||
"bcrypt-pbkdf": "^1.0.0",
|
||||
"dashdash": "^1.12.0",
|
||||
"ecc-jsbn": "~0.1.1",
|
||||
"getpass": "^0.1.1",
|
||||
"jsbn": "~0.1.0",
|
||||
"safer-buffer": "^2.0.2",
|
||||
"tweetnacl": "~0.14.0"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
|
||||
"integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "2.4.3",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
|
||||
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"psl": "^1.1.24",
|
||||
"punycode": "^1.4.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"punycode": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"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.0.1"
|
||||
}
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "0.14.5",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
|
||||
"dev": true
|
||||
},
|
||||
"typescript": {
|
||||
"version": "2.9.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
|
||||
"integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
|
||||
"dev": true
|
||||
},
|
||||
"uri-js": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
|
||||
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"url-parse": {
|
||||
"version": "1.4.6",
|
||||
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.6.tgz",
|
||||
"integrity": "sha512-/B8AD9iQ01seoXmXf9z/MjLZQIdOoYl/+gvsQF6+mpnxaTfG9P7srYaiqaDMyKkR36XMXfhqSHss5MyFAO8lew==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"querystringify": "^2.0.0",
|
||||
"requires-port": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"uuid": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
|
||||
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
|
||||
"dev": true
|
||||
},
|
||||
"verror": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"assert-plus": "^1.0.0",
|
||||
"core-util-is": "1.0.2",
|
||||
"extsprintf": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"vscode": {
|
||||
"version": "1.1.33",
|
||||
"resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.33.tgz",
|
||||
"integrity": "sha512-sXedp2oF6y4ZvqrrFiZpeMzaCLSWV+PpYkIxjG/iYquNZ9KrLL2LujltGxPLvzn49xu2sZkyC+avVNFgcJD1Iw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"glob": "^7.1.2",
|
||||
"mocha": "^4.0.1",
|
||||
"request": "^2.88.0",
|
||||
"semver": "^5.4.1",
|
||||
"source-map-support": "^0.5.0",
|
||||
"url-parse": "^1.4.4",
|
||||
"vscode-test": "^0.1.4"
|
||||
}
|
||||
},
|
||||
"vscode-test": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.1.5.tgz",
|
||||
"integrity": "sha512-s+lbF1Dtasc0yXVB9iQTexBe2JK6HJAUJe3fWezHKIjq+xRw5ZwCMEMBaonFIPy7s95qg2HPTRDR5W4h4kbxGw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"http-proxy-agent": "^2.1.0",
|
||||
"https-proxy-agent": "^2.2.1"
|
||||
}
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
80
package.json
80
package.json
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "frog",
|
||||
"displayName": "frog",
|
||||
"displayName": "Frog",
|
||||
"description": "The Oracle SQL workbench for VSCode",
|
||||
"version": "0.0.14",
|
||||
"publisher": "todie",
|
||||
"version": "0.0.30",
|
||||
"publisher": "tmuerell",
|
||||
"engines": {
|
||||
"vscode": "^1.17.0"
|
||||
"vscode": "^1.23.0"
|
||||
},
|
||||
"categories": [
|
||||
"Other"
|
||||
@@ -15,24 +15,49 @@
|
||||
"onLanguage:plsql",
|
||||
"onView:connections"
|
||||
],
|
||||
"icon": "images/database.png",
|
||||
"main": "./out/extension",
|
||||
"contributes": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "frog.executeSnippet",
|
||||
"title": "Execute SQL Snippet"
|
||||
"title": "Frog: Execute SQL Snippet"
|
||||
},
|
||||
{
|
||||
"command": "frog.compileFile",
|
||||
"title": "Compiles the current file"
|
||||
"title": "Frog: Compiles the current file"
|
||||
},
|
||||
{
|
||||
"command": "frog.commit",
|
||||
"title": "Frog: Commits the current transaction",
|
||||
"icon": {
|
||||
"light": "images/commit.svg",
|
||||
"dark": "images/commit_inverse.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "frog.rollback",
|
||||
"title": "Frog: Rollbacks",
|
||||
"icon": {
|
||||
"light": "images/rollback.svg",
|
||||
"dark": "images/rollback_inverse.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "frog.checkConnection",
|
||||
"title": "Frog: Checks the connection"
|
||||
},
|
||||
{
|
||||
"command": "frog.selectConnection",
|
||||
"title": "Selects the connection to use"
|
||||
"title": "Frog: Selects the connection to use"
|
||||
},
|
||||
{
|
||||
"command": "frog.setRowLimit",
|
||||
"title": "Sets the row limit"
|
||||
"title": "Frog: Sets the row limit"
|
||||
},
|
||||
{
|
||||
"command": "frog.chooseConnection",
|
||||
"title": "Frog: Choose a connection to use"
|
||||
}
|
||||
],
|
||||
"keybindings": [
|
||||
@@ -46,7 +71,6 @@
|
||||
"key": "ctrl+alt+c",
|
||||
"mac": "ctrl+alt+c"
|
||||
}
|
||||
|
||||
],
|
||||
"views": {
|
||||
"explorer": [
|
||||
@@ -73,7 +97,35 @@
|
||||
"scopeName": "code.log",
|
||||
"path": "./syntaxes/frog-runner.tmLanguage"
|
||||
}
|
||||
]
|
||||
],
|
||||
"menus": {
|
||||
"editor/title": [
|
||||
{
|
||||
"command": "frog.commit",
|
||||
"group": "navigation"
|
||||
},
|
||||
{
|
||||
"command": "frog.rollback",
|
||||
"group": "navigation"
|
||||
}
|
||||
]
|
||||
},
|
||||
"configuration": {
|
||||
"type": "object",
|
||||
"title": "Frog configuration",
|
||||
"properties": {
|
||||
"frog.javaHome": {
|
||||
"type": "string",
|
||||
"default": "",
|
||||
"description": "Set the java home to use for the runner."
|
||||
},
|
||||
"frog.resultSetStyles": {
|
||||
"type": "string",
|
||||
"default": "",
|
||||
"description": "Set additional CSS styles for the result set viewer (Example: 'td { color: red; }')"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"vscode:prepublish": "npm run compile",
|
||||
@@ -83,9 +135,9 @@
|
||||
"test": "npm run compile && node ./node_modules/vscode/bin/test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^2.5.3",
|
||||
"vscode": "^1.1.5",
|
||||
"@types/node": "^7.0.43",
|
||||
"@types/mocha": "^2.2.42"
|
||||
"@types/mocha": "^2.2.42",
|
||||
"@types/node": "^9.4.6",
|
||||
"typescript": "^2.8.3",
|
||||
"vscode": "^1.1.33"
|
||||
}
|
||||
}
|
@@ -29,7 +29,7 @@ export class BlockDetector {
|
||||
}
|
||||
} else {
|
||||
while (!endLine.text.match(/;/) && endLine.lineNumber < doc.lineCount-1) {
|
||||
endLine = this.editor.document.lineAt(startLine.lineNumber+1)
|
||||
endLine = this.editor.document.lineAt(endLine.lineNumber+1)
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -49,6 +49,21 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
});
|
||||
context.subscriptions.push(disposable);
|
||||
|
||||
disposable = vscode.commands.registerCommand('frog.commit', () => {
|
||||
sessionManager.execute("commit", 0);
|
||||
});
|
||||
context.subscriptions.push(disposable);
|
||||
|
||||
disposable = vscode.commands.registerCommand('frog.rollback', () => {
|
||||
sessionManager.execute("rollback", 0);
|
||||
});
|
||||
context.subscriptions.push(disposable);
|
||||
|
||||
disposable = vscode.commands.registerCommand('frog.checkConnection', () => {
|
||||
sessionManager.execute("select 1 from dual", 1);
|
||||
});
|
||||
context.subscriptions.push(disposable);
|
||||
|
||||
function changeSession(node: ConnectionNode) {
|
||||
sessionManager.currentConnection = node;
|
||||
}
|
||||
@@ -59,7 +74,7 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
});
|
||||
context.subscriptions.push(disposable);
|
||||
|
||||
vscode.commands.registerCommand('frog.selectConnection', (node: ConnectionNode) => {
|
||||
disposable = vscode.commands.registerCommand('frog.selectConnection', (node: ConnectionNode) => {
|
||||
if (!sessionManager.isSessionActive()) {
|
||||
sessionManager.currentConnection = node;
|
||||
} else {
|
||||
@@ -71,6 +86,17 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
}, (reason) => {})
|
||||
}
|
||||
})
|
||||
context.subscriptions.push(disposable);
|
||||
|
||||
disposable = vscode.commands.registerCommand('frog.chooseConnection', () => {
|
||||
vscode.window.showQuickPick(["A", "B", "C"])
|
||||
.then( (selection) => {
|
||||
if (selection == 'Yes') {
|
||||
console.log(selection);
|
||||
}
|
||||
}, (reason) => {})
|
||||
})
|
||||
context.subscriptions.push(disposable);
|
||||
}
|
||||
|
||||
// this method is called when your extension is deactivated
|
||||
|
@@ -6,13 +6,19 @@ export class TextDocumentContentProvider implements vscode.TextDocumentContentPr
|
||||
|
||||
public provideTextDocumentContent(uri: vscode.Uri): string {
|
||||
if (!this._data) return this.errorSnippet();
|
||||
if (this._data['rows'].length == 0) return this.errorSnippet();
|
||||
|
||||
const configuration = vscode.workspace.getConfiguration('frog')
|
||||
const additionalStyles = configuration.get("resultSetStyles", "")
|
||||
|
||||
let styles = `<style>
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table td, table th {
|
||||
padding: 3px;
|
||||
padding: 2px;
|
||||
font-size: 11px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
tr:hover {
|
||||
background-color: #aaaa66;
|
||||
@@ -30,6 +36,9 @@ export class TextDocumentContentProvider implements vscode.TextDocumentContentPr
|
||||
.vscode-dark #limitBox a {
|
||||
color: white;
|
||||
}
|
||||
.vscode-dark table td.value-null {
|
||||
background-color: #666600;
|
||||
}
|
||||
|
||||
.vscode-light table {
|
||||
border: solid 1px black;
|
||||
@@ -40,6 +49,11 @@ export class TextDocumentContentProvider implements vscode.TextDocumentContentPr
|
||||
.vscode-light #limitBox a {
|
||||
color: black;
|
||||
}
|
||||
.vscode-light table td.value-null {
|
||||
background-color: #cccc33;
|
||||
}
|
||||
|
||||
${additionalStyles}
|
||||
</style>`
|
||||
|
||||
const choosableLimits = [2,10,50]
|
||||
@@ -51,7 +65,7 @@ export class TextDocumentContentProvider implements vscode.TextDocumentContentPr
|
||||
text += this._data['columnDefinitions'].map((x) => `<th>${x['name']}</th>`).join('')
|
||||
text += '</tr>'
|
||||
text += this._data['rows'].map((r) =>
|
||||
'<tr>' + r['columns'].map((c) => '<td>' + c['value'] + '</td>').join('') + '</tr>'
|
||||
'<tr>' + r['columns'].map((c) => '<td class="' + (c['value'] == null ? 'value-null' : 'value-value') + '">' + (c['value'] == null ? 'NULL' : c['value']) + '</td>').join('') + '</tr>'
|
||||
).join('')
|
||||
text += '</table></body>'
|
||||
return text;
|
||||
@@ -74,12 +88,7 @@ export class TextDocumentContentProvider implements vscode.TextDocumentContentPr
|
||||
<body>
|
||||
<table>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Name</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>Foobar</td>
|
||||
<td>No results found!</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>`;
|
||||
|
@@ -2,6 +2,7 @@ import * as vscode from 'vscode';
|
||||
import { ConnectionNode } from './connections'
|
||||
import { spawn } from 'child_process'
|
||||
import { TextDocumentContentProvider } from './resultsetview'
|
||||
import * as path from 'path'
|
||||
|
||||
const extensionName = "frog";
|
||||
const previewUri = vscode.Uri.parse('frog-view://authority/resultset');
|
||||
@@ -49,7 +50,7 @@ export class SessionManager {
|
||||
if (!this.dbSession) return;
|
||||
|
||||
this.dbSession.stdin.end();
|
||||
this.dbSession = null;
|
||||
this.dbSession.kill();
|
||||
}
|
||||
|
||||
public check() : boolean {
|
||||
@@ -58,8 +59,18 @@ export class SessionManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
let extPath = vscode.extensions.getExtension("todie.frog").extensionPath;
|
||||
this.dbSession = spawn("java", ['-jar', extPath + '/frog-runner.jar', this.currentConnection.host, this.currentConnection.port.toString(), this.currentConnection.schema, this.currentConnection.username, this.currentConnection.password]);
|
||||
if (this.dbSession) {
|
||||
return true;
|
||||
}
|
||||
|
||||
let extPath = vscode.extensions.getExtension("tmuerell.frog").extensionPath;
|
||||
const configuration = vscode.workspace.getConfiguration('frog')
|
||||
const javaHome = configuration.get("javaHome", "")
|
||||
let java = "java";
|
||||
if (javaHome) {
|
||||
java = path.join(javaHome, 'bin', 'java')
|
||||
}
|
||||
this.dbSession = spawn(java, ['-Dfile.encoding=UTF-8', '-jar', extPath + '/frog-runner.jar', this.currentConnection.host, this.currentConnection.port.toString(), this.currentConnection.schema, this.currentConnection.username, this.currentConnection.password]);
|
||||
|
||||
let outputBuffer = "";
|
||||
|
||||
@@ -69,6 +80,8 @@ export class SessionManager {
|
||||
try {
|
||||
let json = JSON.parse(outputBuffer);
|
||||
|
||||
const editor = vscode.window.activeTextEditor;
|
||||
const document = editor.document;
|
||||
const diagnostics = [];
|
||||
let cd = json['columnDefinitions']
|
||||
|
||||
@@ -79,9 +92,6 @@ export class SessionManager {
|
||||
if (json['userErrors']) {
|
||||
this.outputChannel.append("Errors found:\n");
|
||||
|
||||
const editor = vscode.window.activeTextEditor;
|
||||
const document = editor.document;
|
||||
|
||||
for (let error of json['userErrors'][0]['lines']) {
|
||||
let range = document.lineAt(editor.selection.start.line + error['line'] - 1).range;
|
||||
let diagnostic = new vscode.Diagnostic(range, error['text'], vscode.DiagnosticSeverity.Error);
|
||||
@@ -91,27 +101,32 @@ export class SessionManager {
|
||||
this.outputChannel.append(error['line'] + ": " + error['text'] + "\n");
|
||||
}
|
||||
|
||||
this.diagnosticCollection.set(document.uri, diagnostics);
|
||||
} else if (json['exception']) {
|
||||
this.outputChannel.append("Exception caught: " + json['exceptionMessage'] + "\n");
|
||||
} else if ("affectedRows" in json) {
|
||||
this.outputChannel.append(json['affectedRows'] + " rows affected.\n");
|
||||
} else {
|
||||
vscode.window.showInformationMessage('Query executed successfully.');
|
||||
this.outputChannel.append("SQL executed successfully.\n");
|
||||
}
|
||||
} else {
|
||||
this.provider.setData(json);
|
||||
this.provider.update(previewUri);
|
||||
|
||||
vscode.commands.executeCommand('vscode.previewHtml', previewUri, vscode.ViewColumn.Two, 'Result Set View').then((success) => {
|
||||
}, (reason) => {
|
||||
vscode.window.showErrorMessage(reason);
|
||||
});
|
||||
const panel = vscode.window.createWebviewPanel(
|
||||
'frogResults',
|
||||
'Result Set View',
|
||||
vscode.ViewColumn.Two,
|
||||
{}
|
||||
);
|
||||
|
||||
panel.webview.html = this.getWebviewContent(json);
|
||||
|
||||
this.outputChannel.append("Query successful.\n");
|
||||
}
|
||||
|
||||
this.outputChannel.append("-- " + new Date() + " -------------------------------\n");
|
||||
this.diagnosticCollection.set(document.uri, diagnostics);
|
||||
this.outputChannel.append("-- end@" + this.currentConnection.name + " " + new Date() + " -------------------------------\n");
|
||||
outputBuffer = "";
|
||||
this.statusBarItem.text = this.currentConnection.name + " (Connected)";
|
||||
} catch (e) {
|
||||
@@ -133,10 +148,88 @@ export class SessionManager {
|
||||
return true;
|
||||
}
|
||||
|
||||
private getWebviewContent(data): string {
|
||||
if (!data) return this.errorSnippet();
|
||||
if (data['rows'].length == 0) return this.errorSnippet();
|
||||
|
||||
const configuration = vscode.workspace.getConfiguration('frog')
|
||||
const additionalStyles = configuration.get("resultSetStyles", "")
|
||||
|
||||
let styles = `<style>
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table td, table th {
|
||||
padding: 2px;
|
||||
font-size: 11px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
tr:hover {
|
||||
background-color: #aaaa66;
|
||||
}
|
||||
#limitBox a {
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.vscode-dark table {
|
||||
border: solid 1px white;
|
||||
}
|
||||
.vscode-dark table td, .vscode-dark table th {
|
||||
border: solid 1px white;
|
||||
}
|
||||
.vscode-dark #limitBox a {
|
||||
color: white;
|
||||
}
|
||||
.vscode-dark table td.value-null {
|
||||
background-color: #666600;
|
||||
}
|
||||
|
||||
.vscode-light table {
|
||||
border: solid 1px black;
|
||||
}
|
||||
.vscode-light table td, .vscode-light table th {
|
||||
border: solid 1px black;
|
||||
}
|
||||
.vscode-light #limitBox a {
|
||||
color: black;
|
||||
}
|
||||
.vscode-light table td.value-null {
|
||||
background-color: #cccc33;
|
||||
}
|
||||
|
||||
${additionalStyles}
|
||||
</style>`
|
||||
|
||||
const choosableLimits = [2,10,50]
|
||||
let limitBox = '<div id="limitBox"><p>Limit Results: '
|
||||
+ choosableLimits.map((limit) =>
|
||||
`<a href="${encodeURI('command:frog.setRowLimit?{"rowLimit": ' + limit + '}')}">${limit}</a>`).join('') + '</p></div>'
|
||||
|
||||
let text = `<body>${styles}${limitBox}<table><tr>`
|
||||
text += data['columnDefinitions'].map((x) => `<th>${x['name']}</th>`).join('')
|
||||
text += '</tr>'
|
||||
text += data['rows'].map((r) =>
|
||||
'<tr>' + r['columns'].map((c) => '<td class="' + (c['value'] == null ? 'value-null' : 'value-value') + '">' + (c['value'] == null ? 'NULL' : c['value']) + '</td>').join('') + '</tr>'
|
||||
).join('')
|
||||
text += '</table></body>'
|
||||
return text;
|
||||
}
|
||||
|
||||
private errorSnippet(): string {
|
||||
return `
|
||||
<body>
|
||||
<table>
|
||||
<tr>
|
||||
<td>No results found!</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>`;
|
||||
}
|
||||
|
||||
public execute(text : string, rowLimit : number) {
|
||||
if (!this.check()) return;
|
||||
|
||||
this.outputChannel.append("-- " + new Date() + " -------------------------------\n"); //Executing: '" + text + "'\n");
|
||||
this.outputChannel.append("-- begin@" + this.currentConnection.name + " " + new Date() + " -------------------------------\n");
|
||||
let input = { "sql": text, "rowLimit": rowLimit };
|
||||
this.dbSession.stdin.write(JSON.stringify(input) + "\n--- END ---\n");
|
||||
this.statusBarItem.text = this.currentConnection.name + " (Connected, Query running...)";
|
||||
|
Reference in New Issue
Block a user