From f3f8aac697d2850177de94b170d65b0c9d2b4204 Mon Sep 17 00:00:00 2001 From: Ebenezer Nikabou Date: Wed, 20 Dec 2023 23:24:04 +0200 Subject: [PATCH 1/7] added basic interactive mode logic --- coverage/base.css | 224 +++++++++++++ coverage/block-navigation.js | 87 ++++++ coverage/clover.xml | 133 ++++++++ coverage/coverage-final.json | 8 + coverage/favicon.png | Bin 0 -> 445 bytes coverage/gpt-shell/index.html | 116 +++++++ coverage/gpt-shell/index.js.html | 295 ++++++++++++++++++ coverage/gpt-shell/src/index.html | 131 ++++++++ coverage/gpt-shell/src/main.js.html | 181 +++++++++++ coverage/gpt-shell/src/request-helper.js.html | 187 +++++++++++ .../gpt-shell/src/utilities/animation.js.html | 118 +++++++ .../src/utilities/error-handling.js.html | 148 +++++++++ .../src/utilities/get-config.js.html | 220 +++++++++++++ coverage/gpt-shell/src/utilities/index.html | 161 ++++++++++ .../gpt-shell/src/utilities/logger.js.html | 271 ++++++++++++++++ coverage/index.html | 146 +++++++++ coverage/prettify.css | 1 + coverage/prettify.js | 2 + coverage/sort-arrow-sprite.png | Bin 0 -> 138 bytes coverage/sorter.js | 196 ++++++++++++ package-lock.json | 8 + package.json | 1 + src/consts/app-global-consts.js | 10 + src/main.js | 15 + src/request-helper.js | 31 +- src/utilities/logger.js | 7 +- 26 files changed, 2689 insertions(+), 8 deletions(-) create mode 100644 coverage/base.css create mode 100644 coverage/block-navigation.js create mode 100644 coverage/clover.xml create mode 100644 coverage/coverage-final.json create mode 100644 coverage/favicon.png create mode 100644 coverage/gpt-shell/index.html create mode 100644 coverage/gpt-shell/index.js.html create mode 100644 coverage/gpt-shell/src/index.html create mode 100644 coverage/gpt-shell/src/main.js.html create mode 100644 coverage/gpt-shell/src/request-helper.js.html create mode 100644 coverage/gpt-shell/src/utilities/animation.js.html create mode 100644 coverage/gpt-shell/src/utilities/error-handling.js.html create mode 100644 coverage/gpt-shell/src/utilities/get-config.js.html create mode 100644 coverage/gpt-shell/src/utilities/index.html create mode 100644 coverage/gpt-shell/src/utilities/logger.js.html create mode 100644 coverage/index.html create mode 100644 coverage/prettify.css create mode 100644 coverage/prettify.js create mode 100644 coverage/sort-arrow-sprite.png create mode 100644 coverage/sorter.js create mode 100644 src/consts/app-global-consts.js diff --git a/coverage/base.css b/coverage/base.css new file mode 100644 index 0000000..f418035 --- /dev/null +++ b/coverage/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/block-navigation.js b/coverage/block-navigation.js new file mode 100644 index 0000000..cc12130 --- /dev/null +++ b/coverage/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/clover.xml b/coverage/clover.xml new file mode 100644 index 0000000..9a308b6 --- /dev/null +++ b/coverage/clover.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json new file mode 100644 index 0000000..f56dcd9 --- /dev/null +++ b/coverage/coverage-final.json @@ -0,0 +1,8 @@ +{"/home/eben/projects/gpt-shell/index.js": {"path":"/home/eben/projects/gpt-shell/index.js","statementMap":{"0":{"start":{"line":7,"column":36},"end":{"line":9,"column":1}},"1":{"start":{"line":8,"column":2},"end":{"line":8,"column":48}},"2":{"start":{"line":8,"column":28},"end":{"line":8,"column":46}},"3":{"start":{"line":11,"column":0},"end":{"line":70,"column":11}},"4":{"start":{"line":17,"column":6},"end":{"line":29,"column":11}},"5":{"start":{"line":32,"column":6},"end":{"line":32,"column":23}},"6":{"start":{"line":39,"column":6},"end":{"line":57,"column":11}},"7":{"start":{"line":60,"column":6},"end":{"line":60,"column":22}},"8":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"9":{"start":{"line":65,"column":6},"end":{"line":65,"column":45}},"10":{"start":{"line":67,"column":4},"end":{"line":67,"column":16}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":36},"end":{"line":7,"column":37}},"loc":{"start":{"line":7,"column":52},"end":{"line":9,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":19},"end":{"line":8,"column":20}},"loc":{"start":{"line":8,"column":28},"end":{"line":8,"column":46}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":5}},"loc":{"start":{"line":16,"column":15},"end":{"line":30,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":31,"column":4},"end":{"line":31,"column":5}},"loc":{"start":{"line":31,"column":14},"end":{"line":33,"column":5}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":38,"column":4},"end":{"line":38,"column":5}},"loc":{"start":{"line":38,"column":15},"end":{"line":58,"column":5}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":59,"column":4},"end":{"line":59,"column":5}},"loc":{"start":{"line":59,"column":14},"end":{"line":61,"column":5}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":63,"column":9},"end":{"line":63,"column":10}},"loc":{"start":{"line":63,"column":19},"end":{"line":68,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},{"start":{"line":64,"column":4},"end":{"line":66,"column":5}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"b":{"0":[0,0]}} +,"/home/eben/projects/gpt-shell/src/main.js": {"path":"/home/eben/projects/gpt-shell/src/main.js","statementMap":{"0":{"start":{"line":6,"column":19},"end":{"line":14,"column":1}},"1":{"start":{"line":7,"column":2},"end":{"line":13,"column":7}},"2":{"start":{"line":9,"column":6},"end":{"line":9,"column":58}},"3":{"start":{"line":12,"column":6},"end":{"line":12,"column":49}},"4":{"start":{"line":16,"column":25},"end":{"line":32,"column":1}},"5":{"start":{"line":17,"column":23},"end":{"line":17,"column":27}},"6":{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},"7":{"start":{"line":19,"column":4},"end":{"line":19,"column":77}},"8":{"start":{"line":22,"column":33},"end":{"line":22,"column":37}},"9":{"start":{"line":23,"column":17},"end":{"line":27,"column":3}},"10":{"start":{"line":29,"column":2},"end":{"line":29,"column":80}},"11":{"start":{"line":31,"column":2},"end":{"line":31,"column":30}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":19},"end":{"line":6,"column":20}},"loc":{"start":{"line":6,"column":31},"end":{"line":14,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":10},"end":{"line":8,"column":11}},"loc":{"start":{"line":8,"column":20},"end":{"line":10,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":11},"end":{"line":11,"column":12}},"loc":{"start":{"line":11,"column":22},"end":{"line":13,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":16,"column":25},"end":{"line":16,"column":26}},"loc":{"start":{"line":16,"column":35},"end":{"line":32,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},"type":"if","locations":[{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},{"start":{"line":18,"column":2},"end":{"line":20,"column":3}}]},"1":{"loc":{"start":{"line":24,"column":12},"end":{"line":24,"column":74}},"type":"binary-expr","locations":[{"start":{"line":24,"column":12},"end":{"line":24,"column":18}},{"start":{"line":24,"column":22},"end":{"line":24,"column":44}},{"start":{"line":24,"column":48},"end":{"line":24,"column":74}}]},"2":{"loc":{"start":{"line":25,"column":11},"end":{"line":25,"column":77}},"type":"binary-expr","locations":[{"start":{"line":25,"column":11},"end":{"line":25,"column":16}},{"start":{"line":25,"column":20},"end":{"line":25,"column":41}},{"start":{"line":25,"column":45},"end":{"line":25,"column":77}}]},"3":{"loc":{"start":{"line":26,"column":9},"end":{"line":26,"column":65}},"type":"binary-expr","locations":[{"start":{"line":26,"column":9},"end":{"line":26,"column":12}},{"start":{"line":26,"column":16},"end":{"line":26,"column":35}},{"start":{"line":26,"column":39},"end":{"line":26,"column":65}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0,0],"1":[0,0,0],"2":[0,0,0],"3":[0,0,0]}} +,"/home/eben/projects/gpt-shell/src/request-helper.js": {"path":"/home/eben/projects/gpt-shell/src/request-helper.js","statementMap":{"0":{"start":{"line":5,"column":34},"end":{"line":34,"column":1}},"1":{"start":{"line":6,"column":2},"end":{"line":6,"column":41}},"2":{"start":{"line":7,"column":20},"end":{"line":7,"column":38}},"3":{"start":{"line":9,"column":17},"end":{"line":9,"column":28}},"4":{"start":{"line":11,"column":2},"end":{"line":15,"column":3}},"5":{"start":{"line":12,"column":4},"end":{"line":12,"column":29}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":31}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":51}},"8":{"start":{"line":17,"column":25},"end":{"line":27,"column":3}},"9":{"start":{"line":28,"column":19},"end":{"line":28,"column":70}},"10":{"start":{"line":29,"column":15},"end":{"line":29,"column":36}},"11":{"start":{"line":31,"column":2},"end":{"line":31,"column":27}},"12":{"start":{"line":32,"column":2},"end":{"line":32,"column":29}},"13":{"start":{"line":33,"column":2},"end":{"line":33,"column":14}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":34},"end":{"line":5,"column":39}},"loc":{"start":{"line":5,"column":59},"end":{"line":34,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":2},"end":{"line":15,"column":3}},"type":"if","locations":[{"start":{"line":11,"column":2},"end":{"line":15,"column":3}},{"start":{"line":11,"column":2},"end":{"line":15,"column":3}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"f":{"0":0},"b":{"0":[0,0]}} +,"/home/eben/projects/gpt-shell/src/utilities/animation.js": {"path":"/home/eben/projects/gpt-shell/src/utilities/animation.js","statementMap":{"0":{"start":{"line":3,"column":32},"end":{"line":11,"column":1}},"1":{"start":{"line":4,"column":17},"end":{"line":4,"column":67}},"2":{"start":{"line":5,"column":10},"end":{"line":5,"column":11}},"3":{"start":{"line":7,"column":2},"end":{"line":10,"column":9}},"4":{"start":{"line":8,"column":4},"end":{"line":8,"column":77}},"5":{"start":{"line":9,"column":4},"end":{"line":9,"column":32}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":32},"end":{"line":3,"column":33}},"loc":{"start":{"line":3,"column":38},"end":{"line":11,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":21},"end":{"line":7,"column":22}},"loc":{"start":{"line":7,"column":27},"end":{"line":10,"column":3}}}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"f":{"0":0,"1":0},"b":{}} +,"/home/eben/projects/gpt-shell/src/utilities/error-handling.js": {"path":"/home/eben/projects/gpt-shell/src/utilities/error-handling.js","statementMap":{"0":{"start":{"line":3,"column":23},"end":{"line":3,"column":25}},"1":{"start":{"line":5,"column":24},"end":{"line":7,"column":1}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":9,"column":25},"end":{"line":9,"column":47}},"4":{"start":{"line":9,"column":31},"end":{"line":9,"column":47}},"5":{"start":{"line":11,"column":27},"end":{"line":11,"column":56}},"6":{"start":{"line":11,"column":34},"end":{"line":11,"column":55}},"7":{"start":{"line":13,"column":25},"end":{"line":17,"column":1}},"8":{"start":{"line":14,"column":2},"end":{"line":16,"column":5}},"9":{"start":{"line":15,"column":4},"end":{"line":15,"column":27}},"10":{"start":{"line":19,"column":26},"end":{"line":21,"column":1}},"11":{"start":{"line":20,"column":2},"end":{"line":20,"column":27}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":24},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":35},"end":{"line":7,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":25},"end":{"line":9,"column":26}},"loc":{"start":{"line":9,"column":31},"end":{"line":9,"column":47}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":27},"end":{"line":11,"column":28}},"loc":{"start":{"line":11,"column":34},"end":{"line":11,"column":55}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":25},"end":{"line":13,"column":26}},"loc":{"start":{"line":13,"column":31},"end":{"line":17,"column":1}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":14,"column":27},"end":{"line":14,"column":28}},"loc":{"start":{"line":14,"column":38},"end":{"line":16,"column":3}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":19,"column":26},"end":{"line":19,"column":27}},"loc":{"start":{"line":19,"column":39},"end":{"line":21,"column":1}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":0,"5":1,"6":0,"7":1,"8":0,"9":0,"10":1,"11":0},"f":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{}} +,"/home/eben/projects/gpt-shell/src/utilities/get-config.js": {"path":"/home/eben/projects/gpt-shell/src/utilities/get-config.js","statementMap":{"0":{"start":{"line":4,"column":52},"end":{"line":22,"column":1}},"1":{"start":{"line":5,"column":15},"end":{"line":5,"column":19}},"2":{"start":{"line":6,"column":2},"end":{"line":9,"column":3}},"3":{"start":{"line":7,"column":4},"end":{"line":7,"column":19}},"4":{"start":{"line":8,"column":4},"end":{"line":8,"column":46}},"5":{"start":{"line":11,"column":2},"end":{"line":14,"column":3}},"6":{"start":{"line":12,"column":4},"end":{"line":12,"column":19}},"7":{"start":{"line":13,"column":4},"end":{"line":13,"column":44}},"8":{"start":{"line":16,"column":2},"end":{"line":19,"column":3}},"9":{"start":{"line":17,"column":4},"end":{"line":17,"column":19}},"10":{"start":{"line":18,"column":4},"end":{"line":18,"column":46}},"11":{"start":{"line":21,"column":2},"end":{"line":21,"column":16}},"12":{"start":{"line":24,"column":25},"end":{"line":45,"column":1}},"13":{"start":{"line":25,"column":2},"end":{"line":32,"column":3}},"14":{"start":{"line":26,"column":19},"end":{"line":26,"column":74}},"15":{"start":{"line":27,"column":4},"end":{"line":29,"column":5}},"16":{"start":{"line":28,"column":6},"end":{"line":28,"column":54}},"17":{"start":{"line":31,"column":4},"end":{"line":31,"column":49}},"18":{"start":{"line":34,"column":17},"end":{"line":38,"column":3}},"19":{"start":{"line":40,"column":2},"end":{"line":42,"column":3}},"20":{"start":{"line":41,"column":4},"end":{"line":41,"column":52}},"21":{"start":{"line":44,"column":2},"end":{"line":44,"column":47}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":52},"end":{"line":4,"column":53}},"loc":{"start":{"line":4,"column":64},"end":{"line":22,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":24,"column":25},"end":{"line":24,"column":26}},"loc":{"start":{"line":24,"column":31},"end":{"line":45,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":2},"end":{"line":9,"column":3}},"type":"if","locations":[{"start":{"line":6,"column":2},"end":{"line":9,"column":3}},{"start":{"line":6,"column":2},"end":{"line":9,"column":3}}]},"1":{"loc":{"start":{"line":11,"column":2},"end":{"line":14,"column":3}},"type":"if","locations":[{"start":{"line":11,"column":2},"end":{"line":14,"column":3}},{"start":{"line":11,"column":2},"end":{"line":14,"column":3}}]},"2":{"loc":{"start":{"line":16,"column":2},"end":{"line":19,"column":3}},"type":"if","locations":[{"start":{"line":16,"column":2},"end":{"line":19,"column":3}},{"start":{"line":16,"column":2},"end":{"line":19,"column":3}}]},"3":{"loc":{"start":{"line":25,"column":2},"end":{"line":32,"column":3}},"type":"if","locations":[{"start":{"line":25,"column":2},"end":{"line":32,"column":3}},{"start":{"line":25,"column":2},"end":{"line":32,"column":3}}]},"4":{"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":5}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":29,"column":5}},{"start":{"line":27,"column":4},"end":{"line":29,"column":5}}]},"5":{"loc":{"start":{"line":40,"column":2},"end":{"line":42,"column":3}},"type":"if","locations":[{"start":{"line":40,"column":2},"end":{"line":42,"column":3}},{"start":{"line":40,"column":2},"end":{"line":42,"column":3}}]}},"s":{"0":1,"1":3,"2":3,"3":0,"4":0,"5":3,"6":0,"7":0,"8":3,"9":1,"10":1,"11":3,"12":1,"13":1,"14":1,"15":1,"16":0,"17":1,"18":0,"19":0,"20":0,"21":0},"f":{"0":3,"1":1},"b":{"0":[0,3],"1":[0,3],"2":[1,2],"3":[1,0],"4":[0,1],"5":[0,0]}} +,"/home/eben/projects/gpt-shell/src/utilities/logger.js": {"path":"/home/eben/projects/gpt-shell/src/utilities/logger.js","statementMap":{"0":{"start":{"line":4,"column":35},"end":{"line":6,"column":2}},"1":{"start":{"line":5,"column":2},"end":{"line":5,"column":65}},"2":{"start":{"line":8,"column":33},"end":{"line":10,"column":2}},"3":{"start":{"line":9,"column":2},"end":{"line":9,"column":66}},"4":{"start":{"line":12,"column":32},"end":{"line":14,"column":2}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":49}},"6":{"start":{"line":16,"column":40},"end":{"line":20,"column":1}},"7":{"start":{"line":17,"column":2},"end":{"line":19,"column":5}},"8":{"start":{"line":18,"column":4},"end":{"line":18,"column":45}},"9":{"start":{"line":22,"column":16},"end":{"line":36,"column":2}},"10":{"start":{"line":38,"column":18},"end":{"line":41,"column":1}},"11":{"start":{"line":39,"column":2},"end":{"line":39,"column":44}},"12":{"start":{"line":40,"column":2},"end":{"line":40,"column":23}},"13":{"start":{"line":43,"column":20},"end":{"line":46,"column":1}},"14":{"start":{"line":44,"column":2},"end":{"line":44,"column":46}},"15":{"start":{"line":45,"column":2},"end":{"line":45,"column":25}},"16":{"start":{"line":48,"column":17},"end":{"line":55,"column":1}},"17":{"start":{"line":49,"column":2},"end":{"line":49,"column":43}},"18":{"start":{"line":50,"column":2},"end":{"line":50,"column":56}},"19":{"start":{"line":51,"column":2},"end":{"line":54,"column":5}},"20":{"start":{"line":52,"column":4},"end":{"line":52,"column":68}},"21":{"start":{"line":53,"column":4},"end":{"line":53,"column":25}},"22":{"start":{"line":57,"column":22},"end":{"line":62,"column":1}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":57},"end":{"line":4,"column":58}},"loc":{"start":{"line":4,"column":74},"end":{"line":6,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":55},"end":{"line":8,"column":56}},"loc":{"start":{"line":8,"column":72},"end":{"line":10,"column":1}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":54},"end":{"line":12,"column":55}},"loc":{"start":{"line":12,"column":71},"end":{"line":14,"column":1}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":16,"column":40},"end":{"line":16,"column":41}},"loc":{"start":{"line":16,"column":52},"end":{"line":20,"column":1}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":17,"column":31},"end":{"line":17,"column":32}},"loc":{"start":{"line":17,"column":48},"end":{"line":19,"column":3}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":38,"column":18},"end":{"line":38,"column":19}},"loc":{"start":{"line":38,"column":30},"end":{"line":41,"column":1}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":43,"column":20},"end":{"line":43,"column":21}},"loc":{"start":{"line":43,"column":34},"end":{"line":46,"column":1}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":48,"column":17},"end":{"line":48,"column":18}},"loc":{"start":{"line":48,"column":29},"end":{"line":55,"column":1}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":51,"column":17},"end":{"line":51,"column":18}},"loc":{"start":{"line":51,"column":35},"end":{"line":54,"column":3}}}},"branchMap":{},"s":{"0":1,"1":0,"2":1,"3":0,"4":1,"5":0,"6":1,"7":0,"8":0,"9":1,"10":1,"11":0,"12":0,"13":1,"14":0,"15":0,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"b":{}} +} diff --git a/coverage/favicon.png b/coverage/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for gpt-shell + + + + + + + + + +
+
+

