Compare commits

...

23 Commits

Author SHA1 Message Date
Thorsten Muerell c5447c2ebe Updated to new vscode version
5 years ago
Thorsten Muerell 700de5c93b Updated plugin
5 years ago
Thorsten Muerell 917d77fa84 Fixed some bugs
6 years ago
Thorsten Muerell 5bb64db2fe Version bump
7 years ago
Thorsten Muerell 504e209202 Fixed some bugs
7 years ago
Thorsten Muerell 0d194a9e19 Fixed problems with delete
7 years ago
Thorsten Muerell 1ef2f9eb96 Better display
7 years ago
Thorsten Muerell 68740939fa Commit / Rollback
7 years ago
Thorsten Muerell 107a162370 Added commit and rollback
7 years ago
Thorsten Muerell 5a1c85aa04 Add commit and rollback
7 years ago
Thorsten Muerell cd25b6a0f7 Bugfixes
7 years ago
Thorsten Muerell ae2dfe3db1 Added icon
7 years ago
Thorsten Muerell f6d05981a8 Version bump
7 years ago
Thorsten Muerell 217ced320f Improved session handling
7 years ago
Thorsten Muerell 4acb140b25 Version bump
7 years ago
Thorsten Muerell 8a1f942298 Fixed comments
7 years ago
Thorsten Muerell da12eb698d Small fixes
7 years ago
Thorsten Muerell 85add9bb6b UTF-8
7 years ago
Thorsten Muerell 69eec45dc1 version bump
7 years ago
Thorsten Muerell c684fa0c7c Added java home
7 years ago
Thorsten Muerell 2267d86f03 Configure Java Home
7 years ago
Thorsten Muerell 1e66025b23 Version dump
7 years ago
Thorsten Muerell aed27e72be Small changes
7 years ago

1
.gitignore vendored

@ -3,3 +3,4 @@ node_modules
.vscode-test/ .vscode-test/
*.vsix *.vsix
**/.DS_Store **/.DS_Store
npm-debug.log

@ -1,7 +1,35 @@
# Change Log # Change Log
All notable changes to the "frog" extension will be documented in this file. 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
- 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
## [Unreleased] - Fixed bug with endless loop
- Initial release

@ -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

Binary file not shown.

@ -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

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

@ -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

@ -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

@ -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
}
}
}