All files gpt-shell

+
+ +
+ 0% + Statements + 0/11 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 0% + Functions + 0/7 +
+ + +
+ 0% + Lines + 0/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.js +
+
0%0/110%0/20%0/70%0/10
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/gpt-shell/index.js.html b/coverage/gpt-shell/index.js.html new file mode 100644 index 0000000..d430930 --- /dev/null +++ b/coverage/gpt-shell/index.js.html @@ -0,0 +1,295 @@ + + + + + + Code coverage report for gpt-shell/index.js + + + + + + + + + +
+
+

All files / gpt-shell index.js

+
+ +
+ 0% + Statements + 0/11 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 0% + Functions + 0/7 +
+ + +
+ 0% + Lines + 0/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
#!/usr/bin/env node
+ 
+import yargs from "yargs";
+import { hideBin } from "yargs/helpers";
+import { ask, configure } from "./src/main.js";
+ 
+const isAtLeastOneOptionSpecified = (keys, args) => {
+  return keys.some((key) => args[key] !== null);
+};
+ 
+yargs(hideBin(process.argv))
+  .strict(true)
+  .command(
+    "ask",
+    "Send prompt to GPT",
+    (yargs) => {
+      yargs
+        .option("prompt", {
+          alias: "p",
+          type: "string",
+          describe: "Prompt to send to GPT",
+          demandOption: true,
+        })
+        .option("interactive", {
+          alias: "i",
+          type: "boolean",
+          default: false,
+          describe: "Interactive mode",
+        });
+    },
+    (argv) => {
+      ask(argv.prompt);
+    },
+  )
+  .command(
+    "config",
+    "Configure GPT-Shell",
+    (yargs) => {
+      yargs
+        .option("apikey", {
+          alias: "k",
+          type: "string",
+          default: null,
+          describe: "API key to use",
+        })
+        .option("model", {
+          alias: "m",
+          type: "string",
+          default: null,
+          describe: "Model to use",
+        })
+        .option("url", {
+          alias: "u",
+          type: "string",
+          default: null,
+          describe: "API endpoint to use",
+        });
+    },
+    (argv) => {
+      configure(argv);
+    },
+  )
+  .check((argv) => {
+    if (!isAtLeastOneOptionSpecified(["apikey", "model", "url"], argv)) {
+      throw new Error("No option specified");
+    }
+    return true;
+  })
+  .demandCommand(1)
+  .parse();
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/gpt-shell/src/index.html b/coverage/gpt-shell/src/index.html new file mode 100644 index 0000000..7811da7 --- /dev/null +++ b/coverage/gpt-shell/src/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for gpt-shell/src + + + + + + + + + +
+
+

All files gpt-shell/src

+
+ +
+ 0% + Statements + 0/26 +
+ + +
+ 0% + Branches + 0/13 +
+ + +
+ 0% + Functions + 0/5 +
+ + +
+ 0% + Lines + 0/26 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
main.js +
+
0%0/120%0/110%0/40%0/12
request-helper.js +
+
0%0/140%0/20%0/10%0/14
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/gpt-shell/src/main.js.html b/coverage/gpt-shell/src/main.js.html new file mode 100644 index 0000000..3bc3dec --- /dev/null +++ b/coverage/gpt-shell/src/main.js.html @@ -0,0 +1,181 @@ + + + + + + Code coverage report for gpt-shell/src/main.js + + + + + + + + + +
+
+

All files / gpt-shell/src main.js

+
+ +
+ 0% + Statements + 0/12 +
+ + +
+ 0% + Branches + 0/11 +
+ + +
+ 0% + Functions + 0/4 +
+ + +
+ 0% + Lines + 0/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import "dotenv/config";
+import fs from "fs";
+import { sendOpenApiRequest } from "./request-helper.js";
+import { logger } from "./utilities/logger.js";
+ 
+export const ask = (prompt) => {
+  sendOpenApiRequest(prompt)
+    .then((data) => {
+      logger.logResponse(data.choices[0].message.content);
+    })
+    .catch((error) => {
+      logger.logError(JSON.parse(error.message));
+    });
+};
+ 
+export const configure = (args) => {
+  let existingConfig = null;
+  if (fs.existsSync("./.gpt-shell-config.json")) {
+    existingConfig = JSON.parse(fs.readFileSync("./.gpt-shell-config.json"));
+  }
+ 
+  const { apikey, model, url } = args;
+  const config = {
+    apikey: apikey || existingConfig?.apikey || process.env.OPENAI_API_KEY,
+    model: model || existingConfig?.model || process.env.OPENAI_DEFAULT_MODEL,
+    url: url || existingConfig?.url || process.env.OPENAI_API_URL,
+  };
+ 
+  fs.writeFileSync("./.gpt-shell-config.json", JSON.stringify(config, null, 2));
+ 
+  logger.default.info(config);
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/gpt-shell/src/request-helper.js.html b/coverage/gpt-shell/src/request-helper.js.html new file mode 100644 index 0000000..3805b9e --- /dev/null +++ b/coverage/gpt-shell/src/request-helper.js.html @@ -0,0 +1,187 @@ + + + + + + Code coverage report for gpt-shell/src/request-helper.js + + + + + + + + + +
+
+

All files / gpt-shell/src request-helper.js

+
+ +
+ 0% + Statements + 0/14 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { loadingAnimation } from "./utilities/animation.js";
+import { logger } from "./utilities/logger.js";
+import { getConfig } from "./utilities/get-config.js";
+ 
+export const sendOpenApiRequest = async (requestPrompt) => {
+  logger.logPrompt(requestPrompt + "\n");
+  const animation = loadingAnimation();
+ 
+  const config = getConfig();
+ 
+  if (config.status === "error") {
+    clearInterval(animation);
+    process.stdout.write("\r");
+    throw new Error(JSON.stringify(config.errors));
+  }
+ 
+  const requestOptions = {
+    method: "POST",
+    headers: {
+      "Content-Type": "application/json",
+      Authorization: "Bearer " + getConfig().config.apikey,
+    },
+    body: JSON.stringify({
+      model: getConfig().config.model,
+      messages: [{ role: "user", content: requestPrompt }],
+    }),
+  };
+  const response = await fetch(getConfig().config.url, requestOptions);
+  const data = await response.json();
+ 
+  clearInterval(animation);
+  process.stdout.write("\r");
+  return data;
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/gpt-shell/src/utilities/animation.js.html b/coverage/gpt-shell/src/utilities/animation.js.html new file mode 100644 index 0000000..0563497 --- /dev/null +++ b/coverage/gpt-shell/src/utilities/animation.js.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for gpt-shell/src/utilities/animation.js + + + + + + + + + +
+
+

All files / gpt-shell/src/utilities animation.js

+
+ +
+ 0% + Statements + 0/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/2 +
+ + +
+ 0% + Lines + 0/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12  +  +  +  +  +  +  +  +  +  +  + 
import chalk from "chalk";
+ 
+export const loadingAnimation = () => {
+  const frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
+  let i = 0;
+ 
+  return setInterval(() => {
+    process.stdout.write(chalk.yellowBright("\r" + frames[i] + " Thinking"));
+    i = (i + 1) % frames.length;
+  }, 80);
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/gpt-shell/src/utilities/error-handling.js.html b/coverage/gpt-shell/src/utilities/error-handling.js.html new file mode 100644 index 0000000..ec6ca55 --- /dev/null +++ b/coverage/gpt-shell/src/utilities/error-handling.js.html @@ -0,0 +1,148 @@ + + + + + + Code coverage report for gpt-shell/src/utilities/error-handling.js + + + + + + + + + +
+
+

All files / gpt-shell/src/utilities error-handling.js

+
+ +
+ 58.33% + Statements + 7/12 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 16.66% + Functions + 1/6 +
+ + +
+ 70% + Lines + 7/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22  +  +1x +  +1x +1x +  +  +1x +  +1x +  +1x +  +  +  +  +  +1x +  +  + 
import { logger } from "./logger.js";
+ 
+let aggregatedErrors = [];
+ 
+export const addError = (error) => {
+  aggregatedErrors.push(error);
+};
+ 
+export const getErrors = () => aggregatedErrors;
+ 
+export const clearErrors = () => (aggregatedErrors = []);
+ 
+export const logErrors = () => {
+  aggregatedErrors.forEach((error) => {
+    logger.logError(error);
+  });
+};
+ 
+export const throwError = (message) => {
+  throw new Error(message);
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/gpt-shell/src/utilities/get-config.js.html b/coverage/gpt-shell/src/utilities/get-config.js.html new file mode 100644 index 0000000..157f155 --- /dev/null +++ b/coverage/gpt-shell/src/utilities/get-config.js.html @@ -0,0 +1,220 @@ + + + + + + Code coverage report for gpt-shell/src/utilities/get-config.js + + + + + + + + + +
+
+

All files / gpt-shell/src/utilities get-config.js

+
+ +
+ 59.09% + Statements + 13/22 +
+ + +
+ 50% + Branches + 6/12 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 59.09% + Lines + 13/22 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46  +  +  +1x +3x +3x +  +  +  +  +3x +  +  +  +  +3x +1x +1x +  +  +3x +  +  +1x +1x +1x +1x +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import fs from "fs";
+import { getErrors, addError } from "./error-handling.js";
+ 
+export const checkForRequiredEnvironmentVariables = (config) => {
+  let result = true;
+  Iif (!config.apikey) {
+    result = false;
+    addError("OPENAI_API_KEY is not defined");
+  }
+ 
+  Iif (!config.model) {
+    result = false;
+    addError("OPENAI_MODEL is not defined");
+  }
+ 
+  if (!config.url) {
+    result = false;
+    addError("OPENAI_API_URL is not defined");
+  }
+ 
+  return result;
+};
+ 
+export const getConfig = () => {
+  Eif (fs.existsSync("./.gpt-shell-config.json")) {
+    const config = JSON.parse(fs.readFileSync("./.gpt-shell-config.json"));
+    Iif (!checkForRequiredEnvironmentVariables(config)) {
+      return { status: "error", errors: getErrors() };
+    }
+ 
+    return { status: "success", config: config };
+  }
+ 
+  const config = {
+    apikey: process.env.OPENAI_API_KEY,
+    model: process.env.OPENAI_MODEL,
+    url: process.env.OPENAI_API_URL,
+  };
+ 
+  if (!checkForRequiredEnvironmentVariables(config)) {
+    return { status: "error", errors: getErrors() };
+  }
+ 
+  return { status: "success", config: config };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/gpt-shell/src/utilities/index.html b/coverage/gpt-shell/src/utilities/index.html new file mode 100644 index 0000000..216c05e --- /dev/null +++ b/coverage/gpt-shell/src/utilities/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for gpt-shell/src/utilities + + + + + + + + + +
+
+

All files gpt-shell/src/utilities

+
+ +
+ 46.03% + Statements + 29/63 +
+ + +
+ 50% + Branches + 6/12 +
+ + +
+ 15.78% + Functions + 3/19 +
+ + +
+ 47.54% + Lines + 29/61 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
animation.js +
+
0%0/6100%0/00%0/20%0/6
error-handling.js +
+
58.33%7/12100%0/016.66%1/670%7/10
get-config.js +
+
59.09%13/2250%6/12100%2/259.09%13/22
logger.js +
+
39.13%9/23100%0/00%0/939.13%9/23
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/gpt-shell/src/utilities/logger.js.html b/coverage/gpt-shell/src/utilities/logger.js.html new file mode 100644 index 0000000..97df86d --- /dev/null +++ b/coverage/gpt-shell/src/utilities/logger.js.html @@ -0,0 +1,271 @@ + + + + + + Code coverage report for gpt-shell/src/utilities/logger.js + + + + + + + + + +
+
+

All files / gpt-shell/src/utilities logger.js

+
+ +
+ 39.13% + Statements + 9/23 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/9 +
+ + +
+ 39.13% + Lines + 9/23 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63  +  +  +1x +  +  +  +1x +  +  +  +1x +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +1x +  +  +  +  +1x +  +  +  +  +  +  +  +  +1x +  +  +  +  +  + 
import winston from "winston";
+import chalk from "chalk";
+ 
+const customResponseLoggerFormat = winston.format.printf(({ message }) => {
+  return `${chalk.magenta("[gpt-shell-response]")} : ${message}`;
+});
+ 
+const customPromptLoggerFormat = winston.format.printf(({ message }) => {
+  return `${chalk.blueBright("[gpt-shell-prompt]")} : ${message}`;
+});
+ 
+const customErrorLoggerFormat = winston.format.printf(({ message }) => {
+  return chalk.redBright("[error] : " + message);
+});
+ 
+const customPrefixedErrorLoggerFormat = (prefix) => {
+  return winston.format.printf(({ message }) => {
+    return chalk.redBright(prefix + message);
+  });
+};
+ 
+const _logger = winston.createLogger({
+  level: "info",
+  transports: [
+    new winston.transports.Console(),
+    new winston.transports.File({
+      filename: "gpt-shell-responses.log",
+      level: "info",
+    }),
+    new winston.transports.File({
+      filename: "gpt-shell-error.log",
+      level: "error",
+    }),
+    new winston.transports.File({ filename: "combined.log" }),
+  ],
+});
+ 
+const logPrompt = (prompt) => {
+  _logger.format = customPromptLoggerFormat;
+  _logger.info(prompt);
+};
+ 
+const logResponse = (response) => {
+  _logger.format = customResponseLoggerFormat;
+  _logger.info(response);
+};
+ 
+const logError = (errors) => {
+  _logger.format = customErrorLoggerFormat;
+  _logger.error("Some configuration errors were found");
+  errors.forEach((error, index) => {
+    _logger.format = customPrefixedErrorLoggerFormat(`[${index}] `);
+    _logger.error(error);
+  });
+};
+ 
+export const logger = {
+  default: _logger,
+  logPrompt,
+  logResponse,
+  logError,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/index.html b/coverage/index.html new file mode 100644 index 0000000..4ba0c25 --- /dev/null +++ b/coverage/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 29% + Statements + 29/100 +
+ + +
+ 22.22% + Branches + 6/27 +
+ + +
+ 9.67% + Functions + 3/31 +
+ + +
+ 29.89% + Lines + 29/97 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
gpt-shell +
+
0%0/110%0/20%0/70%0/10
gpt-shell/src +
+
0%0/260%0/130%0/50%0/26
gpt-shell/src/utilities +
+
46.03%29/6350%6/1215.78%3/1947.54%29/61
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/prettify.css b/coverage/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/coverage/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/prettify.js b/coverage/prettify.js new file mode 100644 index 0000000..b322523 --- /dev/null +++ b/coverage/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/sort-arrow-sprite.png b/coverage/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/coverage/sorter.js b/coverage/sorter.js new file mode 100644 index 0000000..2bb296a --- /dev/null +++ b/coverage/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/package-lock.json b/package-lock.json index 2d18205..9f0c5eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "chalk": "^5.3.0", "dotenv": "^16.3.1", + "keypress": "^0.2.1", "winston": "^3.11.0", "yargs": "^17.7.2" }, @@ -2729,6 +2730,7 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, +<<<<<<< Updated upstream "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -2746,6 +2748,12 @@ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true +======= + "node_modules/keypress": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.2.1.tgz", + "integrity": "sha512-HjorDJFNhnM4SicvaUXac0X77NiskggxJdesG72+O5zBKpSqKFCrqmndKVqpu3pFqkla0St6uGk8Ju0sCurrmg==" +>>>>>>> Stashed changes }, "node_modules/keyv": { "version": "4.5.4", diff --git a/package.json b/package.json index a2353be..e6f5acd 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "dependencies": { "chalk": "^5.3.0", "dotenv": "^16.3.1", + "keypress": "^0.2.1", "winston": "^3.11.0", "yargs": "^17.7.2" }, diff --git a/src/consts/app-global-consts.js b/src/consts/app-global-consts.js new file mode 100644 index 0000000..804fff1 --- /dev/null +++ b/src/consts/app-global-consts.js @@ -0,0 +1,10 @@ +import chalk from "chalk"; + +export const appGlobalConsts = { + userPromptPrefix: '[gp-shell-promt]', + systemResponsePrefix: '[gp-shell-response]', + systemErrorPrefix: '[error]', + colorizedUserPromptPrefix: chalk.blueBright('[gp-shell-promt]'), + colorizedSystemResponsePrefix: chalk.magenta('[gp-shell-response]'), + colorizedSystemErrorPrefix: chalk.redBright('[error]'), +} \ No newline at end of file diff --git a/src/main.js b/src/main.js index 59c2fc9..ba6e526 100644 --- a/src/main.js +++ b/src/main.js @@ -1,12 +1,27 @@ import "dotenv/config"; import fs from "fs"; +import readline from "readline"; import { sendOpenApiRequest } from "./request-helper.js"; import { logger } from "./utilities/logger.js"; +import { appGlobalConsts } from "./consts/app-global-consts.js"; +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + +let askFunctionCalledTimes = 0; export const ask = (prompt) => { + if (askFunctionCalledTimes === 0) { + logger.logPrompt(prompt + '\n'); + } + askFunctionCalledTimes++; sendOpenApiRequest(prompt) .then((data) => { logger.logResponse(data.choices[0].message.content); + rl.question(`${appGlobalConsts.colorizedUserPromptPrefix} : `, (newPrompt) => { + ask(newPrompt); + }); }) .catch((error) => { logger.logError(JSON.parse(error.message)); diff --git a/src/request-helper.js b/src/request-helper.js index cc5e42d..31a1576 100644 --- a/src/request-helper.js +++ b/src/request-helper.js @@ -3,7 +3,6 @@ import { logger } from "./utilities/logger.js"; import { getConfig } from "./utilities/get-config.js"; export const sendOpenApiRequest = async (requestPrompt) => { - logger.logPrompt(requestPrompt + "\n"); const animation = loadingAnimation(); const config = getConfig(); @@ -25,10 +24,32 @@ export const sendOpenApiRequest = async (requestPrompt) => { messages: [{ role: "user", content: requestPrompt }], }), }; - const response = await fetch(getConfig().config.url, requestOptions); - const data = await response.json(); + // const response = await fetch(getConfig().config.url, requestOptions); + // const data = await response.json(); - clearInterval(animation); - process.stdout.write("\r"); + // wait 2 seconds + + await new Promise((resolve) => setTimeout(resolve, 2000)); + + clearInterval(animation); + process.stdout.write("\r"); + + const data = { + choices: [ + { + message: { + content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin ac neque augue. Sed sollicitudin metus in posuere tristique. Proin hendrerit lacus vel turpis scelerisque sagittis. Fusce dictum, urna a hendrerit imperdiet, neque diam vestibulum mauris, sit amet gravida dolor risus id diam. Morbi pulvinar tortor sed nunc dictum pretium. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed quis augue sit amet odio accumsan tempor sit amet et augue. Proin id turpis facilisis, gravida massa eu, tempor dui. Ut ullamcorper faucibus rhoncus. Nunc pretium, lacus sed scelerisque volutpat, nulla sapien porta metus, in cursus ligula purus sit amet orci. Praesent a neque metus. Sed eu efficitur nisl.", + }, + }, + { + message: { + content: "Fusce id augue augue. Donec accumsan nisi sit amet ultrices sollicitudin. Etiam ac semper ipsum, vitae mollis odio. Proin fermentum aliquam ipsum, vel posuere dui sagittis non. Donec sodales gravida nibh nec porta. Donec venenatis eros id ligula gravida gravida. In laoreet aliquam nulla. Donec elementum pharetra vehicula. Phasellus dignissim suscipit efficitur. Suspendisse ac vulputate sem.", + }, + }, + ], + }; + + // clearInterval(animation); + // process.stdout.write("\r"); return data; }; diff --git a/src/utilities/logger.js b/src/utilities/logger.js index 529f449..03a2c08 100644 --- a/src/utilities/logger.js +++ b/src/utilities/logger.js @@ -1,16 +1,17 @@ import winston from "winston"; import chalk from "chalk"; +import { appGlobalConsts } from "../consts/app-global-consts.js"; const customResponseLoggerFormat = winston.format.printf(({ message }) => { - return `${chalk.magenta("[gpt-shell-response]")} : ${message}`; + return `${appGlobalConsts.colorizedSystemResponsePrefix} : ${message}`; }); const customPromptLoggerFormat = winston.format.printf(({ message }) => { - return `${chalk.blueBright("[gpt-shell-prompt]")} : ${message}`; + return `${appGlobalConsts.colorizedUserPromptPrefix} : ${message}`; }); const customErrorLoggerFormat = winston.format.printf(({ message }) => { - return chalk.redBright("[error] : " + message); + return chalk.redBright(`${appGlobalConsts.systemErrorPrefix} : ${message}`); }); const customPrefixedErrorLoggerFormat = (prefix) => { From 41c285218ab1a85956c543928472f75ff388c832 Mon Sep 17 00:00:00 2001 From: Ebenezer Nikabou Date: Wed, 20 Dec 2023 23:50:16 +0200 Subject: [PATCH 2/7] added exit option --- src/main.js | 4 ++-- src/request-helper.js | 5 ++++- src/utilities/logger.js | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main.js b/src/main.js index ba6e526..f263089 100644 --- a/src/main.js +++ b/src/main.js @@ -13,14 +13,14 @@ const rl = readline.createInterface({ let askFunctionCalledTimes = 0; export const ask = (prompt) => { if (askFunctionCalledTimes === 0) { - logger.logPrompt(prompt + '\n'); + logger.logPrompt(prompt); } askFunctionCalledTimes++; sendOpenApiRequest(prompt) .then((data) => { logger.logResponse(data.choices[0].message.content); rl.question(`${appGlobalConsts.colorizedUserPromptPrefix} : `, (newPrompt) => { - ask(newPrompt); + newPrompt.toLowerCase() === 'exit' ? process.exit(0) : ask(newPrompt); }); }) .catch((error) => { diff --git a/src/request-helper.js b/src/request-helper.js index 31a1576..1832877 100644 --- a/src/request-helper.js +++ b/src/request-helper.js @@ -1,6 +1,7 @@ import { loadingAnimation } from "./utilities/animation.js"; import { logger } from "./utilities/logger.js"; import { getConfig } from "./utilities/get-config.js"; +import readline from "readline"; export const sendOpenApiRequest = async (requestPrompt) => { const animation = loadingAnimation(); @@ -32,7 +33,9 @@ export const sendOpenApiRequest = async (requestPrompt) => { await new Promise((resolve) => setTimeout(resolve, 2000)); clearInterval(animation); - process.stdout.write("\r"); + // readline.cursorTo(process.stdout, 0); + process.stdout.clearLine(); + // process.stdout.write("\r hi"); const data = { choices: [ diff --git a/src/utilities/logger.js b/src/utilities/logger.js index 03a2c08..ec23663 100644 --- a/src/utilities/logger.js +++ b/src/utilities/logger.js @@ -3,7 +3,7 @@ import chalk from "chalk"; import { appGlobalConsts } from "../consts/app-global-consts.js"; const customResponseLoggerFormat = winston.format.printf(({ message }) => { - return `${appGlobalConsts.colorizedSystemResponsePrefix} : ${message}`; + return `\n${appGlobalConsts.colorizedSystemResponsePrefix} : ${message} \n`; }); const customPromptLoggerFormat = winston.format.printf(({ message }) => { From 7b7e7d211532200623225e458cbe5e6c55055202 Mon Sep 17 00:00:00 2001 From: Ebenezer Nikabou Date: Thu, 21 Dec 2023 00:51:07 +0200 Subject: [PATCH 3/7] added effective interactive mode --- src/main.js | 12 +++++++++++- src/request-helper.js | 38 ++++++-------------------------------- 2 files changed, 17 insertions(+), 33 deletions(-) diff --git a/src/main.js b/src/main.js index f263089..171765d 100644 --- a/src/main.js +++ b/src/main.js @@ -10,14 +10,24 @@ const rl = readline.createInterface({ output: process.stdout, }); +const chatHistory = []; + let askFunctionCalledTimes = 0; export const ask = (prompt) => { + chatHistory.push({ + role: "user", + content: prompt, + }); if (askFunctionCalledTimes === 0) { logger.logPrompt(prompt); } askFunctionCalledTimes++; - sendOpenApiRequest(prompt) + sendOpenApiRequest(chatHistory) .then((data) => { + chatHistory.push({ + role: "system", + content: data.choices[0].message.content, + }); logger.logResponse(data.choices[0].message.content); rl.question(`${appGlobalConsts.colorizedUserPromptPrefix} : `, (newPrompt) => { newPrompt.toLowerCase() === 'exit' ? process.exit(0) : ask(newPrompt); diff --git a/src/request-helper.js b/src/request-helper.js index 1832877..9eac4d6 100644 --- a/src/request-helper.js +++ b/src/request-helper.js @@ -1,9 +1,7 @@ import { loadingAnimation } from "./utilities/animation.js"; -import { logger } from "./utilities/logger.js"; import { getConfig } from "./utilities/get-config.js"; -import readline from "readline"; -export const sendOpenApiRequest = async (requestPrompt) => { +export const sendOpenApiRequest = async (messages) => { const animation = loadingAnimation(); const config = getConfig(); @@ -22,37 +20,13 @@ export const sendOpenApiRequest = async (requestPrompt) => { }, body: JSON.stringify({ model: getConfig().config.model, - messages: [{ role: "user", content: requestPrompt }], + messages: messages, }), }; - // const response = await fetch(getConfig().config.url, requestOptions); - // const data = await response.json(); + const response = await fetch(getConfig().config.url, requestOptions); + const data = await response.json(); - // wait 2 seconds - - await new Promise((resolve) => setTimeout(resolve, 2000)); - - clearInterval(animation); - // readline.cursorTo(process.stdout, 0); - process.stdout.clearLine(); - // process.stdout.write("\r hi"); - - const data = { - choices: [ - { - message: { - content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin ac neque augue. Sed sollicitudin metus in posuere tristique. Proin hendrerit lacus vel turpis scelerisque sagittis. Fusce dictum, urna a hendrerit imperdiet, neque diam vestibulum mauris, sit amet gravida dolor risus id diam. Morbi pulvinar tortor sed nunc dictum pretium. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed quis augue sit amet odio accumsan tempor sit amet et augue. Proin id turpis facilisis, gravida massa eu, tempor dui. Ut ullamcorper faucibus rhoncus. Nunc pretium, lacus sed scelerisque volutpat, nulla sapien porta metus, in cursus ligula purus sit amet orci. Praesent a neque metus. Sed eu efficitur nisl.", - }, - }, - { - message: { - content: "Fusce id augue augue. Donec accumsan nisi sit amet ultrices sollicitudin. Etiam ac semper ipsum, vitae mollis odio. Proin fermentum aliquam ipsum, vel posuere dui sagittis non. Donec sodales gravida nibh nec porta. Donec venenatis eros id ligula gravida gravida. In laoreet aliquam nulla. Donec elementum pharetra vehicula. Phasellus dignissim suscipit efficitur. Suspendisse ac vulputate sem.", - }, - }, - ], - }; - - // clearInterval(animation); - // process.stdout.write("\r"); + clearInterval(animation); + process.stdout.clearLine(); return data; }; From d21ba95a9137c1989f44786882ea150ea825cb91 Mon Sep 17 00:00:00 2001 From: Ebenezer Nikabou Date: Thu, 21 Dec 2023 00:58:50 +0200 Subject: [PATCH 4/7] added .eslintignore --- .eslintignore | 1 + .github/workflows/node.js.yml | 27 +- package-lock.json | 497 +------------------------------- src/consts/app-global-consts.js | 14 +- src/main.js | 9 +- vitest.config.js | 2 +- 6 files changed, 29 insertions(+), 521 deletions(-) create mode 100644 .eslintignore diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..7773828 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +dist/ \ No newline at end of file diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 4891a3d..bee53b5 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -5,13 +5,12 @@ name: Node.js CI on: push: - branches: [ "main", "develop" ] + branches: ["main", "develop"] pull_request: - branches: [ "main", "develop" ] + branches: ["main", "develop"] jobs: build: - runs-on: ubuntu-latest strategy: @@ -20,14 +19,14 @@ jobs: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm install - - run: npm run lint:fix - - run: npm test - - run: npm run format - - run: npm run build + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "npm" + - run: npm install + - run: npm run lint:fix + - run: npm test + - run: npm run format + - run: npm run build diff --git a/package-lock.json b/package-lock.json index 9f0c5eb..320c2e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -507,246 +507,6 @@ "kuler": "^2.0.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.9.tgz", - "integrity": "sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.9.tgz", - "integrity": "sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.9.tgz", - "integrity": "sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.9.tgz", - "integrity": "sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.9.tgz", - "integrity": "sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.9.tgz", - "integrity": "sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.9.tgz", - "integrity": "sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.9.tgz", - "integrity": "sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.9.tgz", - "integrity": "sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.9.tgz", - "integrity": "sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.9.tgz", - "integrity": "sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.9.tgz", - "integrity": "sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.9.tgz", - "integrity": "sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.9.tgz", - "integrity": "sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.9.tgz", - "integrity": "sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/linux-x64": { "version": "0.19.9", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.9.tgz", @@ -763,102 +523,6 @@ "node": ">=12" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.9.tgz", - "integrity": "sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.9.tgz", - "integrity": "sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.9.tgz", - "integrity": "sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.9.tgz", - "integrity": "sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.9.tgz", - "integrity": "sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.9.tgz", - "integrity": "sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -1052,110 +716,6 @@ "node": ">= 8" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.8.0.tgz", - "integrity": "sha512-zdTObFRoNENrdPpnTNnhOljYIcOX7aI7+7wyrSpPFFIOf/nRdedE6IYsjaBE7tjukphh1tMTojgJ7p3lKY8x6Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.8.0.tgz", - "integrity": "sha512-aiItwP48BiGpMFS9Znjo/xCNQVwTQVcRKkFKsO81m8exrGjHkCBDvm9PHay2kpa8RPnZzzKcD1iQ9KaLY4fPQQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.8.0.tgz", - "integrity": "sha512-zhNIS+L4ZYkYQUjIQUR6Zl0RXhbbA0huvNIWjmPc2SL0cB1h5Djkcy+RZ3/Bwszfb6vgwUvcVJYD6e6Zkpsi8g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.8.0.tgz", - "integrity": "sha512-A/FAHFRNQYrELrb/JHncRWzTTXB2ticiRFztP4ggIUAfa9Up1qfW8aG2w/mN9jNiZ+HB0t0u0jpJgFXG6BfRTA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.8.0.tgz", - "integrity": "sha512-JsidBnh3p2IJJA4/2xOF2puAYqbaczB3elZDT0qHxn362EIoIkq7hrR43Xa8RisgI6/WPfvb2umbGsuvf7E37A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.8.0.tgz", - "integrity": "sha512-hBNCnqw3EVCkaPB0Oqd24bv8SklETptQWcJz06kb9OtiShn9jK1VuTgi7o4zPSt6rNGWQOTDEAccbk0OqJmS+g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.8.0.tgz", - "integrity": "sha512-Fw9ChYfJPdltvi9ALJ9wzdCdxGw4wtq4t1qY028b2O7GwB5qLNSGtqMsAel1lfWTZvf4b6/+4HKp0GlSYg0ahA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.8.0.tgz", - "integrity": "sha512-BH5xIh7tOzS9yBi8dFrCTG8Z6iNIGWGltd3IpTSKp6+pNWWO6qy8eKoRxOtwFbMrid5NZaidLYN6rHh9aB8bEw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, "node_modules/@rollup/rollup-linux-x64-gnu": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.8.0.tgz", @@ -1182,45 +742,6 @@ "linux" ] }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.8.0.tgz", - "integrity": "sha512-ge7saUz38aesM4MA7Cad8CHo0Fyd1+qTaqoIo+Jtk+ipBi4ATSrHWov9/S4u5pbEQmLjgUjB7BJt+MiKG2kzmA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.8.0.tgz", - "integrity": "sha512-p9E3PZlzurhlsN5h9g7zIP1DnqKXJe8ZUkFwAazqSvHuWfihlIISPxG9hCHCoA+dOOspL/c7ty1eeEVFTE0UTw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.8.0.tgz", - "integrity": "sha512-kb4/auKXkYKqlUYTE8s40FcJIj5soOyRLHKd4ugR0dCq0G2EfcF54eYcfQiGkHzjidZ40daB4ulsFdtqNKZtBg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -2319,20 +1840,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -2730,7 +2237,6 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, -<<<<<<< Updated upstream "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -2748,12 +2254,11 @@ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true -======= + }, "node_modules/keypress": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.2.1.tgz", "integrity": "sha512-HjorDJFNhnM4SicvaUXac0X77NiskggxJdesG72+O5zBKpSqKFCrqmndKVqpu3pFqkla0St6uGk8Ju0sCurrmg==" ->>>>>>> Stashed changes }, "node_modules/keyv": { "version": "4.5.4", diff --git a/src/consts/app-global-consts.js b/src/consts/app-global-consts.js index 804fff1..c219ea6 100644 --- a/src/consts/app-global-consts.js +++ b/src/consts/app-global-consts.js @@ -1,10 +1,10 @@ import chalk from "chalk"; export const appGlobalConsts = { - userPromptPrefix: '[gp-shell-promt]', - systemResponsePrefix: '[gp-shell-response]', - systemErrorPrefix: '[error]', - colorizedUserPromptPrefix: chalk.blueBright('[gp-shell-promt]'), - colorizedSystemResponsePrefix: chalk.magenta('[gp-shell-response]'), - colorizedSystemErrorPrefix: chalk.redBright('[error]'), -} \ No newline at end of file + userPromptPrefix: "[gp-shell-promt]", + systemResponsePrefix: "[gp-shell-response]", + systemErrorPrefix: "[error]", + colorizedUserPromptPrefix: chalk.blueBright("[gp-shell-promt]"), + colorizedSystemResponsePrefix: chalk.magenta("[gp-shell-response]"), + colorizedSystemErrorPrefix: chalk.redBright("[error]"), +}; diff --git a/src/main.js b/src/main.js index 171765d..a89b3f1 100644 --- a/src/main.js +++ b/src/main.js @@ -29,9 +29,12 @@ export const ask = (prompt) => { content: data.choices[0].message.content, }); logger.logResponse(data.choices[0].message.content); - rl.question(`${appGlobalConsts.colorizedUserPromptPrefix} : `, (newPrompt) => { - newPrompt.toLowerCase() === 'exit' ? process.exit(0) : ask(newPrompt); - }); + rl.question( + `${appGlobalConsts.colorizedUserPromptPrefix} : `, + (newPrompt) => { + newPrompt.toLowerCase() === "exit" ? process.exit(0) : ask(newPrompt); + }, + ); }) .catch((error) => { logger.logError(JSON.parse(error.message)); diff --git a/vitest.config.js b/vitest.config.js index d741fa7..9713f14 100644 --- a/vitest.config.js +++ b/vitest.config.js @@ -3,7 +3,7 @@ import { defineConfig } from "vitest/config"; export default defineConfig({ test: { coverage: { - provider: "istanbul" + provider: "istanbul", }, }, }); From d13f31d592ab8e7a98d073d13999837da5ac8277 Mon Sep 17 00:00:00 2001 From: Ebenezer Nikabou Date: Thu, 21 Dec 2023 01:11:32 +0200 Subject: [PATCH 5/7] feat: interractive mode --- index.js | 4 ++-- src/main.js | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 2dd9255..092f270 100755 --- a/index.js +++ b/index.js @@ -24,12 +24,12 @@ yargs(hideBin(process.argv)) .option("interactive", { alias: "i", type: "boolean", - default: false, + default: true, describe: "Interactive mode", }); }, (argv) => { - ask(argv.prompt); + ask(argv.prompt, argv.interactive); }, ) .command( diff --git a/src/main.js b/src/main.js index a89b3f1..16cc05f 100644 --- a/src/main.js +++ b/src/main.js @@ -13,7 +13,7 @@ const rl = readline.createInterface({ const chatHistory = []; let askFunctionCalledTimes = 0; -export const ask = (prompt) => { +export const ask = (prompt, interactive) => { chatHistory.push({ role: "user", content: prompt, @@ -29,10 +29,13 @@ export const ask = (prompt) => { content: data.choices[0].message.content, }); logger.logResponse(data.choices[0].message.content); + if (!interactive) { + process.exit(0); + } rl.question( `${appGlobalConsts.colorizedUserPromptPrefix} : `, (newPrompt) => { - newPrompt.toLowerCase() === "exit" ? process.exit(0) : ask(newPrompt); + newPrompt.toLowerCase() === "exit" ? process.exit(0) : ask(newPrompt, interactive); }, ); }) From a00287b7725439031d1807b0d45f4b49f7a274bb Mon Sep 17 00:00:00 2001 From: Ebenezer Nikabou Date: Thu, 21 Dec 2023 01:17:22 +0200 Subject: [PATCH 6/7] removed coverage folder --- coverage/base.css | 224 ------------- coverage/block-navigation.js | 87 ------ coverage/clover.xml | 133 -------- coverage/coverage-final.json | 8 - coverage/favicon.png | Bin 445 -> 0 bytes coverage/gpt-shell/index.html | 116 ------- coverage/gpt-shell/index.js.html | 295 ------------------ coverage/gpt-shell/src/index.html | 131 -------- coverage/gpt-shell/src/main.js.html | 181 ----------- coverage/gpt-shell/src/request-helper.js.html | 187 ----------- .../gpt-shell/src/utilities/animation.js.html | 118 ------- .../src/utilities/error-handling.js.html | 148 --------- .../src/utilities/get-config.js.html | 220 ------------- coverage/gpt-shell/src/utilities/index.html | 161 ---------- .../gpt-shell/src/utilities/logger.js.html | 271 ---------------- coverage/index.html | 146 --------- coverage/prettify.css | 1 - coverage/prettify.js | 2 - coverage/sort-arrow-sprite.png | Bin 138 -> 0 bytes coverage/sorter.js | 196 ------------ 20 files changed, 2625 deletions(-) delete mode 100644 coverage/base.css delete mode 100644 coverage/block-navigation.js delete mode 100644 coverage/clover.xml delete mode 100644 coverage/coverage-final.json delete mode 100644 coverage/favicon.png delete mode 100644 coverage/gpt-shell/index.html delete mode 100644 coverage/gpt-shell/index.js.html delete mode 100644 coverage/gpt-shell/src/index.html delete mode 100644 coverage/gpt-shell/src/main.js.html delete mode 100644 coverage/gpt-shell/src/request-helper.js.html delete mode 100644 coverage/gpt-shell/src/utilities/animation.js.html delete mode 100644 coverage/gpt-shell/src/utilities/error-handling.js.html delete mode 100644 coverage/gpt-shell/src/utilities/get-config.js.html delete mode 100644 coverage/gpt-shell/src/utilities/index.html delete mode 100644 coverage/gpt-shell/src/utilities/logger.js.html delete mode 100644 coverage/index.html delete mode 100644 coverage/prettify.css delete mode 100644 coverage/prettify.js delete mode 100644 coverage/sort-arrow-sprite.png delete mode 100644 coverage/sorter.js diff --git a/coverage/base.css b/coverage/base.css deleted file mode 100644 index f418035..0000000 --- a/coverage/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/coverage/block-navigation.js b/coverage/block-navigation.js deleted file mode 100644 index cc12130..0000000 --- a/coverage/block-navigation.js +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - if ( - document.getElementById('fileSearch') === document.activeElement && - document.activeElement != null - ) { - // if we're currently focused on the search input, we don't want to navigate - return; - } - - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/coverage/clover.xml b/coverage/clover.xml deleted file mode 100644 index 9a308b6..0000000 --- a/coverage/clover.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json deleted file mode 100644 index f56dcd9..0000000 --- a/coverage/coverage-final.json +++ /dev/null @@ -1,8 +0,0 @@ -{"/home/eben/projects/gpt-shell/index.js": {"path":"/home/eben/projects/gpt-shell/index.js","statementMap":{"0":{"start":{"line":7,"column":36},"end":{"line":9,"column":1}},"1":{"start":{"line":8,"column":2},"end":{"line":8,"column":48}},"2":{"start":{"line":8,"column":28},"end":{"line":8,"column":46}},"3":{"start":{"line":11,"column":0},"end":{"line":70,"column":11}},"4":{"start":{"line":17,"column":6},"end":{"line":29,"column":11}},"5":{"start":{"line":32,"column":6},"end":{"line":32,"column":23}},"6":{"start":{"line":39,"column":6},"end":{"line":57,"column":11}},"7":{"start":{"line":60,"column":6},"end":{"line":60,"column":22}},"8":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"9":{"start":{"line":65,"column":6},"end":{"line":65,"column":45}},"10":{"start":{"line":67,"column":4},"end":{"line":67,"column":16}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":36},"end":{"line":7,"column":37}},"loc":{"start":{"line":7,"column":52},"end":{"line":9,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":19},"end":{"line":8,"column":20}},"loc":{"start":{"line":8,"column":28},"end":{"line":8,"column":46}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":5}},"loc":{"start":{"line":16,"column":15},"end":{"line":30,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":31,"column":4},"end":{"line":31,"column":5}},"loc":{"start":{"line":31,"column":14},"end":{"line":33,"column":5}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":38,"column":4},"end":{"line":38,"column":5}},"loc":{"start":{"line":38,"column":15},"end":{"line":58,"column":5}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":59,"column":4},"end":{"line":59,"column":5}},"loc":{"start":{"line":59,"column":14},"end":{"line":61,"column":5}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":63,"column":9},"end":{"line":63,"column":10}},"loc":{"start":{"line":63,"column":19},"end":{"line":68,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":66,"column":5}},{"start":{"line":64,"column":4},"end":{"line":66,"column":5}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"b":{"0":[0,0]}} -,"/home/eben/projects/gpt-shell/src/main.js": {"path":"/home/eben/projects/gpt-shell/src/main.js","statementMap":{"0":{"start":{"line":6,"column":19},"end":{"line":14,"column":1}},"1":{"start":{"line":7,"column":2},"end":{"line":13,"column":7}},"2":{"start":{"line":9,"column":6},"end":{"line":9,"column":58}},"3":{"start":{"line":12,"column":6},"end":{"line":12,"column":49}},"4":{"start":{"line":16,"column":25},"end":{"line":32,"column":1}},"5":{"start":{"line":17,"column":23},"end":{"line":17,"column":27}},"6":{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},"7":{"start":{"line":19,"column":4},"end":{"line":19,"column":77}},"8":{"start":{"line":22,"column":33},"end":{"line":22,"column":37}},"9":{"start":{"line":23,"column":17},"end":{"line":27,"column":3}},"10":{"start":{"line":29,"column":2},"end":{"line":29,"column":80}},"11":{"start":{"line":31,"column":2},"end":{"line":31,"column":30}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":19},"end":{"line":6,"column":20}},"loc":{"start":{"line":6,"column":31},"end":{"line":14,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":10},"end":{"line":8,"column":11}},"loc":{"start":{"line":8,"column":20},"end":{"line":10,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":11},"end":{"line":11,"column":12}},"loc":{"start":{"line":11,"column":22},"end":{"line":13,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":16,"column":25},"end":{"line":16,"column":26}},"loc":{"start":{"line":16,"column":35},"end":{"line":32,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},"type":"if","locations":[{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},{"start":{"line":18,"column":2},"end":{"line":20,"column":3}}]},"1":{"loc":{"start":{"line":24,"column":12},"end":{"line":24,"column":74}},"type":"binary-expr","locations":[{"start":{"line":24,"column":12},"end":{"line":24,"column":18}},{"start":{"line":24,"column":22},"end":{"line":24,"column":44}},{"start":{"line":24,"column":48},"end":{"line":24,"column":74}}]},"2":{"loc":{"start":{"line":25,"column":11},"end":{"line":25,"column":77}},"type":"binary-expr","locations":[{"start":{"line":25,"column":11},"end":{"line":25,"column":16}},{"start":{"line":25,"column":20},"end":{"line":25,"column":41}},{"start":{"line":25,"column":45},"end":{"line":25,"column":77}}]},"3":{"loc":{"start":{"line":26,"column":9},"end":{"line":26,"column":65}},"type":"binary-expr","locations":[{"start":{"line":26,"column":9},"end":{"line":26,"column":12}},{"start":{"line":26,"column":16},"end":{"line":26,"column":35}},{"start":{"line":26,"column":39},"end":{"line":26,"column":65}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0,0],"1":[0,0,0],"2":[0,0,0],"3":[0,0,0]}} -,"/home/eben/projects/gpt-shell/src/request-helper.js": {"path":"/home/eben/projects/gpt-shell/src/request-helper.js","statementMap":{"0":{"start":{"line":5,"column":34},"end":{"line":34,"column":1}},"1":{"start":{"line":6,"column":2},"end":{"line":6,"column":41}},"2":{"start":{"line":7,"column":20},"end":{"line":7,"column":38}},"3":{"start":{"line":9,"column":17},"end":{"line":9,"column":28}},"4":{"start":{"line":11,"column":2},"end":{"line":15,"column":3}},"5":{"start":{"line":12,"column":4},"end":{"line":12,"column":29}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":31}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":51}},"8":{"start":{"line":17,"column":25},"end":{"line":27,"column":3}},"9":{"start":{"line":28,"column":19},"end":{"line":28,"column":70}},"10":{"start":{"line":29,"column":15},"end":{"line":29,"column":36}},"11":{"start":{"line":31,"column":2},"end":{"line":31,"column":27}},"12":{"start":{"line":32,"column":2},"end":{"line":32,"column":29}},"13":{"start":{"line":33,"column":2},"end":{"line":33,"column":14}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":34},"end":{"line":5,"column":39}},"loc":{"start":{"line":5,"column":59},"end":{"line":34,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":2},"end":{"line":15,"column":3}},"type":"if","locations":[{"start":{"line":11,"column":2},"end":{"line":15,"column":3}},{"start":{"line":11,"column":2},"end":{"line":15,"column":3}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"f":{"0":0},"b":{"0":[0,0]}} -,"/home/eben/projects/gpt-shell/src/utilities/animation.js": {"path":"/home/eben/projects/gpt-shell/src/utilities/animation.js","statementMap":{"0":{"start":{"line":3,"column":32},"end":{"line":11,"column":1}},"1":{"start":{"line":4,"column":17},"end":{"line":4,"column":67}},"2":{"start":{"line":5,"column":10},"end":{"line":5,"column":11}},"3":{"start":{"line":7,"column":2},"end":{"line":10,"column":9}},"4":{"start":{"line":8,"column":4},"end":{"line":8,"column":77}},"5":{"start":{"line":9,"column":4},"end":{"line":9,"column":32}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":32},"end":{"line":3,"column":33}},"loc":{"start":{"line":3,"column":38},"end":{"line":11,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":21},"end":{"line":7,"column":22}},"loc":{"start":{"line":7,"column":27},"end":{"line":10,"column":3}}}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"f":{"0":0,"1":0},"b":{}} -,"/home/eben/projects/gpt-shell/src/utilities/error-handling.js": {"path":"/home/eben/projects/gpt-shell/src/utilities/error-handling.js","statementMap":{"0":{"start":{"line":3,"column":23},"end":{"line":3,"column":25}},"1":{"start":{"line":5,"column":24},"end":{"line":7,"column":1}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":31}},"3":{"start":{"line":9,"column":25},"end":{"line":9,"column":47}},"4":{"start":{"line":9,"column":31},"end":{"line":9,"column":47}},"5":{"start":{"line":11,"column":27},"end":{"line":11,"column":56}},"6":{"start":{"line":11,"column":34},"end":{"line":11,"column":55}},"7":{"start":{"line":13,"column":25},"end":{"line":17,"column":1}},"8":{"start":{"line":14,"column":2},"end":{"line":16,"column":5}},"9":{"start":{"line":15,"column":4},"end":{"line":15,"column":27}},"10":{"start":{"line":19,"column":26},"end":{"line":21,"column":1}},"11":{"start":{"line":20,"column":2},"end":{"line":20,"column":27}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":24},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":35},"end":{"line":7,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":25},"end":{"line":9,"column":26}},"loc":{"start":{"line":9,"column":31},"end":{"line":9,"column":47}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":27},"end":{"line":11,"column":28}},"loc":{"start":{"line":11,"column":34},"end":{"line":11,"column":55}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":25},"end":{"line":13,"column":26}},"loc":{"start":{"line":13,"column":31},"end":{"line":17,"column":1}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":14,"column":27},"end":{"line":14,"column":28}},"loc":{"start":{"line":14,"column":38},"end":{"line":16,"column":3}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":19,"column":26},"end":{"line":19,"column":27}},"loc":{"start":{"line":19,"column":39},"end":{"line":21,"column":1}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":0,"5":1,"6":0,"7":1,"8":0,"9":0,"10":1,"11":0},"f":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{}} -,"/home/eben/projects/gpt-shell/src/utilities/get-config.js": {"path":"/home/eben/projects/gpt-shell/src/utilities/get-config.js","statementMap":{"0":{"start":{"line":4,"column":52},"end":{"line":22,"column":1}},"1":{"start":{"line":5,"column":15},"end":{"line":5,"column":19}},"2":{"start":{"line":6,"column":2},"end":{"line":9,"column":3}},"3":{"start":{"line":7,"column":4},"end":{"line":7,"column":19}},"4":{"start":{"line":8,"column":4},"end":{"line":8,"column":46}},"5":{"start":{"line":11,"column":2},"end":{"line":14,"column":3}},"6":{"start":{"line":12,"column":4},"end":{"line":12,"column":19}},"7":{"start":{"line":13,"column":4},"end":{"line":13,"column":44}},"8":{"start":{"line":16,"column":2},"end":{"line":19,"column":3}},"9":{"start":{"line":17,"column":4},"end":{"line":17,"column":19}},"10":{"start":{"line":18,"column":4},"end":{"line":18,"column":46}},"11":{"start":{"line":21,"column":2},"end":{"line":21,"column":16}},"12":{"start":{"line":24,"column":25},"end":{"line":45,"column":1}},"13":{"start":{"line":25,"column":2},"end":{"line":32,"column":3}},"14":{"start":{"line":26,"column":19},"end":{"line":26,"column":74}},"15":{"start":{"line":27,"column":4},"end":{"line":29,"column":5}},"16":{"start":{"line":28,"column":6},"end":{"line":28,"column":54}},"17":{"start":{"line":31,"column":4},"end":{"line":31,"column":49}},"18":{"start":{"line":34,"column":17},"end":{"line":38,"column":3}},"19":{"start":{"line":40,"column":2},"end":{"line":42,"column":3}},"20":{"start":{"line":41,"column":4},"end":{"line":41,"column":52}},"21":{"start":{"line":44,"column":2},"end":{"line":44,"column":47}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":52},"end":{"line":4,"column":53}},"loc":{"start":{"line":4,"column":64},"end":{"line":22,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":24,"column":25},"end":{"line":24,"column":26}},"loc":{"start":{"line":24,"column":31},"end":{"line":45,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":2},"end":{"line":9,"column":3}},"type":"if","locations":[{"start":{"line":6,"column":2},"end":{"line":9,"column":3}},{"start":{"line":6,"column":2},"end":{"line":9,"column":3}}]},"1":{"loc":{"start":{"line":11,"column":2},"end":{"line":14,"column":3}},"type":"if","locations":[{"start":{"line":11,"column":2},"end":{"line":14,"column":3}},{"start":{"line":11,"column":2},"end":{"line":14,"column":3}}]},"2":{"loc":{"start":{"line":16,"column":2},"end":{"line":19,"column":3}},"type":"if","locations":[{"start":{"line":16,"column":2},"end":{"line":19,"column":3}},{"start":{"line":16,"column":2},"end":{"line":19,"column":3}}]},"3":{"loc":{"start":{"line":25,"column":2},"end":{"line":32,"column":3}},"type":"if","locations":[{"start":{"line":25,"column":2},"end":{"line":32,"column":3}},{"start":{"line":25,"column":2},"end":{"line":32,"column":3}}]},"4":{"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":5}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":29,"column":5}},{"start":{"line":27,"column":4},"end":{"line":29,"column":5}}]},"5":{"loc":{"start":{"line":40,"column":2},"end":{"line":42,"column":3}},"type":"if","locations":[{"start":{"line":40,"column":2},"end":{"line":42,"column":3}},{"start":{"line":40,"column":2},"end":{"line":42,"column":3}}]}},"s":{"0":1,"1":3,"2":3,"3":0,"4":0,"5":3,"6":0,"7":0,"8":3,"9":1,"10":1,"11":3,"12":1,"13":1,"14":1,"15":1,"16":0,"17":1,"18":0,"19":0,"20":0,"21":0},"f":{"0":3,"1":1},"b":{"0":[0,3],"1":[0,3],"2":[1,2],"3":[1,0],"4":[0,1],"5":[0,0]}} -,"/home/eben/projects/gpt-shell/src/utilities/logger.js": {"path":"/home/eben/projects/gpt-shell/src/utilities/logger.js","statementMap":{"0":{"start":{"line":4,"column":35},"end":{"line":6,"column":2}},"1":{"start":{"line":5,"column":2},"end":{"line":5,"column":65}},"2":{"start":{"line":8,"column":33},"end":{"line":10,"column":2}},"3":{"start":{"line":9,"column":2},"end":{"line":9,"column":66}},"4":{"start":{"line":12,"column":32},"end":{"line":14,"column":2}},"5":{"start":{"line":13,"column":2},"end":{"line":13,"column":49}},"6":{"start":{"line":16,"column":40},"end":{"line":20,"column":1}},"7":{"start":{"line":17,"column":2},"end":{"line":19,"column":5}},"8":{"start":{"line":18,"column":4},"end":{"line":18,"column":45}},"9":{"start":{"line":22,"column":16},"end":{"line":36,"column":2}},"10":{"start":{"line":38,"column":18},"end":{"line":41,"column":1}},"11":{"start":{"line":39,"column":2},"end":{"line":39,"column":44}},"12":{"start":{"line":40,"column":2},"end":{"line":40,"column":23}},"13":{"start":{"line":43,"column":20},"end":{"line":46,"column":1}},"14":{"start":{"line":44,"column":2},"end":{"line":44,"column":46}},"15":{"start":{"line":45,"column":2},"end":{"line":45,"column":25}},"16":{"start":{"line":48,"column":17},"end":{"line":55,"column":1}},"17":{"start":{"line":49,"column":2},"end":{"line":49,"column":43}},"18":{"start":{"line":50,"column":2},"end":{"line":50,"column":56}},"19":{"start":{"line":51,"column":2},"end":{"line":54,"column":5}},"20":{"start":{"line":52,"column":4},"end":{"line":52,"column":68}},"21":{"start":{"line":53,"column":4},"end":{"line":53,"column":25}},"22":{"start":{"line":57,"column":22},"end":{"line":62,"column":1}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":57},"end":{"line":4,"column":58}},"loc":{"start":{"line":4,"column":74},"end":{"line":6,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":55},"end":{"line":8,"column":56}},"loc":{"start":{"line":8,"column":72},"end":{"line":10,"column":1}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":54},"end":{"line":12,"column":55}},"loc":{"start":{"line":12,"column":71},"end":{"line":14,"column":1}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":16,"column":40},"end":{"line":16,"column":41}},"loc":{"start":{"line":16,"column":52},"end":{"line":20,"column":1}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":17,"column":31},"end":{"line":17,"column":32}},"loc":{"start":{"line":17,"column":48},"end":{"line":19,"column":3}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":38,"column":18},"end":{"line":38,"column":19}},"loc":{"start":{"line":38,"column":30},"end":{"line":41,"column":1}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":43,"column":20},"end":{"line":43,"column":21}},"loc":{"start":{"line":43,"column":34},"end":{"line":46,"column":1}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":48,"column":17},"end":{"line":48,"column":18}},"loc":{"start":{"line":48,"column":29},"end":{"line":55,"column":1}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":51,"column":17},"end":{"line":51,"column":18}},"loc":{"start":{"line":51,"column":35},"end":{"line":54,"column":3}}}},"branchMap":{},"s":{"0":1,"1":0,"2":1,"3":0,"4":1,"5":0,"6":1,"7":0,"8":0,"9":1,"10":1,"11":0,"12":0,"13":1,"14":0,"15":0,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"b":{}} -} diff --git a/coverage/favicon.png b/coverage/favicon.png deleted file mode 100644 index c1525b811a167671e9de1fa78aab9f5c0b61cef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> - - - - Code coverage report for gpt-shell - - - - - - - - - -
-
-

All files gpt-shell

-
- -
- 0% - Statements - 0/11 -
- - -
- 0% - Branches - 0/2 -
- - -
- 0% - Functions - 0/7 -
- - -
- 0% - Lines - 0/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
index.js -
-
0%0/110%0/20%0/70%0/10
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/gpt-shell/index.js.html b/coverage/gpt-shell/index.js.html deleted file mode 100644 index d430930..0000000 --- a/coverage/gpt-shell/index.js.html +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - Code coverage report for gpt-shell/index.js - - - - - - - - - -
-
-

All files / gpt-shell index.js

-
- -
- 0% - Statements - 0/11 -
- - -
- 0% - Branches - 0/2 -
- - -
- 0% - Functions - 0/7 -
- - -
- 0% - Lines - 0/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
#!/usr/bin/env node
- 
-import yargs from "yargs";
-import { hideBin } from "yargs/helpers";
-import { ask, configure } from "./src/main.js";
- 
-const isAtLeastOneOptionSpecified = (keys, args) => {
-  return keys.some((key) => args[key] !== null);
-};
- 
-yargs(hideBin(process.argv))
-  .strict(true)
-  .command(
-    "ask",
-    "Send prompt to GPT",
-    (yargs) => {
-      yargs
-        .option("prompt", {
-          alias: "p",
-          type: "string",
-          describe: "Prompt to send to GPT",
-          demandOption: true,
-        })
-        .option("interactive", {
-          alias: "i",
-          type: "boolean",
-          default: false,
-          describe: "Interactive mode",
-        });
-    },
-    (argv) => {
-      ask(argv.prompt);
-    },
-  )
-  .command(
-    "config",
-    "Configure GPT-Shell",
-    (yargs) => {
-      yargs
-        .option("apikey", {
-          alias: "k",
-          type: "string",
-          default: null,
-          describe: "API key to use",
-        })
-        .option("model", {
-          alias: "m",
-          type: "string",
-          default: null,
-          describe: "Model to use",
-        })
-        .option("url", {
-          alias: "u",
-          type: "string",
-          default: null,
-          describe: "API endpoint to use",
-        });
-    },
-    (argv) => {
-      configure(argv);
-    },
-  )
-  .check((argv) => {
-    if (!isAtLeastOneOptionSpecified(["apikey", "model", "url"], argv)) {
-      throw new Error("No option specified");
-    }
-    return true;
-  })
-  .demandCommand(1)
-  .parse();
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/gpt-shell/src/index.html b/coverage/gpt-shell/src/index.html deleted file mode 100644 index 7811da7..0000000 --- a/coverage/gpt-shell/src/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for gpt-shell/src - - - - - - - - - -
-
-

All files gpt-shell/src

-
- -
- 0% - Statements - 0/26 -
- - -
- 0% - Branches - 0/13 -
- - -
- 0% - Functions - 0/5 -
- - -
- 0% - Lines - 0/26 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
main.js -
-
0%0/120%0/110%0/40%0/12
request-helper.js -
-
0%0/140%0/20%0/10%0/14
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/gpt-shell/src/main.js.html b/coverage/gpt-shell/src/main.js.html deleted file mode 100644 index 3bc3dec..0000000 --- a/coverage/gpt-shell/src/main.js.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - Code coverage report for gpt-shell/src/main.js - - - - - - - - - -
-
-

All files / gpt-shell/src main.js

-
- -
- 0% - Statements - 0/12 -
- - -
- 0% - Branches - 0/11 -
- - -
- 0% - Functions - 0/4 -
- - -
- 0% - Lines - 0/12 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import "dotenv/config";
-import fs from "fs";
-import { sendOpenApiRequest } from "./request-helper.js";
-import { logger } from "./utilities/logger.js";
- 
-export const ask = (prompt) => {
-  sendOpenApiRequest(prompt)
-    .then((data) => {
-      logger.logResponse(data.choices[0].message.content);
-    })
-    .catch((error) => {
-      logger.logError(JSON.parse(error.message));
-    });
-};
- 
-export const configure = (args) => {
-  let existingConfig = null;
-  if (fs.existsSync("./.gpt-shell-config.json")) {
-    existingConfig = JSON.parse(fs.readFileSync("./.gpt-shell-config.json"));
-  }
- 
-  const { apikey, model, url } = args;
-  const config = {
-    apikey: apikey || existingConfig?.apikey || process.env.OPENAI_API_KEY,
-    model: model || existingConfig?.model || process.env.OPENAI_DEFAULT_MODEL,
-    url: url || existingConfig?.url || process.env.OPENAI_API_URL,
-  };
- 
-  fs.writeFileSync("./.gpt-shell-config.json", JSON.stringify(config, null, 2));
- 
-  logger.default.info(config);
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/gpt-shell/src/request-helper.js.html b/coverage/gpt-shell/src/request-helper.js.html deleted file mode 100644 index 3805b9e..0000000 --- a/coverage/gpt-shell/src/request-helper.js.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - Code coverage report for gpt-shell/src/request-helper.js - - - - - - - - - -
-
-

All files / gpt-shell/src request-helper.js

-
- -
- 0% - Statements - 0/14 -
- - -
- 0% - Branches - 0/2 -
- - -
- 0% - Functions - 0/1 -
- - -
- 0% - Lines - 0/14 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { loadingAnimation } from "./utilities/animation.js";
-import { logger } from "./utilities/logger.js";
-import { getConfig } from "./utilities/get-config.js";
- 
-export const sendOpenApiRequest = async (requestPrompt) => {
-  logger.logPrompt(requestPrompt + "\n");
-  const animation = loadingAnimation();
- 
-  const config = getConfig();
- 
-  if (config.status === "error") {
-    clearInterval(animation);
-    process.stdout.write("\r");
-    throw new Error(JSON.stringify(config.errors));
-  }
- 
-  const requestOptions = {
-    method: "POST",
-    headers: {
-      "Content-Type": "application/json",
-      Authorization: "Bearer " + getConfig().config.apikey,
-    },
-    body: JSON.stringify({
-      model: getConfig().config.model,
-      messages: [{ role: "user", content: requestPrompt }],
-    }),
-  };
-  const response = await fetch(getConfig().config.url, requestOptions);
-  const data = await response.json();
- 
-  clearInterval(animation);
-  process.stdout.write("\r");
-  return data;
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/gpt-shell/src/utilities/animation.js.html b/coverage/gpt-shell/src/utilities/animation.js.html deleted file mode 100644 index 0563497..0000000 --- a/coverage/gpt-shell/src/utilities/animation.js.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Code coverage report for gpt-shell/src/utilities/animation.js - - - - - - - - - -
-
-

All files / gpt-shell/src/utilities animation.js

-
- -
- 0% - Statements - 0/6 -
- - -
- 100% - Branches - 0/0 -
- - -
- 0% - Functions - 0/2 -
- - -
- 0% - Lines - 0/6 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12  -  -  -  -  -  -  -  -  -  -  - 
import chalk from "chalk";
- 
-export const loadingAnimation = () => {
-  const frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
-  let i = 0;
- 
-  return setInterval(() => {
-    process.stdout.write(chalk.yellowBright("\r" + frames[i] + " Thinking"));
-    i = (i + 1) % frames.length;
-  }, 80);
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/gpt-shell/src/utilities/error-handling.js.html b/coverage/gpt-shell/src/utilities/error-handling.js.html deleted file mode 100644 index ec6ca55..0000000 --- a/coverage/gpt-shell/src/utilities/error-handling.js.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - Code coverage report for gpt-shell/src/utilities/error-handling.js - - - - - - - - - -
-
-

All files / gpt-shell/src/utilities error-handling.js

-
- -
- 58.33% - Statements - 7/12 -
- - -
- 100% - Branches - 0/0 -
- - -
- 16.66% - Functions - 1/6 -
- - -
- 70% - Lines - 7/10 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22  -  -1x -  -1x -1x -  -  -1x -  -1x -  -1x -  -  -  -  -  -1x -  -  - 
import { logger } from "./logger.js";
- 
-let aggregatedErrors = [];
- 
-export const addError = (error) => {
-  aggregatedErrors.push(error);
-};
- 
-export const getErrors = () => aggregatedErrors;
- 
-export const clearErrors = () => (aggregatedErrors = []);
- 
-export const logErrors = () => {
-  aggregatedErrors.forEach((error) => {
-    logger.logError(error);
-  });
-};
- 
-export const throwError = (message) => {
-  throw new Error(message);
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/gpt-shell/src/utilities/get-config.js.html b/coverage/gpt-shell/src/utilities/get-config.js.html deleted file mode 100644 index 157f155..0000000 --- a/coverage/gpt-shell/src/utilities/get-config.js.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - Code coverage report for gpt-shell/src/utilities/get-config.js - - - - - - - - - -
-
-

All files / gpt-shell/src/utilities get-config.js

-
- -
- 59.09% - Statements - 13/22 -
- - -
- 50% - Branches - 6/12 -
- - -
- 100% - Functions - 2/2 -
- - -
- 59.09% - Lines - 13/22 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46  -  -  -1x -3x -3x -  -  -  -  -3x -  -  -  -  -3x -1x -1x -  -  -3x -  -  -1x -1x -1x -1x -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import fs from "fs";
-import { getErrors, addError } from "./error-handling.js";
- 
-export const checkForRequiredEnvironmentVariables = (config) => {
-  let result = true;
-  Iif (!config.apikey) {
-    result = false;
-    addError("OPENAI_API_KEY is not defined");
-  }
- 
-  Iif (!config.model) {
-    result = false;
-    addError("OPENAI_MODEL is not defined");
-  }
- 
-  if (!config.url) {
-    result = false;
-    addError("OPENAI_API_URL is not defined");
-  }
- 
-  return result;
-};
- 
-export const getConfig = () => {
-  Eif (fs.existsSync("./.gpt-shell-config.json")) {
-    const config = JSON.parse(fs.readFileSync("./.gpt-shell-config.json"));
-    Iif (!checkForRequiredEnvironmentVariables(config)) {
-      return { status: "error", errors: getErrors() };
-    }
- 
-    return { status: "success", config: config };
-  }
- 
-  const config = {
-    apikey: process.env.OPENAI_API_KEY,
-    model: process.env.OPENAI_MODEL,
-    url: process.env.OPENAI_API_URL,
-  };
- 
-  if (!checkForRequiredEnvironmentVariables(config)) {
-    return { status: "error", errors: getErrors() };
-  }
- 
-  return { status: "success", config: config };
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/gpt-shell/src/utilities/index.html b/coverage/gpt-shell/src/utilities/index.html deleted file mode 100644 index 216c05e..0000000 --- a/coverage/gpt-shell/src/utilities/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - Code coverage report for gpt-shell/src/utilities - - - - - - - - - -
-
-

All files gpt-shell/src/utilities

-
- -
- 46.03% - Statements - 29/63 -
- - -
- 50% - Branches - 6/12 -
- - -
- 15.78% - Functions - 3/19 -
- - -
- 47.54% - Lines - 29/61 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
animation.js -
-
0%0/6100%0/00%0/20%0/6
error-handling.js -
-
58.33%7/12100%0/016.66%1/670%7/10
get-config.js -
-
59.09%13/2250%6/12100%2/259.09%13/22
logger.js -
-
39.13%9/23100%0/00%0/939.13%9/23
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/gpt-shell/src/utilities/logger.js.html b/coverage/gpt-shell/src/utilities/logger.js.html deleted file mode 100644 index 97df86d..0000000 --- a/coverage/gpt-shell/src/utilities/logger.js.html +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - Code coverage report for gpt-shell/src/utilities/logger.js - - - - - - - - - -
-
-

All files / gpt-shell/src/utilities logger.js

-
- -
- 39.13% - Statements - 9/23 -
- - -
- 100% - Branches - 0/0 -
- - -
- 0% - Functions - 0/9 -
- - -
- 39.13% - Lines - 9/23 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63  -  -  -1x -  -  -  -1x -  -  -  -1x -  -  -  -1x -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -1x -  -  -  -  -  - 
import winston from "winston";
-import chalk from "chalk";
- 
-const customResponseLoggerFormat = winston.format.printf(({ message }) => {
-  return `${chalk.magenta("[gpt-shell-response]")} : ${message}`;
-});
- 
-const customPromptLoggerFormat = winston.format.printf(({ message }) => {
-  return `${chalk.blueBright("[gpt-shell-prompt]")} : ${message}`;
-});
- 
-const customErrorLoggerFormat = winston.format.printf(({ message }) => {
-  return chalk.redBright("[error] : " + message);
-});
- 
-const customPrefixedErrorLoggerFormat = (prefix) => {
-  return winston.format.printf(({ message }) => {
-    return chalk.redBright(prefix + message);
-  });
-};
- 
-const _logger = winston.createLogger({
-  level: "info",
-  transports: [
-    new winston.transports.Console(),
-    new winston.transports.File({
-      filename: "gpt-shell-responses.log",
-      level: "info",
-    }),
-    new winston.transports.File({
-      filename: "gpt-shell-error.log",
-      level: "error",
-    }),
-    new winston.transports.File({ filename: "combined.log" }),
-  ],
-});
- 
-const logPrompt = (prompt) => {
-  _logger.format = customPromptLoggerFormat;
-  _logger.info(prompt);
-};
- 
-const logResponse = (response) => {
-  _logger.format = customResponseLoggerFormat;
-  _logger.info(response);
-};
- 
-const logError = (errors) => {
-  _logger.format = customErrorLoggerFormat;
-  _logger.error("Some configuration errors were found");
-  errors.forEach((error, index) => {
-    _logger.format = customPrefixedErrorLoggerFormat(`[${index}] `);
-    _logger.error(error);
-  });
-};
- 
-export const logger = {
-  default: _logger,
-  logPrompt,
-  logResponse,
-  logError,
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/index.html b/coverage/index.html deleted file mode 100644 index 4ba0c25..0000000 --- a/coverage/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 29% - Statements - 29/100 -
- - -
- 22.22% - Branches - 6/27 -
- - -
- 9.67% - Functions - 3/31 -
- - -
- 29.89% - Lines - 29/97 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
gpt-shell -
-
0%0/110%0/20%0/70%0/10
gpt-shell/src -
-
0%0/260%0/130%0/50%0/26
gpt-shell/src/utilities -
-
46.03%29/6350%6/1215.78%3/1947.54%29/61
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/prettify.css b/coverage/prettify.css deleted file mode 100644 index b317a7c..0000000 --- a/coverage/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/prettify.js b/coverage/prettify.js deleted file mode 100644 index b322523..0000000 --- a/coverage/prettify.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/sort-arrow-sprite.png b/coverage/sort-arrow-sprite.png deleted file mode 100644 index 6ed68316eb3f65dec9063332d2f69bf3093bbfab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc diff --git a/coverage/sorter.js b/coverage/sorter.js deleted file mode 100644 index 2bb296a..0000000 --- a/coverage/sorter.js +++ /dev/null @@ -1,196 +0,0 @@ -/* eslint-disable */ -var addSorting = (function() { - 'use strict'; - var cols, - currentSort = { - index: 0, - desc: false - }; - - // returns the summary table element - function getTable() { - return document.querySelector('.coverage-summary'); - } - // returns the thead element of the summary table - function getTableHeader() { - return getTable().querySelector('thead tr'); - } - // returns the tbody element of the summary table - function getTableBody() { - return getTable().querySelector('tbody'); - } - // returns the th element for nth column - function getNthColumn(n) { - return getTableHeader().querySelectorAll('th')[n]; - } - - function onFilterInput() { - const searchValue = document.getElementById('fileSearch').value; - const rows = document.getElementsByTagName('tbody')[0].children; - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - if ( - row.textContent - .toLowerCase() - .includes(searchValue.toLowerCase()) - ) { - row.style.display = ''; - } else { - row.style.display = 'none'; - } - } - } - - // loads the search box - function addSearchBox() { - var template = document.getElementById('filterTemplate'); - var templateClone = template.content.cloneNode(true); - templateClone.getElementById('fileSearch').oninput = onFilterInput; - template.parentElement.appendChild(templateClone); - } - - // loads all columns - function loadColumns() { - var colNodes = getTableHeader().querySelectorAll('th'), - colNode, - cols = [], - col, - i; - - for (i = 0; i < colNodes.length; i += 1) { - colNode = colNodes[i]; - col = { - key: colNode.getAttribute('data-col'), - sortable: !colNode.getAttribute('data-nosort'), - type: colNode.getAttribute('data-type') || 'string' - }; - cols.push(col); - if (col.sortable) { - col.defaultDescSort = col.type === 'number'; - colNode.innerHTML = - colNode.innerHTML + ''; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function(a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function(a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? ' sorted-desc' - : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function() { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function() { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSearchBox(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); From 5e496f35570c40d0932a440828c20b64637a3412 Mon Sep 17 00:00:00 2001 From: Ebenezer Nikabou Date: Thu, 21 Dec 2023 01:19:43 +0200 Subject: [PATCH 7/7] removed keypress --- package-lock.json | 6 ------ package.json | 1 - 2 files changed, 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 320c2e5..9238991 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,6 @@ "dependencies": { "chalk": "^5.3.0", "dotenv": "^16.3.1", - "keypress": "^0.2.1", "winston": "^3.11.0", "yargs": "^17.7.2" }, @@ -2255,11 +2254,6 @@ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, - "node_modules/keypress": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.2.1.tgz", - "integrity": "sha512-HjorDJFNhnM4SicvaUXac0X77NiskggxJdesG72+O5zBKpSqKFCrqmndKVqpu3pFqkla0St6uGk8Ju0sCurrmg==" - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", diff --git a/package.json b/package.json index e6f5acd..a2353be 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,6 @@ "dependencies": { "chalk": "^5.3.0", "dotenv": "^16.3.1", - "keypress": "^0.2.1", "winston": "^3.11.0", "yargs": "^17.7.2" },