@ -1,11 +1,11 @@
{ {
"name": "frog", "name": "frog",
"displayName": "frog", "displayName": "Frog",
"description": "The Oracle SQL workbench for VSCode", "description": "The Oracle SQL workbench for VSCode",
"version": "0.0.14", "version": "0.0.30",
"publisher": "todie", "publisher": "tmuerell",
"engines": { "engines": {
"vscode": "^1.17.0" "vscode": "^1.23.0"
}, },
"categories": [ "categories": [
"Other" "Other"
@ -15,24 +15,49 @@
"onLanguage:plsql", "onLanguage:plsql",
"onView:connections" "onView:connections"
], ],
"icon": "images/database.png",
"main": "./out/extension", "main": "./out/extension",
"contributes": { "contributes": {
"commands": [ "commands": [
{ {
"command": "frog.executeSnippet", "command": "frog.executeSnippet",
"title": "Execute SQL Snippet" "title": "Frog: Execute SQL Snippet"
}, },
{ {
"command": "frog.compileFile", "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", "command": "frog.selectConnection",
"title": "Selects the connection to use" "title": "Frog: Selects the connection to use"
}, },
{ {
"command": "frog.setRowLimit", "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": [ "keybindings": [
@ -46,7 +71,6 @@
"key": "ctrl+alt+c", "key": "ctrl+alt+c",
"mac": "ctrl+alt+c" "mac": "ctrl+alt+c"
} }
], ],
"views": { "views": {
"explorer": [ "explorer": [
@ -73,7 +97,35 @@
"scopeName": "code.log", "scopeName": "code.log",
"path": "./syntaxes/frog-runner.tmLanguage" "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": { "scripts": {
"vscode:prepublish": "npm run compile", "vscode:prepublish": "npm run compile",
@ -83,9 +135,9 @@
"test": "npm run compile && node ./node_modules/vscode/bin/test" "test": "npm run compile && node ./node_modules/vscode/bin/test"
}, },
"devDependencies": { "devDependencies": {
"typescript": "^2.5.3", "@types/mocha": "^2.2.42",
"vscode": "^1.1.5", "@types/node": "^9.4.6",
"@types/node": "^7.0.43", "typescript": "^2.8.3",
"@types/mocha": "^2.2.42" "vscode": "^1.1.33"
} }
} }

@ -29,7 +29,7 @@ export class BlockDetector {
} }
} else { } else {
while (!endLine.text.match(/;/) && endLine.lineNumber < doc.lineCount-1) { 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); 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) { function changeSession(node: ConnectionNode) {
sessionManager.currentConnection = node; sessionManager.currentConnection = node;
} }
@ -59,7 +74,7 @@ export function activate(context: vscode.ExtensionContext) {
}); });
context.subscriptions.push(disposable); context.subscriptions.push(disposable);
vscode.commands.registerCommand('frog.selectConnection', (node: ConnectionNode) => { disposable = vscode.commands.registerCommand('frog.selectConnection', (node: ConnectionNode) => {
if (!sessionManager.isSessionActive()) { if (!sessionManager.isSessionActive()) {
sessionManager.currentConnection = node; sessionManager.currentConnection = node;
} else { } else {
@ -71,6 +86,17 @@ export function activate(context: vscode.ExtensionContext) {
}, (reason) => {}) }, (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 // 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 { public provideTextDocumentContent(uri: vscode.Uri): string {
if (!this._data) return this.errorSnippet(); 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> let styles = `<style>
table { table {
border-collapse: collapse; border-collapse: collapse;
} }
table td, table th { table td, table th {
padding: 3px; padding: 2px;
font-size: 11px;
white-space: nowrap;
} }
tr:hover { tr:hover {
background-color: #aaaa66; background-color: #aaaa66;
@ -30,6 +36,9 @@ export class TextDocumentContentProvider implements vscode.TextDocumentContentPr
.vscode-dark #limitBox a { .vscode-dark #limitBox a {
color: white; color: white;
} }
.vscode-dark table td.value-null {
background-color: #666600;
}
.vscode-light table { .vscode-light table {
border: solid 1px black; border: solid 1px black;
@ -40,6 +49,11 @@ export class TextDocumentContentProvider implements vscode.TextDocumentContentPr
.vscode-light #limitBox a { .vscode-light #limitBox a {
color: black; color: black;
} }
.vscode-light table td.value-null {
background-color: #cccc33;
}
${additionalStyles}
</style>` </style>`
const choosableLimits = [2,10,50] 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 += this._data['columnDefinitions'].map((x) => `<th>${x['name']}</th>`).join('')
text += '</tr>' text += '</tr>'
text += this._data['rows'].map((r) => 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('') ).join('')
text += '</table></body>' text += '</table></body>'
return text; return text;
@ -74,12 +88,7 @@ export class TextDocumentContentProvider implements vscode.TextDocumentContentPr
<body> <body>
<table> <table>
<tr> <tr>
<th>ID</th> <td>No results found!</td>
<th>Name</th>
</tr>
<tr>
<td>1</td>
<td>Foobar</td>
</tr> </tr>
</table> </table>
</body>`; </body>`;

@ -2,6 +2,7 @@ import * as vscode from 'vscode';
import { ConnectionNode } from './connections' import { ConnectionNode } from './connections'
import { spawn } from 'child_process' import { spawn } from 'child_process'
import { TextDocumentContentProvider } from './resultsetview' import { TextDocumentContentProvider } from './resultsetview'
import * as path from 'path'
const extensionName = "frog"; const extensionName = "frog";
const previewUri = vscode.Uri.parse('frog-view://authority/resultset'); const previewUri = vscode.Uri.parse('frog-view://authority/resultset');
@ -49,7 +50,7 @@ export class SessionManager {
if (!this.dbSession) return; if (!this.dbSession) return;
this.dbSession.stdin.end(); this.dbSession.stdin.end();
this.dbSession = null; this.dbSession.kill();
} }
public check() : boolean { public check() : boolean {
@ -58,8 +59,18 @@ export class SessionManager {
return false; return false;
} }
let extPath = vscode.extensions.getExtension("todie.frog").extensionPath; if (this.dbSession) {
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]); 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 = ""; let outputBuffer = "";
@ -69,6 +80,8 @@ export class SessionManager {
try { try {
let json = JSON.parse(outputBuffer); let json = JSON.parse(outputBuffer);
const editor = vscode.window.activeTextEditor;
const document = editor.document;
const diagnostics = []; const diagnostics = [];
let cd = json['columnDefinitions'] let cd = json['columnDefinitions']
@ -79,9 +92,6 @@ export class SessionManager {
if (json['userErrors']) { if (json['userErrors']) {
this.outputChannel.append("Errors found:\n"); this.outputChannel.append("Errors found:\n");
const editor = vscode.window.activeTextEditor;
const document = editor.document;
for (let error of json['userErrors'][0]['lines']) { for (let error of json['userErrors'][0]['lines']) {
let range = document.lineAt(editor.selection.start.line + error['line'] - 1).range; let range = document.lineAt(editor.selection.start.line + error['line'] - 1).range;
let diagnostic = new vscode.Diagnostic(range, error['text'], vscode.DiagnosticSeverity.Error); 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.outputChannel.append(error['line'] + ": " + error['text'] + "\n");
} }
this.diagnosticCollection.set(document.uri, diagnostics);
} else if (json['exception']) { } else if (json['exception']) {
this.outputChannel.append("Exception caught: " + json['exceptionMessage'] + "\n"); this.outputChannel.append("Exception caught: " + json['exceptionMessage'] + "\n");
} else if ("affectedRows" in json) { } else if ("affectedRows" in json) {
this.outputChannel.append(json['affectedRows'] + " rows affected.\n"); this.outputChannel.append(json['affectedRows'] + " rows affected.\n");
} else { } else {
vscode.window.showInformationMessage('Query executed successfully.');
this.outputChannel.append("SQL executed successfully.\n"); this.outputChannel.append("SQL executed successfully.\n");
} }
} else { } else {
this.provider.setData(json); this.provider.setData(json);
this.provider.update(previewUri); this.provider.update(previewUri);
vscode.commands.executeCommand('vscode.previewHtml', previewUri, vscode.ViewColumn.Two, 'Result Set View').then((success) => { const panel = vscode.window.createWebviewPanel(
}, (reason) => { 'frogResults',
vscode.window.showErrorMessage(reason); 'Result Set View',
}); vscode.ViewColumn.Two,
{}
);
panel.webview.html = this.getWebviewContent(json);
this.outputChannel.append("Query successful.\n"); 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 = ""; outputBuffer = "";
this.statusBarItem.text = this.currentConnection.name + " (Connected)"; this.statusBarItem.text = this.currentConnection.name + " (Connected)";
} catch (e) { } catch (e) {
@ -133,10 +148,88 @@ export class SessionManager {
return true; 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) { public execute(text : string, rowLimit : number) {
if (!this.check()) return; 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 }; let input = { "sql": text, "rowLimit": rowLimit };
this.dbSession.stdin.write(JSON.stringify(input) + "\n--- END ---\n"); this.dbSession.stdin.write(JSON.stringify(input) + "\n--- END ---\n");
this.statusBarItem.text = this.currentConnection.name + " (Connected, Query running...)"; this.statusBarItem.text = this.currentConnection.name + " (Connected, Query running...)";

Loading…
Cancel
Save