├── .gitignore ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE.txt ├── README.md ├── help ├── package-lock.json ├── package.json ├── plugins ├── .gitignore ├── .npmignore ├── plugin-client-default │ ├── .gitignore │ ├── .npmignore │ ├── CHANGELOG.md │ ├── config.d │ │ ├── about.json │ │ ├── client.json │ │ ├── exec.json │ │ ├── icons.json │ │ ├── name.json │ │ ├── opengraph.json │ │ ├── proxy.json │ │ └── style.json │ ├── i18n │ │ ├── about_en_US.json │ │ └── resources_en_US.json │ ├── icons │ │ ├── icns │ │ │ ├── README.md │ │ │ └── kui.icns │ │ ├── ico │ │ │ ├── README.md │ │ │ ├── favicon.ico │ │ │ └── kui.ico │ │ ├── png │ │ │ ├── TestIcon.png │ │ │ ├── kui-128.png │ │ │ └── kui.png │ │ └── svg │ │ │ ├── kui-wide.svg │ │ │ └── kui.svg │ ├── images │ │ └── httpshellImage.png │ ├── notebooks │ │ ├── settings.json │ │ └── welcome.json │ ├── package.json │ ├── src │ │ ├── index.tsx │ │ └── preload.ts │ ├── tsconfig.json │ └── web │ │ └── css │ │ └── static │ │ └── test.scss └── plugin-http-shell │ ├── .gitignore │ ├── .npmignore │ ├── package.json │ ├── src │ ├── index.ts │ ├── lib │ │ ├── cmds │ │ │ ├── delete.ts │ │ │ ├── get-headers.ts │ │ │ ├── get-url.ts │ │ │ ├── get.ts │ │ │ ├── help-http-shell.ts │ │ │ ├── help.ts │ │ │ ├── options.ts │ │ │ ├── patch.ts │ │ │ ├── post.ts │ │ │ ├── put.ts │ │ │ ├── requests.ts │ │ │ ├── reset-auth.ts │ │ │ ├── reset-headers.ts │ │ │ ├── set-auth.ts │ │ │ ├── set-header.ts │ │ │ └── set-url.ts │ │ ├── usage.ts │ │ └── utils │ │ │ └── Emitter.ts │ ├── plugin.ts │ ├── preload.ts │ └── view │ │ ├── BasicAuthenticationWidget.tsx │ │ ├── CurrentUrlWidget.tsx │ │ ├── HelpWidget.tsx │ │ └── PasswordForm.tsx │ └── tsconfig.json ├── src ├── index.d.ts └── index.js.map └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,node 3 | # Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,node 4 | 5 | ### Node ### 6 | # Logs 7 | logs 8 | *.log 9 | npm-debug.log* 10 | yarn-debug.log* 11 | yarn-error.log* 12 | lerna-debug.log* 13 | 14 | ### Kui ### 15 | kui-electron-tmp/ 16 | 17 | # Diagnostic reports (https://nodejs.org/api/report.html) 18 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 19 | 20 | # Runtime data 21 | pids 22 | *.pid 23 | *.seed 24 | *.pid.lock 25 | 26 | # Directory for instrumented libs generated by jscoverage/JSCover 27 | lib-cov 28 | 29 | # Coverage directory used by tools like istanbul 30 | coverage 31 | *.lcov 32 | 33 | # nyc test coverage 34 | .nyc_output 35 | 36 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 37 | .grunt 38 | 39 | # Bower dependency directory (https://bower.io/) 40 | bower_components 41 | 42 | # node-waf configuration 43 | .lock-wscript 44 | 45 | # Compiled binary addons (https://nodejs.org/api/addons.html) 46 | build/Release 47 | 48 | # Dependency directories 49 | node_modules/ 50 | jspm_packages/ 51 | 52 | # TypeScript v1 declaration files 53 | typings/ 54 | 55 | # TypeScript cache 56 | *.tsbuildinfo 57 | 58 | # Optional npm cache directory 59 | .npm 60 | 61 | # Optional eslint cache 62 | .eslintcache 63 | 64 | # Microbundle cache 65 | .rpt2_cache/ 66 | .rts2_cache_cjs/ 67 | .rts2_cache_es/ 68 | .rts2_cache_umd/ 69 | 70 | # Optional REPL history 71 | .node_repl_history 72 | 73 | # Output of 'npm pack' 74 | *.tgz 75 | 76 | # Yarn Integrity file 77 | .yarn-integrity 78 | 79 | # dotenv environment variables file 80 | .env 81 | .env.test 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | 86 | # Next.js build output 87 | .next 88 | 89 | # Nuxt.js build / generate output 90 | .nuxt 91 | dist 92 | 93 | # Gatsby files 94 | .cache/ 95 | # Comment in the public line in if your project uses Gatsby and not Next.js 96 | # https://nextjs.org/blog/next-9-1#public-directory-support 97 | # public 98 | 99 | # vuepress build output 100 | .vuepress/dist 101 | 102 | # Serverless directories 103 | .serverless/ 104 | 105 | # FuseBox cache 106 | .fusebox/ 107 | 108 | # DynamoDB Local files 109 | .dynamodb/ 110 | 111 | # TernJS port file 112 | .tern-port 113 | 114 | # Stores VSCode versions used for testing VSCode extensions 115 | .vscode-test 116 | 117 | ### VisualStudioCode ### 118 | .vscode/* 119 | !.vscode/settings.json 120 | !.vscode/tasks.json 121 | !.vscode/launch.json 122 | !.vscode/extensions.json 123 | *.code-workspace 124 | 125 | ### VisualStudioCode Patch ### 126 | # Ignore all local history of files 127 | .history 128 | 129 | # End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,node -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to HTTP Shell 2 | 3 | This page contains information about reporting issues, how to suggest changes 4 | as well as the guidelines we follow for how our documents are formatted. 5 | 6 | ## Reporting an Issue 7 | 8 | To report an issue, or to suggest an idea for a change that you haven't 9 | had time to write-up yet, open an 10 | [issue](https://github.com/SoftInstigate/http-shell/issues). It is best to check 11 | our existing [issues](https://github.com/SoftInstigate/http-shell/issues) first 12 | to see if a similar one has already been opened and discussed. 13 | 14 | ## Suggesting a Change 15 | 16 | To suggest a change to this repository, submit a [pull 17 | request](https://github.com/SoftInstigate/http-shell/pulls)(PR) with the complete 18 | set of changes you'd like to see. 19 | 20 | Each PR must be signed per the following section. 21 | 22 | ### Assigning and Owning work 23 | 24 | If you want to own and work on an issue, add a comment or “#dibs” it asking 25 | about ownership. A maintainer will then add the Assigned label and modify 26 | the first comment in the issue to include `Assigned to: @person` 27 | 28 | ### Git Commit Guidelines 29 | 30 | #### Sign your work 31 | 32 | The sign-off is a simple line at the end of the explanation for the patch. Your 33 | signature certifies that you wrote the patch or otherwise have the right to pass 34 | it on as an open-source patch. The rules are pretty simple: if you can certify 35 | the below (from [developercertificate.org](http://developercertificate.org/)): 36 | 37 | ``` 38 | Developer Certificate of Origin 39 | Version 1.1 40 | 41 | Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 42 | 1 Letterman Drive 43 | Suite D4700 44 | San Francisco, CA, 94129 45 | 46 | Everyone is permitted to copy and distribute verbatim copies of this 47 | license document, but changing it is not allowed. 48 | 49 | Developer's Certificate of Origin 1.1 50 | 51 | By making a contribution to this project, I certify that: 52 | 53 | (a) The contribution was created in whole or in part by me and I 54 | have the right to submit it under the open source license 55 | indicated in the file; or 56 | 57 | (b) The contribution is based upon previous work that, to the best 58 | of my knowledge, is covered under an appropriate open source 59 | license and I have the right under that license to submit that 60 | work with modifications, whether created in whole or in part 61 | by me, under the same open source license (unless I am 62 | permitted to submit under a different license), as indicated 63 | in the file; or 64 | 65 | (c) The contribution was provided directly to me by some other 66 | person who certified (a), (b) or (c) and I have not modified 67 | it. 68 | 69 | (d) I understand and agree that this project and the contribution 70 | are public and that a record of the contribution (including all 71 | personal information I submit with it, including my sign-off) is 72 | maintained indefinitely and may be redistributed consistent with 73 | this project or the open source license(s) involved. 74 | ``` 75 | 76 | Then you just add a line to every git commit message: 77 | 78 | Signed-off-by: Joe Smith 79 | 80 | Use your real name (sorry, no pseudonyms or anonymous contributions.) 81 | 82 | If you set your `user.name` and `user.email` git configs, you can sign your 83 | commit automatically with `git commit -s`. 84 | 85 | Note: If your git config information is set properly then viewing the 86 | `git log` information for your commit will look something like this: 87 | 88 | ``` 89 | Author: Joe Smith 90 | Date: Thu Feb 2 11:41:15 2018 -0800 91 | 92 | docs: Update README 93 | 94 | Signed-off-by: Joe Smith 95 | ``` 96 | 97 | Notice the `Author` and `Signed-off-by` lines match. If they don't 98 | your PR will be rejected. 99 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Expected Behavior 4 | 5 | 6 | ## Current Behavior 7 | 8 | 9 | ## Context 10 | 11 | 12 | 13 | ## Environment 14 | 15 | 16 | 17 | ## Steps to Reproduce 18 | 19 | 20 | 1. 21 | 2. 22 | 3. 23 | 24 | ## Possible Implementation 25 | 26 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HTTP Shell 2 | 3 | **HTTP Shell** provides developers with a modern alternative to HTTP clients for interacting with APIs. Let's see it as something between a low-level command line interface, like curl or httpie, and a more user friendly GUI client, like Postman. The idea is that tools like curl are very powerful but a bit cumbersome, it is often hard for us to remember the exact syntax for each HTTP verb. HTTP Shell instead is still a command line interface, but with a much straightforward user experience. 4 | 5 | HTTP Shell is a tool built on top of IBM's open source [Kui framework](https://github.com/IBM/kui). 6 | 7 | > Kui combines the power of familiar CLIs with visualizations in high-impact areas. Kui enables you to manipulate complex JSON and YAML data models, integrate disparate tooling, and provides quick access to aggregate views of operational data. 8 | 9 | ![HTTP Shell Image](./plugins/plugin-client-default/images/httpshellImage.png) 10 | 11 | ## Installation 12 | 13 | We offer prebuilt images for Windows, MacOS and Linux. 14 | 15 | Get _HTTP Shell_ binary from the [releases download page](https://github.com/SoftInstigate/http-shell/releases) 16 | 17 | ## Usage 18 | 19 | Find more **HTTP Shell**'s usage information, commands and examples on [RESTHeart documentation](https://restheart.org/docs/plugins/dev-env/). 20 | 21 | ## Build from source 22 | 23 | First step: 24 | 25 | ```sh 26 | npm ci 27 | ``` 28 | 29 | Next, choose your journey from the following variants: 30 | 31 | ### Variant 1: I want to develop an Electron client 32 | 33 | Use these commands while developing. The first starts up the Webpack 34 | watcher. Each time you execute the second, an Electron window will 35 | open. 36 | 37 | ```sh 38 | npm run start 39 | npm run open 40 | ``` 41 | 42 | And use one of these commands to build production clients, after which 43 | your clients will be placed in `./dist/electron`. 44 | 45 | ```sh 46 | npm run build:electron:all 47 | npm run build:electron:mac 48 | npm run build:electron:linux 49 | npm run build:electron:windows 50 | ``` 51 | 52 | ### Variant 2: I want to develop a browser-based client 53 | 54 | Use this command while developing: 55 | 56 | ```sh 57 | npm run watch:source 58 | npm run watch:webpack 59 | ``` 60 | 61 | Then visit http://localhost:9080. To build a production set of Webpack 62 | bundles, use this command: 63 | 64 | ```sh 65 | npx kui-build-webpack 66 | ``` 67 | 68 | ## Get help 69 | 70 | As soon as the shell starts, get commands usage help with: 71 | 72 | ``` 73 | > help http-shell 74 | ``` 75 | 76 | ## Acknowledgments 77 | 78 | Project derived from [AnimalApp Kui skeleton project](https://github.com/IBM/kui/tree/master/docs/example/AnimalApp) 79 | 80 | ## Contribute 81 | 82 | [GitHub](https://github.com/softinstigate/http-shell "HTTP Shell's GitHub page") 83 | 84 | [Bugs](https://github.com/softinstigate/http-shell/issues/new "HTTP Shell's bug reporting page") 85 | -------------------------------------------------------------------------------- /help: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftInstigate/http-shell/516f85221f43975fa6726d8a2108cbfc69c1301c/help -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "http-shell", 3 | "version": "0.1.0", 4 | "description": "A CLI tool that provides developers with a modern alternative to HTTP clients for interacting with APIs.", 5 | "homepage": "https://github.com/SoftInstigate/http-shell", 6 | "keywords": [ 7 | "API", 8 | "REST", 9 | "HTTP", 10 | "cli", 11 | "shell" 12 | ], 13 | "author": "Andrea Di Cesare (andrea@softinstigate.com)", 14 | "license": "Apache-2.0", 15 | "bugs": { 16 | "email": "info@softinstigate.com", 17 | "url": "https://github.com/SoftInstigate/http-shell/issues" 18 | }, 19 | "main": "node_modules/@kui-shell/core/dist/main/main.js", 20 | "scripts": { 21 | "watch:source": "tsc --build . --watch", 22 | "compile": "npx tsc --build . && npx kui-babel && npx kui-prescan", 23 | "kill": "npm run kill:proxy; kill $(lsof -t -i:908${PORT_OFFSET-0}) > /dev/null 2> /dev/null || true", 24 | "_watch": "bash -c \"npm run kill; export CSP_ALLOWED_HOSTS='http: https: data: filesystem: about: blob: ws: wss:'; kui-watch-webpack\"", 25 | "watch:webpack": "bash -c \"npm run pty:nodejs && (npm run proxy &); npm run _watch $WATCH_ARGS\"", 26 | "watch:electron": "bash -c \"npm run pty:electron && TARGET=electron-renderer npm run _watch\"", 27 | "watch": "bash -c \"npm run kill; npm run compile && concurrently -n ES6,WEBPACK --kill-others 'npm run watch:source' 'npm run watch:electron'\"", 28 | "proxy": "export PORT=8081; export KUI_USE_HTTP=true; npm run pty:nodejs && npx kui-run-proxy", 29 | "kill:proxy": "kill $(lsof -t -i:808${PORT_OFFSET-1}) > /dev/null 2> /dev/null || true", 30 | "pty:rebuild": "kui-pty-rebuild", 31 | "pty:electron": "npm run pty:rebuild electron", 32 | "pty:nodejs": "npm run pty:rebuild node", 33 | "build:electron:mac": "PLATFORM=mac kui-build-electron", 34 | "build:electron:osx": "npm run build:electron:mac", 35 | "build:electron:linux": "PLATFORM=linux kui-build-electron", 36 | "build:electron:win32": "PLATFORM=win32 kui-build-electron", 37 | "build:electron:windows": "PLATFORM=win32 kui-build-electron", 38 | "build:electron:all": "kui-build-electron", 39 | "build": "npm run compile && webpack --mode production", 40 | "postinstall": "npm run compile", 41 | "open": "electron . shell", 42 | "start": "WATCH_ARGS='-open' npm run watch", 43 | "test": "echo \"Error: no test specified\" && exit 1" 44 | }, 45 | "devDependencies": { 46 | "@kui-shell/builder": "9.3.3", 47 | "@kui-shell/proxy": "9.3.3", 48 | "@kui-shell/react": "9.3.3", 49 | "@kui-shell/webpack": "9.3.3", 50 | "@types/carbon-components-react": "7.10.11", 51 | "@types/carbon__icons-react": "10.10.0", 52 | "@types/node": "12.12.31", 53 | "@types/react": "16.9.50", 54 | "@types/react-dom": "16.9.8", 55 | "concurrently": "5.3.0", 56 | "css-loader": "3.6.0", 57 | "electron": "7.3.3", 58 | "file-loader": "6.0.0", 59 | "font-config-webpack-plugin": "^2.0.0", 60 | "html-loader": "1.1.0", 61 | "html-webpack-plugin": "4.3.0", 62 | "mini-css-extract-plugin": "0.9.0", 63 | "react": "16.13.1", 64 | "react-dom": "16.13.1", 65 | "sass": "1.26.9", 66 | "sass-loader": "8.0.2", 67 | "style-loader": "1.1.3", 68 | "svg-inline-loader": "0.8.2", 69 | "typescript": "4.0.3", 70 | "webpack": "4.44.2", 71 | "webpack-cli": "3.3.12", 72 | "webpack-dev-server": "3.11.0" 73 | }, 74 | "dependencies": { 75 | "@kui-shell/client": "file:./plugins/plugin-client-default", 76 | "@kui-shell/core": "9.3.3", 77 | "@kui-shell/plugin-bash-like": "9.3.3", 78 | "@kui-shell/plugin-carbon-themes": "9.3.3", 79 | "@kui-shell/plugin-client-common": "9.3.3", 80 | "@kui-shell/plugin-core-support": "9.3.3", 81 | "@kui-shell/plugin-electron-components": "9.3.3", 82 | "@kui-shell/plugin-git": "9.3.3", 83 | "@kui-shell/plugin-proxy-support": "9.3.3", 84 | "@kui-shell/plugin-http-shell": "file:./plugins/plugin-http-shell", 85 | "@types/superagent": "^4.1.10", 86 | "superagent": "^6.1.0" 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /plugins/.gitignore: -------------------------------------------------------------------------------- 1 | dist -------------------------------------------------------------------------------- /plugins/.npmignore: -------------------------------------------------------------------------------- 1 | build 2 | src 3 | tests 4 | dist/test 5 | tsconfig* 6 | /*.tgz 7 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | mdist -------------------------------------------------------------------------------- /plugins/plugin-client-default/.npmignore: -------------------------------------------------------------------------------- 1 | build 2 | src 3 | tests 4 | dist/test 5 | tsconfig* 6 | /*.tgz 7 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to this project will be documented in this file. 4 | See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. 5 | 6 | # [8.12.0](https://github.com/IBM/kui/compare/v4.5.0...v8.12.0) (2020-08-20) 7 | 8 | ### Bug Fixes 9 | 10 | - **plugins/plugin-client-default:** default client should not use Search component inBrowser ([afb6b48](https://github.com/IBM/kui/commit/afb6b48)), closes [#5074](https://github.com/IBM/kui/issues/5074) 11 | - about should show breadcrumbs ([99dc401](https://github.com/IBM/kui/commit/99dc401)), closes [#4730](https://github.com/IBM/kui/issues/4730) 12 | - Card component does not render well in dark themes ([d96def0](https://github.com/IBM/kui/commit/d96def0)), closes [#4996](https://github.com/IBM/kui/issues/4996) 13 | - eliminate complex nesting of NavResponse model ([e849ae7](https://github.com/IBM/kui/commit/e849ae7)), closes [#4205](https://github.com/IBM/kui/issues/4205) 14 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 15 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 16 | - move default loadingDone icon into plugin-client-common ([39994bc](https://github.com/IBM/kui/commit/39994bc)), closes [#5026](https://github.com/IBM/kui/issues/5026) 17 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 18 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 19 | - reduce custom CSS rules for table UI ([56f69cb](https://github.com/IBM/kui/commit/56f69cb)), closes [#5024](https://github.com/IBM/kui/issues/5024) 20 | - **plugins/plugin-bash-like:** add back configurable shell ([b7fda6c](https://github.com/IBM/kui/commit/b7fda6c)) 21 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 22 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 23 | - **plugins/plugin-client-default:** disable cluster utilization status stripe widget ([353cbfd](https://github.com/IBM/kui/commit/353cbfd)), closes [#4613](https://github.com/IBM/kui/issues/4613) 24 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 25 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 26 | - remove config.d/version.json in favor of using the version field from package.json ([1e296c7](https://github.com/IBM/kui/commit/1e296c7)), closes [#4300](https://github.com/IBM/kui/issues/4300) 27 | - remove invalid bodyCss fields in config.d/style.json ([99a92ab](https://github.com/IBM/kui/commit/99a92ab)), closes [#4307](https://github.com/IBM/kui/issues/4307) 28 | - remove limits.json from client config.d ([3ae2201](https://github.com/IBM/kui/commit/3ae2201)), closes [#4292](https://github.com/IBM/kui/issues/4292) 29 | - remove unsed fields from client.json ([a55b1f1](https://github.com/IBM/kui/commit/a55b1f1)), closes [#4296](https://github.com/IBM/kui/issues/4296) 30 | - remove unused fields from config.d/style.json ([ab7278a](https://github.com/IBM/kui/commit/ab7278a)), closes [#4298](https://github.com/IBM/kui/issues/4298) 31 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 32 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 33 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 34 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 35 | - **plugins/plugin-client-default:** remove unused fields from name.json ([6f99959](https://github.com/IBM/kui/commit/6f99959)), closes [#4294](https://github.com/IBM/kui/issues/4294) 36 | - **plugins/plugin-client-default:** remove unused tables.json ([56082b9](https://github.com/IBM/kui/commit/56082b9)), closes [#4290](https://github.com/IBM/kui/issues/4290) 37 | - simplify handling of opengraph META ([ff3c0de](https://github.com/IBM/kui/commit/ff3c0de)), closes [#4288](https://github.com/IBM/kui/issues/4288) 38 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 39 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 40 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 41 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 42 | 43 | ### chore 44 | 45 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 46 | 47 | ### Features 48 | 49 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 50 | - add a command to return the Card Component in Terminal ([d8d13ab](https://github.com/IBM/kui/commit/d8d13ab)), closes [#4973](https://github.com/IBM/kui/issues/4973) 51 | - add capability to show welcome widget to new users in Terminal ([0c33e6e](https://github.com/IBM/kui/commit/0c33e6e)), closes [#4990](https://github.com/IBM/kui/issues/4990) [#5007](https://github.com/IBM/kui/issues/5007) 52 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 53 | - add Patternfly Breadcrumb support ([91e0504](https://github.com/IBM/kui/commit/91e0504)), closes [#4381](https://github.com/IBM/kui/issues/4381) 54 | - allow clients to modify the session lifecycle UI by providing custom strings ([3c78fd3](https://github.com/IBM/kui/commit/3c78fd3)), closes [#5019](https://github.com/IBM/kui/issues/5019) 55 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 56 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 57 | - MiniSplits ([70b8441](https://github.com/IBM/kui/commit/70b8441)), closes [#5112](https://github.com/IBM/kui/issues/5112) 58 | - shift Block UI to use a Notebook style of presentation ([dc0ee4b](https://github.com/IBM/kui/commit/dc0ee4b)), closes [#5258](https://github.com/IBM/kui/issues/5258) 59 | - **plugins/plugin-client-common:** use Cards to wrap kube tables and grids ([6698013](https://github.com/IBM/kui/commit/6698013)), closes [#5032](https://github.com/IBM/kui/issues/5032) 60 | - allow users to provide custom views for session init ([1f35894](https://github.com/IBM/kui/commit/1f35894)), closes [#4596](https://github.com/IBM/kui/issues/4596) 61 | - allow themes to dictate Kui client properties ([2b41873](https://github.com/IBM/kui/commit/2b41873)), closes [#4409](https://github.com/IBM/kui/issues/4409) 62 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 63 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 64 | - Kui client should support self-bootstrapping of Kui ([3bbf8e8](https://github.com/IBM/kui/commit/3bbf8e8)), closes [#4277](https://github.com/IBM/kui/issues/4277) 65 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 66 | - pin a watchable terminal response in a split pane ([662f413](https://github.com/IBM/kui/commit/662f413)), closes [#4865](https://github.com/IBM/kui/issues/4865) [#4573](https://github.com/IBM/kui/issues/4573) [#4885](https://github.com/IBM/kui/issues/4885) [#4894](https://github.com/IBM/kui/issues/4894) 67 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 68 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 69 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 70 | - simplified co-hosting of client and proxy in a container ([00af4b4](https://github.com/IBM/kui/commit/00af4b4)), closes [#4213](https://github.com/IBM/kui/issues/4213) 71 | - split screen Terminal ([3a6b422](https://github.com/IBM/kui/commit/3a6b422)), closes [#4814](https://github.com/IBM/kui/issues/4814) [#4821](https://github.com/IBM/kui/issues/4821) 72 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 73 | - update checker ([a7908d2](https://github.com/IBM/kui/commit/a7908d2)), closes [#4537](https://github.com/IBM/kui/issues/4537) 74 | - Update default loadingDone to use Card component ([e1b4c61](https://github.com/IBM/kui/commit/e1b4c61)), closes [#4986](https://github.com/IBM/kui/issues/4986) 75 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 76 | 77 | ### BREAKING CHANGES 78 | 79 | - this PR removes plugins/plugin-client-default 80 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 81 | 82 | # [8.11.0](https://github.com/IBM/kui/compare/v4.5.0...v8.11.0) (2020-07-21) 83 | 84 | ### Bug Fixes 85 | 86 | - **plugins/plugin-client-default:** default client should not use Search component inBrowser ([afb6b48](https://github.com/IBM/kui/commit/afb6b48)), closes [#5074](https://github.com/IBM/kui/issues/5074) 87 | - about should show breadcrumbs ([99dc401](https://github.com/IBM/kui/commit/99dc401)), closes [#4730](https://github.com/IBM/kui/issues/4730) 88 | - Card component does not render well in dark themes ([d96def0](https://github.com/IBM/kui/commit/d96def0)), closes [#4996](https://github.com/IBM/kui/issues/4996) 89 | - eliminate complex nesting of NavResponse model ([e849ae7](https://github.com/IBM/kui/commit/e849ae7)), closes [#4205](https://github.com/IBM/kui/issues/4205) 90 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 91 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 92 | - move default loadingDone icon into plugin-client-common ([39994bc](https://github.com/IBM/kui/commit/39994bc)), closes [#5026](https://github.com/IBM/kui/issues/5026) 93 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 94 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 95 | - reduce custom CSS rules for table UI ([56f69cb](https://github.com/IBM/kui/commit/56f69cb)), closes [#5024](https://github.com/IBM/kui/issues/5024) 96 | - **plugins/plugin-bash-like:** add back configurable shell ([b7fda6c](https://github.com/IBM/kui/commit/b7fda6c)) 97 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 98 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 99 | - **plugins/plugin-client-default:** disable cluster utilization status stripe widget ([353cbfd](https://github.com/IBM/kui/commit/353cbfd)), closes [#4613](https://github.com/IBM/kui/issues/4613) 100 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 101 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 102 | - remove config.d/version.json in favor of using the version field from package.json ([1e296c7](https://github.com/IBM/kui/commit/1e296c7)), closes [#4300](https://github.com/IBM/kui/issues/4300) 103 | - remove invalid bodyCss fields in config.d/style.json ([99a92ab](https://github.com/IBM/kui/commit/99a92ab)), closes [#4307](https://github.com/IBM/kui/issues/4307) 104 | - remove limits.json from client config.d ([3ae2201](https://github.com/IBM/kui/commit/3ae2201)), closes [#4292](https://github.com/IBM/kui/issues/4292) 105 | - remove unsed fields from client.json ([a55b1f1](https://github.com/IBM/kui/commit/a55b1f1)), closes [#4296](https://github.com/IBM/kui/issues/4296) 106 | - remove unused fields from config.d/style.json ([ab7278a](https://github.com/IBM/kui/commit/ab7278a)), closes [#4298](https://github.com/IBM/kui/issues/4298) 107 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 108 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 109 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 110 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 111 | - **plugins/plugin-client-default:** remove unused fields from name.json ([6f99959](https://github.com/IBM/kui/commit/6f99959)), closes [#4294](https://github.com/IBM/kui/issues/4294) 112 | - **plugins/plugin-client-default:** remove unused tables.json ([56082b9](https://github.com/IBM/kui/commit/56082b9)), closes [#4290](https://github.com/IBM/kui/issues/4290) 113 | - simplify handling of opengraph META ([ff3c0de](https://github.com/IBM/kui/commit/ff3c0de)), closes [#4288](https://github.com/IBM/kui/issues/4288) 114 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 115 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 116 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 117 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 118 | 119 | ### chore 120 | 121 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 122 | 123 | ### Features 124 | 125 | - MiniSplits ([70b8441](https://github.com/IBM/kui/commit/70b8441)), closes [#5112](https://github.com/IBM/kui/issues/5112) 126 | - **plugins/plugin-client-common:** use Cards to wrap kube tables and grids ([6698013](https://github.com/IBM/kui/commit/6698013)), closes [#5032](https://github.com/IBM/kui/issues/5032) 127 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 128 | - add a command to return the Card Component in Terminal ([d8d13ab](https://github.com/IBM/kui/commit/d8d13ab)), closes [#4973](https://github.com/IBM/kui/issues/4973) 129 | - add capability to show welcome widget to new users in Terminal ([0c33e6e](https://github.com/IBM/kui/commit/0c33e6e)), closes [#4990](https://github.com/IBM/kui/issues/4990) [#5007](https://github.com/IBM/kui/issues/5007) 130 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 131 | - add Patternfly Breadcrumb support ([91e0504](https://github.com/IBM/kui/commit/91e0504)), closes [#4381](https://github.com/IBM/kui/issues/4381) 132 | - allow users to provide custom views for session init ([1f35894](https://github.com/IBM/kui/commit/1f35894)), closes [#4596](https://github.com/IBM/kui/issues/4596) 133 | - allow clients to modify the session lifecycle UI by providing custom strings ([3c78fd3](https://github.com/IBM/kui/commit/3c78fd3)), closes [#5019](https://github.com/IBM/kui/issues/5019) 134 | - allow themes to dictate Kui client properties ([2b41873](https://github.com/IBM/kui/commit/2b41873)), closes [#4409](https://github.com/IBM/kui/issues/4409) 135 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 136 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 137 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 138 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 139 | - Kui client should support self-bootstrapping of Kui ([3bbf8e8](https://github.com/IBM/kui/commit/3bbf8e8)), closes [#4277](https://github.com/IBM/kui/issues/4277) 140 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 141 | - pin a watchable terminal response in a split pane ([662f413](https://github.com/IBM/kui/commit/662f413)), closes [#4865](https://github.com/IBM/kui/issues/4865) [#4573](https://github.com/IBM/kui/issues/4573) [#4885](https://github.com/IBM/kui/issues/4885) [#4894](https://github.com/IBM/kui/issues/4894) 142 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 143 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 144 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 145 | - simplified co-hosting of client and proxy in a container ([00af4b4](https://github.com/IBM/kui/commit/00af4b4)), closes [#4213](https://github.com/IBM/kui/issues/4213) 146 | - split screen Terminal ([3a6b422](https://github.com/IBM/kui/commit/3a6b422)), closes [#4814](https://github.com/IBM/kui/issues/4814) [#4821](https://github.com/IBM/kui/issues/4821) 147 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 148 | - update checker ([a7908d2](https://github.com/IBM/kui/commit/a7908d2)), closes [#4537](https://github.com/IBM/kui/issues/4537) 149 | - Update default loadingDone to use Card component ([e1b4c61](https://github.com/IBM/kui/commit/e1b4c61)), closes [#4986](https://github.com/IBM/kui/issues/4986) 150 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 151 | 152 | ### BREAKING CHANGES 153 | 154 | - this PR removes plugins/plugin-client-default 155 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 156 | 157 | # [8.10.0](https://github.com/IBM/kui/compare/v4.5.0...v8.10.0) (2020-06-17) 158 | 159 | ### Bug Fixes 160 | 161 | - about should show breadcrumbs ([99dc401](https://github.com/IBM/kui/commit/99dc401)), closes [#4730](https://github.com/IBM/kui/issues/4730) 162 | - **plugins/plugin-bash-like:** add back configurable shell ([b7fda6c](https://github.com/IBM/kui/commit/b7fda6c)) 163 | - **plugins/plugin-client-default:** disable cluster utilization status stripe widget ([353cbfd](https://github.com/IBM/kui/commit/353cbfd)), closes [#4613](https://github.com/IBM/kui/issues/4613) 164 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 165 | - eliminate complex nesting of NavResponse model ([e849ae7](https://github.com/IBM/kui/commit/e849ae7)), closes [#4205](https://github.com/IBM/kui/issues/4205) 166 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 167 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 168 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 169 | - remove config.d/version.json in favor of using the version field from package.json ([1e296c7](https://github.com/IBM/kui/commit/1e296c7)), closes [#4300](https://github.com/IBM/kui/issues/4300) 170 | - remove invalid bodyCss fields in config.d/style.json ([99a92ab](https://github.com/IBM/kui/commit/99a92ab)), closes [#4307](https://github.com/IBM/kui/issues/4307) 171 | - remove limits.json from client config.d ([3ae2201](https://github.com/IBM/kui/commit/3ae2201)), closes [#4292](https://github.com/IBM/kui/issues/4292) 172 | - remove unsed fields from client.json ([a55b1f1](https://github.com/IBM/kui/commit/a55b1f1)), closes [#4296](https://github.com/IBM/kui/issues/4296) 173 | - remove unused fields from config.d/style.json ([ab7278a](https://github.com/IBM/kui/commit/ab7278a)), closes [#4298](https://github.com/IBM/kui/issues/4298) 174 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 175 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 176 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 177 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 178 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 179 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 180 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 181 | - **plugins/plugin-client-default:** remove unused fields from name.json ([6f99959](https://github.com/IBM/kui/commit/6f99959)), closes [#4294](https://github.com/IBM/kui/issues/4294) 182 | - **plugins/plugin-client-default:** remove unused tables.json ([56082b9](https://github.com/IBM/kui/commit/56082b9)), closes [#4290](https://github.com/IBM/kui/issues/4290) 183 | - simplify handling of opengraph META ([ff3c0de](https://github.com/IBM/kui/commit/ff3c0de)), closes [#4288](https://github.com/IBM/kui/issues/4288) 184 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 185 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 186 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 187 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 188 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 189 | 190 | ### chore 191 | 192 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 193 | 194 | ### Features 195 | 196 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 197 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 198 | - add Patternfly Breadcrumb support ([91e0504](https://github.com/IBM/kui/commit/91e0504)), closes [#4381](https://github.com/IBM/kui/issues/4381) 199 | - allow users to provide custom views for session init ([1f35894](https://github.com/IBM/kui/commit/1f35894)), closes [#4596](https://github.com/IBM/kui/issues/4596) 200 | - allow themes to dictate Kui client properties ([2b41873](https://github.com/IBM/kui/commit/2b41873)), closes [#4409](https://github.com/IBM/kui/issues/4409) 201 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 202 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 203 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 204 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 205 | - Kui client should support self-bootstrapping of Kui ([3bbf8e8](https://github.com/IBM/kui/commit/3bbf8e8)), closes [#4277](https://github.com/IBM/kui/issues/4277) 206 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 207 | - pin a watchable terminal response in a split pane ([662f413](https://github.com/IBM/kui/commit/662f413)), closes [#4865](https://github.com/IBM/kui/issues/4865) [#4573](https://github.com/IBM/kui/issues/4573) [#4885](https://github.com/IBM/kui/issues/4885) [#4894](https://github.com/IBM/kui/issues/4894) 208 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 209 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 210 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 211 | - simplified co-hosting of client and proxy in a container ([00af4b4](https://github.com/IBM/kui/commit/00af4b4)), closes [#4213](https://github.com/IBM/kui/issues/4213) 212 | - split screen Terminal ([3a6b422](https://github.com/IBM/kui/commit/3a6b422)), closes [#4814](https://github.com/IBM/kui/issues/4814) [#4821](https://github.com/IBM/kui/issues/4821) 213 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 214 | - update checker ([a7908d2](https://github.com/IBM/kui/commit/a7908d2)), closes [#4537](https://github.com/IBM/kui/issues/4537) 215 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 216 | 217 | ### BREAKING CHANGES 218 | 219 | - this PR removes plugins/plugin-client-default 220 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 221 | 222 | # [8.9.0](https://github.com/IBM/kui/compare/v4.5.0...v8.9.0) (2020-06-09) 223 | 224 | ### Bug Fixes 225 | 226 | - about should show breadcrumbs ([99dc401](https://github.com/IBM/kui/commit/99dc401)), closes [#4730](https://github.com/IBM/kui/issues/4730) 227 | - **plugins/plugin-bash-like:** add back configurable shell ([b7fda6c](https://github.com/IBM/kui/commit/b7fda6c)) 228 | - **plugins/plugin-client-default:** disable cluster utilization status stripe widget ([353cbfd](https://github.com/IBM/kui/commit/353cbfd)), closes [#4613](https://github.com/IBM/kui/issues/4613) 229 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 230 | - eliminate complex nesting of NavResponse model ([e849ae7](https://github.com/IBM/kui/commit/e849ae7)), closes [#4205](https://github.com/IBM/kui/issues/4205) 231 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 232 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 233 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 234 | - remove config.d/version.json in favor of using the version field from package.json ([1e296c7](https://github.com/IBM/kui/commit/1e296c7)), closes [#4300](https://github.com/IBM/kui/issues/4300) 235 | - remove invalid bodyCss fields in config.d/style.json ([99a92ab](https://github.com/IBM/kui/commit/99a92ab)), closes [#4307](https://github.com/IBM/kui/issues/4307) 236 | - remove limits.json from client config.d ([3ae2201](https://github.com/IBM/kui/commit/3ae2201)), closes [#4292](https://github.com/IBM/kui/issues/4292) 237 | - remove unsed fields from client.json ([a55b1f1](https://github.com/IBM/kui/commit/a55b1f1)), closes [#4296](https://github.com/IBM/kui/issues/4296) 238 | - remove unused fields from config.d/style.json ([ab7278a](https://github.com/IBM/kui/commit/ab7278a)), closes [#4298](https://github.com/IBM/kui/issues/4298) 239 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 240 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 241 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 242 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 243 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 244 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 245 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 246 | - **plugins/plugin-client-default:** remove unused fields from name.json ([6f99959](https://github.com/IBM/kui/commit/6f99959)), closes [#4294](https://github.com/IBM/kui/issues/4294) 247 | - **plugins/plugin-client-default:** remove unused tables.json ([56082b9](https://github.com/IBM/kui/commit/56082b9)), closes [#4290](https://github.com/IBM/kui/issues/4290) 248 | - simplify handling of opengraph META ([ff3c0de](https://github.com/IBM/kui/commit/ff3c0de)), closes [#4288](https://github.com/IBM/kui/issues/4288) 249 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 250 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 251 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 252 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 253 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 254 | 255 | ### chore 256 | 257 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 258 | 259 | ### Features 260 | 261 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 262 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 263 | - add Patternfly Breadcrumb support ([91e0504](https://github.com/IBM/kui/commit/91e0504)), closes [#4381](https://github.com/IBM/kui/issues/4381) 264 | - allow users to provide custom views for session init ([1f35894](https://github.com/IBM/kui/commit/1f35894)), closes [#4596](https://github.com/IBM/kui/issues/4596) 265 | - allow themes to dictate Kui client properties ([2b41873](https://github.com/IBM/kui/commit/2b41873)), closes [#4409](https://github.com/IBM/kui/issues/4409) 266 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 267 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 268 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 269 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 270 | - Kui client should support self-bootstrapping of Kui ([3bbf8e8](https://github.com/IBM/kui/commit/3bbf8e8)), closes [#4277](https://github.com/IBM/kui/issues/4277) 271 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 272 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 273 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 274 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 275 | - simplified co-hosting of client and proxy in a container ([00af4b4](https://github.com/IBM/kui/commit/00af4b4)), closes [#4213](https://github.com/IBM/kui/issues/4213) 276 | - split screen Terminal ([3a6b422](https://github.com/IBM/kui/commit/3a6b422)), closes [#4814](https://github.com/IBM/kui/issues/4814) [#4821](https://github.com/IBM/kui/issues/4821) 277 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 278 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 279 | 280 | ### BREAKING CHANGES 281 | 282 | - this PR removes plugins/plugin-client-default 283 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 284 | 285 | # [8.7.0](https://github.com/IBM/kui/compare/v4.5.0...v8.7.0) (2020-05-08) 286 | 287 | ### Bug Fixes 288 | 289 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 290 | - eliminate complex nesting of NavResponse model ([e849ae7](https://github.com/IBM/kui/commit/e849ae7)), closes [#4205](https://github.com/IBM/kui/issues/4205) 291 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 292 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 293 | - remove config.d/version.json in favor of using the version field from package.json ([1e296c7](https://github.com/IBM/kui/commit/1e296c7)), closes [#4300](https://github.com/IBM/kui/issues/4300) 294 | - remove invalid bodyCss fields in config.d/style.json ([99a92ab](https://github.com/IBM/kui/commit/99a92ab)), closes [#4307](https://github.com/IBM/kui/issues/4307) 295 | - remove limits.json from client config.d ([3ae2201](https://github.com/IBM/kui/commit/3ae2201)), closes [#4292](https://github.com/IBM/kui/issues/4292) 296 | - remove unsed fields from client.json ([a55b1f1](https://github.com/IBM/kui/commit/a55b1f1)), closes [#4296](https://github.com/IBM/kui/issues/4296) 297 | - remove unused fields from config.d/style.json ([ab7278a](https://github.com/IBM/kui/commit/ab7278a)), closes [#4298](https://github.com/IBM/kui/issues/4298) 298 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 299 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 300 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 301 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 302 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 303 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 304 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 305 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 306 | - **plugins/plugin-client-default:** remove unused fields from name.json ([6f99959](https://github.com/IBM/kui/commit/6f99959)), closes [#4294](https://github.com/IBM/kui/issues/4294) 307 | - **plugins/plugin-client-default:** remove unused tables.json ([56082b9](https://github.com/IBM/kui/commit/56082b9)), closes [#4290](https://github.com/IBM/kui/issues/4290) 308 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 309 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 310 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 311 | - simplify handling of opengraph META ([ff3c0de](https://github.com/IBM/kui/commit/ff3c0de)), closes [#4288](https://github.com/IBM/kui/issues/4288) 312 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 313 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 314 | 315 | ### chore 316 | 317 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 318 | 319 | ### Features 320 | 321 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 322 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 323 | - add Patternfly Breadcrumb support ([91e0504](https://github.com/IBM/kui/commit/91e0504)), closes [#4381](https://github.com/IBM/kui/issues/4381) 324 | - allow themes to dictate Kui client properties ([2b41873](https://github.com/IBM/kui/commit/2b41873)), closes [#4409](https://github.com/IBM/kui/issues/4409) 325 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 326 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 327 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 328 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 329 | - Kui client should support self-bootstrapping of Kui ([3bbf8e8](https://github.com/IBM/kui/commit/3bbf8e8)), closes [#4277](https://github.com/IBM/kui/issues/4277) 330 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 331 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 332 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 333 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 334 | - simplified co-hosting of client and proxy in a container ([00af4b4](https://github.com/IBM/kui/commit/00af4b4)), closes [#4213](https://github.com/IBM/kui/issues/4213) 335 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 336 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 337 | 338 | ### BREAKING CHANGES 339 | 340 | - this PR removes plugins/plugin-client-default 341 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 342 | 343 | ## [8.6.1](https://github.com/IBM/kui/compare/v4.5.0...v8.6.1) (2020-04-25) 344 | 345 | ### Bug Fixes 346 | 347 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 348 | - eliminate complex nesting of NavResponse model ([e849ae7](https://github.com/IBM/kui/commit/e849ae7)), closes [#4205](https://github.com/IBM/kui/issues/4205) 349 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 350 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 351 | - remove config.d/version.json in favor of using the version field from package.json ([1e296c7](https://github.com/IBM/kui/commit/1e296c7)), closes [#4300](https://github.com/IBM/kui/issues/4300) 352 | - remove invalid bodyCss fields in config.d/style.json ([99a92ab](https://github.com/IBM/kui/commit/99a92ab)), closes [#4307](https://github.com/IBM/kui/issues/4307) 353 | - remove limits.json from client config.d ([3ae2201](https://github.com/IBM/kui/commit/3ae2201)), closes [#4292](https://github.com/IBM/kui/issues/4292) 354 | - remove unsed fields from client.json ([a55b1f1](https://github.com/IBM/kui/commit/a55b1f1)), closes [#4296](https://github.com/IBM/kui/issues/4296) 355 | - remove unused fields from config.d/style.json ([ab7278a](https://github.com/IBM/kui/commit/ab7278a)), closes [#4298](https://github.com/IBM/kui/issues/4298) 356 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 357 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 358 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 359 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 360 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 361 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 362 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 363 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 364 | - **plugins/plugin-client-default:** remove unused fields from name.json ([6f99959](https://github.com/IBM/kui/commit/6f99959)), closes [#4294](https://github.com/IBM/kui/issues/4294) 365 | - **plugins/plugin-client-default:** remove unused tables.json ([56082b9](https://github.com/IBM/kui/commit/56082b9)), closes [#4290](https://github.com/IBM/kui/issues/4290) 366 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 367 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 368 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 369 | - simplify handling of opengraph META ([ff3c0de](https://github.com/IBM/kui/commit/ff3c0de)), closes [#4288](https://github.com/IBM/kui/issues/4288) 370 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 371 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 372 | 373 | ### chore 374 | 375 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 376 | 377 | ### Features 378 | 379 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 380 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 381 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 382 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 383 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 384 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 385 | - Kui client should support self-bootstrapping of Kui ([3bbf8e8](https://github.com/IBM/kui/commit/3bbf8e8)), closes [#4277](https://github.com/IBM/kui/issues/4277) 386 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 387 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 388 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 389 | - simplified co-hosting of client and proxy in a container ([00af4b4](https://github.com/IBM/kui/commit/00af4b4)), closes [#4213](https://github.com/IBM/kui/issues/4213) 390 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 391 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 392 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 393 | 394 | ### BREAKING CHANGES 395 | 396 | - this PR removes plugins/plugin-client-default 397 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 398 | 399 | # [8.6.0](https://github.com/IBM/kui/compare/v4.5.0...v8.6.0) (2020-04-23) 400 | 401 | ### Bug Fixes 402 | 403 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 404 | - eliminate complex nesting of NavResponse model ([e849ae7](https://github.com/IBM/kui/commit/e849ae7)), closes [#4205](https://github.com/IBM/kui/issues/4205) 405 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 406 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 407 | - remove config.d/version.json in favor of using the version field from package.json ([1e296c7](https://github.com/IBM/kui/commit/1e296c7)), closes [#4300](https://github.com/IBM/kui/issues/4300) 408 | - remove invalid bodyCss fields in config.d/style.json ([99a92ab](https://github.com/IBM/kui/commit/99a92ab)), closes [#4307](https://github.com/IBM/kui/issues/4307) 409 | - remove limits.json from client config.d ([3ae2201](https://github.com/IBM/kui/commit/3ae2201)), closes [#4292](https://github.com/IBM/kui/issues/4292) 410 | - remove unsed fields from client.json ([a55b1f1](https://github.com/IBM/kui/commit/a55b1f1)), closes [#4296](https://github.com/IBM/kui/issues/4296) 411 | - remove unused fields from config.d/style.json ([ab7278a](https://github.com/IBM/kui/commit/ab7278a)), closes [#4298](https://github.com/IBM/kui/issues/4298) 412 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 413 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 414 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 415 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 416 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 417 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 418 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 419 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 420 | - **plugins/plugin-client-default:** remove unused fields from name.json ([6f99959](https://github.com/IBM/kui/commit/6f99959)), closes [#4294](https://github.com/IBM/kui/issues/4294) 421 | - **plugins/plugin-client-default:** remove unused tables.json ([56082b9](https://github.com/IBM/kui/commit/56082b9)), closes [#4290](https://github.com/IBM/kui/issues/4290) 422 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 423 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 424 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 425 | - simplify handling of opengraph META ([ff3c0de](https://github.com/IBM/kui/commit/ff3c0de)), closes [#4288](https://github.com/IBM/kui/issues/4288) 426 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 427 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 428 | 429 | ### chore 430 | 431 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 432 | 433 | ### Features 434 | 435 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 436 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 437 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 438 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 439 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 440 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 441 | - Kui client should support self-bootstrapping of Kui ([3bbf8e8](https://github.com/IBM/kui/commit/3bbf8e8)), closes [#4277](https://github.com/IBM/kui/issues/4277) 442 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 443 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 444 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 445 | - simplified co-hosting of client and proxy in a container ([00af4b4](https://github.com/IBM/kui/commit/00af4b4)), closes [#4213](https://github.com/IBM/kui/issues/4213) 446 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 447 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 448 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 449 | 450 | ### BREAKING CHANGES 451 | 452 | - this PR removes plugins/plugin-client-default 453 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 454 | 455 | # [8.5.0](https://github.com/IBM/kui/compare/v4.5.0...v8.5.0) (2020-04-19) 456 | 457 | ### Bug Fixes 458 | 459 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 460 | - eliminate complex nesting of NavResponse model ([e849ae7](https://github.com/IBM/kui/commit/e849ae7)), closes [#4205](https://github.com/IBM/kui/issues/4205) 461 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 462 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 463 | - remove config.d/version.json in favor of using the version field from package.json ([1e296c7](https://github.com/IBM/kui/commit/1e296c7)), closes [#4300](https://github.com/IBM/kui/issues/4300) 464 | - remove invalid bodyCss fields in config.d/style.json ([99a92ab](https://github.com/IBM/kui/commit/99a92ab)), closes [#4307](https://github.com/IBM/kui/issues/4307) 465 | - remove limits.json from client config.d ([3ae2201](https://github.com/IBM/kui/commit/3ae2201)), closes [#4292](https://github.com/IBM/kui/issues/4292) 466 | - remove unsed fields from client.json ([a55b1f1](https://github.com/IBM/kui/commit/a55b1f1)), closes [#4296](https://github.com/IBM/kui/issues/4296) 467 | - remove unused fields from config.d/style.json ([ab7278a](https://github.com/IBM/kui/commit/ab7278a)), closes [#4298](https://github.com/IBM/kui/issues/4298) 468 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 469 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 470 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 471 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 472 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 473 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 474 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 475 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 476 | - **plugins/plugin-client-default:** remove unused fields from name.json ([6f99959](https://github.com/IBM/kui/commit/6f99959)), closes [#4294](https://github.com/IBM/kui/issues/4294) 477 | - **plugins/plugin-client-default:** remove unused tables.json ([56082b9](https://github.com/IBM/kui/commit/56082b9)), closes [#4290](https://github.com/IBM/kui/issues/4290) 478 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 479 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 480 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 481 | - simplify handling of opengraph META ([ff3c0de](https://github.com/IBM/kui/commit/ff3c0de)), closes [#4288](https://github.com/IBM/kui/issues/4288) 482 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 483 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 484 | 485 | ### chore 486 | 487 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 488 | 489 | ### Features 490 | 491 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 492 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 493 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 494 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 495 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 496 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 497 | - Kui client should support self-bootstrapping of Kui ([3bbf8e8](https://github.com/IBM/kui/commit/3bbf8e8)), closes [#4277](https://github.com/IBM/kui/issues/4277) 498 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 499 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 500 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 501 | - simplified co-hosting of client and proxy in a container ([00af4b4](https://github.com/IBM/kui/commit/00af4b4)), closes [#4213](https://github.com/IBM/kui/issues/4213) 502 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 503 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 504 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 505 | 506 | ### BREAKING CHANGES 507 | 508 | - this PR removes plugins/plugin-client-default 509 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 510 | 511 | ## [8.4.2](https://github.com/IBM/kui/compare/v4.5.0...v8.4.2) (2020-04-10) 512 | 513 | ### Bug Fixes 514 | 515 | - eliminate complex nesting of NavResponse model ([e849ae7](https://github.com/IBM/kui/commit/e849ae7)), closes [#4205](https://github.com/IBM/kui/issues/4205) 516 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 517 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 518 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 519 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 520 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 521 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 522 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 523 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 524 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 525 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 526 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 527 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 528 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 529 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 530 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 531 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 532 | 533 | ### chore 534 | 535 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 536 | 537 | ### Features 538 | 539 | - simplified co-hosting of client and proxy in a container ([00af4b4](https://github.com/IBM/kui/commit/00af4b4)), closes [#4213](https://github.com/IBM/kui/issues/4213) 540 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 541 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 542 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 543 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 544 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 545 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 546 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 547 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 548 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 549 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 550 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 551 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 552 | 553 | ### BREAKING CHANGES 554 | 555 | - this PR removes plugins/plugin-client-default 556 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 557 | 558 | ## [8.4.1](https://github.com/IBM/kui/compare/v4.5.0...v8.4.1) (2020-04-10) 559 | 560 | ### Bug Fixes 561 | 562 | - eliminate complex nesting of NavResponse model ([e849ae7](https://github.com/IBM/kui/commit/e849ae7)), closes [#4205](https://github.com/IBM/kui/issues/4205) 563 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 564 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 565 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 566 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 567 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 568 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 569 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 570 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 571 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 572 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 573 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 574 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 575 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 576 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 577 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 578 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 579 | 580 | ### chore 581 | 582 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 583 | 584 | ### Features 585 | 586 | - simplified co-hosting of client and proxy in a container ([00af4b4](https://github.com/IBM/kui/commit/00af4b4)), closes [#4213](https://github.com/IBM/kui/issues/4213) 587 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 588 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 589 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 590 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 591 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 592 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 593 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 594 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 595 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 596 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 597 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 598 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 599 | 600 | ### BREAKING CHANGES 601 | 602 | - this PR removes plugins/plugin-client-default 603 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 604 | 605 | # [8.4.0](https://github.com/IBM/kui/compare/v4.5.0...v8.4.0) (2020-04-10) 606 | 607 | ### Bug Fixes 608 | 609 | - eliminate complex nesting of NavResponse model ([e849ae7](https://github.com/IBM/kui/commit/e849ae7)), closes [#4205](https://github.com/IBM/kui/issues/4205) 610 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 611 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 612 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 613 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 614 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 615 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 616 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 617 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 618 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 619 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 620 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 621 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 622 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 623 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 624 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 625 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 626 | 627 | ### chore 628 | 629 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 630 | 631 | ### Features 632 | 633 | - simplified co-hosting of client and proxy in a container ([00af4b4](https://github.com/IBM/kui/commit/00af4b4)), closes [#4213](https://github.com/IBM/kui/issues/4213) 634 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 635 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 636 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 637 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 638 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 639 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 640 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 641 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 642 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 643 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 644 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 645 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 646 | 647 | ### BREAKING CHANGES 648 | 649 | - this PR removes plugins/plugin-client-default 650 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 651 | 652 | # [8.1.0](https://github.com/IBM/kui/compare/v4.5.0...v8.1.0) (2020-04-04) 653 | 654 | ### Bug Fixes 655 | 656 | - improve handling of narrower windows ([7a32591](https://github.com/IBM/kui/commit/7a32591)), closes [#4181](https://github.com/IBM/kui/issues/4181) 657 | - **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687) 658 | - **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839) 659 | - **plugins/plugin-client-common:** improve Screenshot UI ([bc2102a](https://github.com/IBM/kui/commit/bc2102a)), closes [#3734](https://github.com/IBM/kui/issues/3734) 660 | - **plugins/plugin-client-default:** add missing newline in about text ([4fcc9d7](https://github.com/IBM/kui/commit/4fcc9d7)), closes [#4168](https://github.com/IBM/kui/issues/4168) 661 | - **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895) 662 | - **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908) 663 | - **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912) 664 | - **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123) 665 | - broken ico icons ([d018404](https://github.com/IBM/kui/commit/d018404)), closes [#3947](https://github.com/IBM/kui/issues/3947) 666 | - eliminate the the use of symlink of adding css files to build stage ([dad4987](https://github.com/IBM/kui/commit/dad4987)), closes [#3567](https://github.com/IBM/kui/issues/3567) 667 | - plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846) 668 | - plugin-client-default should have dependency of plugin-client-common ([41fe2f5](https://github.com/IBM/kui/commit/41fe2f5)), closes [#3583](https://github.com/IBM/kui/issues/3583) 669 | - Popup client should place InputStripe inside of StatusStripe ([a09138d](https://github.com/IBM/kui/commit/a09138d)), closes [#3949](https://github.com/IBM/kui/issues/3949) 670 | - **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910) 671 | - some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813) 672 | 673 | ### chore 674 | 675 | - kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974) 676 | 677 | ### Features 678 | 679 | - switch to Carbon Gray 10 as default theme in plugin-default-client ([c56e2f5](https://github.com/IBM/kui/commit/c56e2f5)), closes [#4101](https://github.com/IBM/kui/issues/4101) 680 | - **plugins/plugin-client-default:** enhance about.json model with kube-specific entries ([0ae86ef](https://github.com/IBM/kui/commit/0ae86ef)), closes [#4020](https://github.com/IBM/kui/issues/4020) 681 | - a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659) 682 | - add history to sidecar views ([b1e5543](https://github.com/IBM/kui/commit/b1e5543)), closes [#3960](https://github.com/IBM/kui/issues/3960) 683 | - bottom input ([c6d2af0](https://github.com/IBM/kui/commit/c6d2af0)), closes [#3729](https://github.com/IBM/kui/issues/3729) 684 | - carbon tables ([237e9a5](https://github.com/IBM/kui/commit/237e9a5)), closes [#3632](https://github.com/IBM/kui/issues/3632) 685 | - for popup windows, show command as placeholder text in input stripe ([a897042](https://github.com/IBM/kui/commit/a897042)), closes [#3899](https://github.com/IBM/kui/issues/3899) 686 | - introduce plugin-client-default meant for hosting a client definition ([688a991](https://github.com/IBM/kui/commit/688a991)), closes [#3463](https://github.com/IBM/kui/issues/3463) 687 | - left-navigation sidecar ([f88329e](https://github.com/IBM/kui/commit/f88329e)), closes [#3635](https://github.com/IBM/kui/issues/3635) 688 | - Popup client ([063c363](https://github.com/IBM/kui/commit/063c363)), closes [#3886](https://github.com/IBM/kui/issues/3886) 689 | - react helpers ([f6bea1f](https://github.com/IBM/kui/commit/f6bea1f)) 690 | - refine NavResponse and add NavLinks support in LeftNavSidecar ([f1d8d98](https://github.com/IBM/kui/commit/f1d8d98)), closes [#3902](https://github.com/IBM/kui/issues/3902) 691 | 692 | ### BREAKING CHANGES 693 | 694 | - this PR removes plugins/plugin-client-default 695 | - this moves plugin-sidecar and plugin-carbon-tables into plugin-client-common 696 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/config.d/about.json: -------------------------------------------------------------------------------- 1 | { 2 | "menus": [ 3 | { 4 | "label": "Overview", 5 | "items": [ 6 | { 7 | "mode": "about", 8 | "content": "about:content", 9 | "contentType": "text/markdown" 10 | }, 11 | { "mode": "version", "contentFrom": "version --full" } 12 | ] 13 | } 14 | ], 15 | "links": [ 16 | { "label": "Github", "href": "https://github.com/softinstigate/http-shell" }, 17 | { "label": "Bugs", "href": "https://github.com/softinstigate/http-shell/issues/new" } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/config.d/client.json: -------------------------------------------------------------------------------- 1 | { 2 | "contextRoot": "" 3 | } 4 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/config.d/exec.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultContext": [] 3 | } 4 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/config.d/icons.json: -------------------------------------------------------------------------------- 1 | { 2 | "app": "icons/png/kui.png", 3 | "large": "icons/svg/kui.svg", 4 | "wide": "icons/svg/kui-wide.svg", 5 | "favicon": "icons/ico/kui.ico", 6 | "filesystem": { 7 | "darwin": "icons/icns/kui.icns", 8 | "win32": "icons/ico/kui.ico", 9 | "linux": "icons/png/kui.png" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/config.d/name.json: -------------------------------------------------------------------------------- 1 | { 2 | "productName": "HTTP Shell", 3 | "productTitle": "HTTP Shell" 4 | } 5 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/config.d/opengraph.json: -------------------------------------------------------------------------------- 1 | { 2 | "ogSiteName": "HTTP Shell", 3 | "ogTitle": "HTTP Shell: The Shell for APIs", 4 | "ogUrl": "http://github.com/softinstigate/http-shell", 5 | "ogDescription": "HTTP Shell is a tool that provides developers a modern alternative to http clients for interacting with APIs.", 6 | "ogImage": "https://restheart.org/images/rh_logo_vert.png", 7 | "ogLabel1": "Clone HTTP Shell on GitHub", 8 | "ogData1": "https://github.com/softinstigate/http-shell", 9 | "ogLabel2": "Clone RESTHeart on GitHub", 10 | "ogData2": "https://github.com/softinstigate/restheart" 11 | } 12 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/config.d/proxy.json: -------------------------------------------------------------------------------- 1 | { 2 | "millisBeforeProxyConnectionWarning": 250, 3 | "proxyServer": { 4 | "url": "http://localhost:8081/exec", 5 | "needleOptions": { 6 | "rejectUnauthorized": false 7 | } 8 | }, 9 | "shellExe": "", 10 | "shellOpts": [] 11 | } 12 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/config.d/style.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultTheme": "Carbon Gray10" 3 | } 4 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/i18n/about_en_US.json: -------------------------------------------------------------------------------- 1 | { 2 | "about": "About", 3 | "about:content": "[![HTTP Shell: The Shell for executing API requests](https://restheart.org/images/rh_logo_vert.png)](http://restheart.org)\n\n**HTTP Shell** is a tool that provides developers a modern alternative to http clients for interacting with APIs.", 4 | "theme": "Themes", 5 | "Configure": "Configure", 6 | "tutorial": "Getting Started", 7 | "version": "Version", 8 | "Home Page": "Home Page", 9 | "Github": "Github", 10 | "Bugs": "Bugs" 11 | } 12 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/i18n/resources_en_US.json: -------------------------------------------------------------------------------- 1 | { 2 | "Successfully connected to your cluster": "Successfully connected to your cluster", 3 | "Please wait while we connect to your cluster": "Please wait while we connect to your cluster", 4 | "Lost connection to your cluster": "Lost connection to your cluster", 5 | "Attempting to reconnect...": "Attempting to reconnect\u2026", 6 | "Error connecting to your cluster": "Error connecting to your cluster", 7 | "Welcome to Kui": "Welcome to Kui", 8 | "loadingDone:content": "To learn more, try [getting started](#kuiexec?command=getting%20started)" 9 | } 10 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/icons/icns/README.md: -------------------------------------------------------------------------------- 1 | Icons for MacOS 2 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/icons/icns/kui.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftInstigate/http-shell/516f85221f43975fa6726d8a2108cbfc69c1301c/plugins/plugin-client-default/icons/icns/kui.icns -------------------------------------------------------------------------------- /plugins/plugin-client-default/icons/ico/README.md: -------------------------------------------------------------------------------- 1 | Icons for Windows 2 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/icons/ico/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftInstigate/http-shell/516f85221f43975fa6726d8a2108cbfc69c1301c/plugins/plugin-client-default/icons/ico/favicon.ico -------------------------------------------------------------------------------- /plugins/plugin-client-default/icons/ico/kui.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftInstigate/http-shell/516f85221f43975fa6726d8a2108cbfc69c1301c/plugins/plugin-client-default/icons/ico/kui.ico -------------------------------------------------------------------------------- /plugins/plugin-client-default/icons/png/TestIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftInstigate/http-shell/516f85221f43975fa6726d8a2108cbfc69c1301c/plugins/plugin-client-default/icons/png/TestIcon.png -------------------------------------------------------------------------------- /plugins/plugin-client-default/icons/png/kui-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftInstigate/http-shell/516f85221f43975fa6726d8a2108cbfc69c1301c/plugins/plugin-client-default/icons/png/kui-128.png -------------------------------------------------------------------------------- /plugins/plugin-client-default/icons/png/kui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftInstigate/http-shell/516f85221f43975fa6726d8a2108cbfc69c1301c/plugins/plugin-client-default/icons/png/kui.png -------------------------------------------------------------------------------- /plugins/plugin-client-default/icons/svg/kui-wide.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/icons/svg/kui.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/images/httpshellImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftInstigate/http-shell/516f85221f43975fa6726d8a2108cbfc69c1301c/plugins/plugin-client-default/images/httpshellImage.png -------------------------------------------------------------------------------- /plugins/plugin-client-default/notebooks/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "apiVersion": "kui-shell/v1", 3 | "kind": "Notebook", 4 | "metadata": { 5 | "name": "HTTP Shell Settings" 6 | }, 7 | "spec": { 8 | "splits": [ 9 | { 10 | "uuid": "3_cd0d8750-9c3b-5e47-bb06-8b8fe6c85bfb", 11 | "inverseColors": true, 12 | "blocks": [ 13 | { 14 | "response": { 15 | "apiVersion": "kui-shell/v1", 16 | "kind": "RadioTable", 17 | "title": "Temi disponibili", 18 | "header": { 19 | "cells": [ 20 | "Tema", 21 | { 22 | "value": "Stile", 23 | "hints": "hide-with-narrow-window" 24 | }, 25 | { 26 | "value": "Provider", 27 | "hints": "hide-with-sidecar" 28 | } 29 | ] 30 | }, 31 | "body": [ 32 | { 33 | "nameIdx": 0, 34 | "cells": [ 35 | "Carbon Gray10", 36 | { 37 | "value": "chiaro", 38 | "hints": "hide-with-narrow-window" 39 | }, 40 | { 41 | "value": "plugin-carbon-themes", 42 | "hints": [ 43 | "hide-with-sidecar", 44 | "sub-text" 45 | ] 46 | } 47 | ], 48 | "onSelect": "theme set \"Carbon Gray10\"" 49 | }, 50 | { 51 | "nameIdx": 0, 52 | "cells": [ 53 | "Carbon Gray90", 54 | { 55 | "value": "scuro", 56 | "hints": "hide-with-narrow-window" 57 | }, 58 | { 59 | "value": "plugin-carbon-themes", 60 | "hints": [ 61 | "hide-with-sidecar", 62 | "sub-text" 63 | ] 64 | } 65 | ], 66 | "onSelect": "theme set \"Carbon Gray90\"" 67 | } 68 | ], 69 | "defaultSelectedIdx": 1 70 | }, 71 | "historyIdx": 251, 72 | "cwd": "~/Workspace7/kui", 73 | "command": "themes", 74 | "startEvent": { 75 | "route": "/themes", 76 | "startTime": 1602253704315, 77 | "command": "themes", 78 | "evaluatorOptions": { 79 | "usage": { 80 | "command": "themes", 81 | "strict": "themes", 82 | "docs": "Elenca temi disponibili" 83 | }, 84 | "plugin": "plugin-core-support" 85 | }, 86 | "execType": 1, 87 | "execUUID": "6866f2f4-e4b5-4321-a23e-745feb2bbb20", 88 | "echo": true 89 | }, 90 | "completeEvent": { 91 | "execType": 1, 92 | "completeTime": 1602253704364, 93 | "command": "themes", 94 | "argvNoOptions": [ 95 | "themes" 96 | ], 97 | "parsedOptions": { 98 | "_": [ 99 | "themes" 100 | ] 101 | }, 102 | "execUUID": "6866f2f4-e4b5-4321-a23e-745feb2bbb20", 103 | "cancelled": false, 104 | "echo": true, 105 | "evaluatorOptions": { 106 | "plugin": "plugin-core-support" 107 | }, 108 | "execOptions": { 109 | "echo": true, 110 | "type": 1, 111 | "execUUID": "6866f2f4-e4b5-4321-a23e-745feb2bbb20", 112 | "history": 251, 113 | "env": {} 114 | }, 115 | 116 | "responseType": "ScalarResponse", 117 | "historyIdx": 251 118 | }, 119 | "isExperimental": false, 120 | "isReplay": true, 121 | "execUUID": "6866f2f4-e4b5-4321-a23e-745feb2bbb20", 122 | "startTime": 1602253704315, 123 | "prefersTerminalPresentation": false, 124 | "outputOnly": false, 125 | "state": "valid-response" 126 | } 127 | ] 128 | } 129 | ] 130 | } 131 | } -------------------------------------------------------------------------------- /plugins/plugin-client-default/notebooks/welcome.json: -------------------------------------------------------------------------------- 1 | { 2 | "apiVersion": "kui-shell/v1", 3 | "kind": "Notebook", 4 | "metadata": { 5 | "description": "HTTP Shell Info" 6 | }, 7 | "spec": { 8 | "splits": [ 9 | { 10 | "uuid": "2_c57e811f-2da8-557e-a402-9f0950407675", 11 | "blocks": [ 12 | { 13 | "response": { 14 | "apiVersion": "kui-shell/v1", 15 | "kind": "CommentaryResponse", 16 | "props": { 17 | "children": "![HTTP Shell](https://softinstigate.com/images/softinstigate-logo-sm.png)\n\nHTTP Shell is the perfect companion to execute API requests.\n\nMade with 🍔 by [SoftInstigate](https://softinstigate.com)" 18 | } 19 | }, 20 | "historyIdx": 258, 21 | "cwd": "~/development/http-shell", 22 | "command": "commentary", 23 | "startEvent": { 24 | "route": "/commentary", 25 | "startTime": 1602238410938, 26 | "command": "commentary", 27 | "evaluatorOptions": { 28 | "usage": { 29 | "command": "commentary", 30 | "strict": "commentary", 31 | "example": "commentary -f []", 32 | "docs": "Commentary", 33 | "optional": [ 34 | { 35 | "name": "--title", 36 | "alias": "-t", 37 | "docs": "Title for the commentary" 38 | }, 39 | { 40 | "name": "--file", 41 | "alias": "-f", 42 | "docs": "File that contains the texts" 43 | } 44 | ] 45 | }, 46 | "outputOnly": true, 47 | "plugin": "plugin-client-common" 48 | }, 49 | "execType": 0, 50 | "execUUID": "70f9cc74-e7ea-4899-8115-4fe4f80cf287" 51 | }, 52 | "completeEvent": { 53 | "execType": 0, 54 | "completeTime": 1602238410969, 55 | "command": "commentary", 56 | "argvNoOptions": [ 57 | "commentary" 58 | ], 59 | "parsedOptions": { 60 | "_": [ 61 | "commentary" 62 | ] 63 | }, 64 | "execUUID": "70f9cc74-e7ea-4899-8115-4fe4f80cf287", 65 | "cancelled": false, 66 | "evaluatorOptions": { 67 | "outputOnly": true, 68 | "plugin": "plugin-client-common" 69 | }, 70 | "execOptions": { 71 | "type": 0, 72 | "language": "it", 73 | "execUUID": "70f9cc74-e7ea-4899-8115-4fe4f80cf287", 74 | "history": 258, 75 | "env": {} 76 | }, 77 | "response": { 78 | "apiVersion": "kui-shell/v1", 79 | "kind": "CommentaryResponse", 80 | "props": { 81 | "children": "## HTTP Shell\n\nHTTP Shell is the perfect companion to execute API requests. " 82 | } 83 | }, 84 | "responseType": "ScalarResponse", 85 | "historyIdx": 258 86 | }, 87 | "isExperimental": false, 88 | "isReplay": true, 89 | "execUUID": "70f9cc74-e7ea-4899-8115-4fe4f80cf287", 90 | "startTime": 1602238410938, 91 | "prefersTerminalPresentation": false, 92 | "outputOnly": true, 93 | "state": "valid-response" 94 | }, 95 | { 96 | "response": { 97 | "noSort": true, 98 | "noEntityColors": true, 99 | "header": { 100 | "name": "COMPONENT", 101 | "attributes": [ 102 | { 103 | "value": "VERSION" 104 | } 105 | ] 106 | }, 107 | "body": [ 108 | { 109 | "name": "HTTP Shell", 110 | "outerCSS": "semi-bold", 111 | "css": "cyan-text", 112 | "attributes": [ 113 | { 114 | "key": "VERSION", 115 | "value": "0.1.0" 116 | } 117 | ], 118 | "key": "COMPONENT" 119 | }, 120 | { 121 | "name": "electron", 122 | "outerCSS": "", 123 | "css": "lighter-text", 124 | "attributes": [ 125 | { 126 | "key": "VERSION", 127 | "value": "7.3.3" 128 | } 129 | ], 130 | "key": "COMPONENT" 131 | }, 132 | { 133 | "name": "chrome", 134 | "outerCSS": "", 135 | "css": "lighter-text", 136 | "attributes": [ 137 | { 138 | "key": "VERSION", 139 | "value": "78.0.3904.130" 140 | } 141 | ], 142 | "key": "COMPONENT" 143 | }, 144 | { 145 | "name": "node", 146 | "outerCSS": "", 147 | "css": "lighter-text", 148 | "attributes": [ 149 | { 150 | "key": "VERSION", 151 | "value": "12.8.1" 152 | } 153 | ], 154 | "key": "COMPONENT" 155 | }, 156 | { 157 | "name": "v8", 158 | "outerCSS": "", 159 | "css": "lighter-text", 160 | "attributes": [ 161 | { 162 | "key": "VERSION", 163 | "value": "7.8.279.23-electron.0" 164 | } 165 | ], 166 | "key": "COMPONENT" 167 | } 168 | ] 169 | }, 170 | "historyIdx": 259, 171 | "cwd": "~/development/http-shell", 172 | "command": "version --full", 173 | "startEvent": { 174 | "route": "/version", 175 | "startTime": 1602238512284, 176 | "command": "version --full", 177 | "evaluatorOptions": { 178 | "usage": { 179 | "strict": "version", 180 | "command": "version", 181 | "title": "Informazioni sulla versione", 182 | "header": "Stampa la versione corrente", 183 | "example": "version", 184 | "optional": [ 185 | { 186 | "name": "--full", 187 | "boolean": true, 188 | "docs": "Report versione completa" 189 | } 190 | ] 191 | }, 192 | "plugin": "plugin-core-support/about" 193 | }, 194 | "execType": 0, 195 | "execUUID": "076c2be6-26d7-43e4-8fe9-f68748ebcf2e" 196 | }, 197 | "completeEvent": { 198 | "execType": 0, 199 | "completeTime": 1602238512398, 200 | "command": "version --full", 201 | "argvNoOptions": [ 202 | "version" 203 | ], 204 | "parsedOptions": { 205 | "_": [ 206 | "version" 207 | ], 208 | "full": true 209 | }, 210 | "execUUID": "076c2be6-26d7-43e4-8fe9-f68748ebcf2e", 211 | "cancelled": false, 212 | "evaluatorOptions": { 213 | "plugin": "plugin-core-support/about" 214 | }, 215 | "execOptions": { 216 | "type": 0, 217 | "language": "it", 218 | "execUUID": "076c2be6-26d7-43e4-8fe9-f68748ebcf2e", 219 | "history": 259, 220 | "env": {} 221 | }, 222 | "response": { 223 | "noSort": true, 224 | "noEntityColors": true, 225 | "header": { 226 | "name": "COMPONENT", 227 | "attributes": [ 228 | { 229 | "value": "VERSION" 230 | } 231 | ] 232 | }, 233 | "body": [ 234 | { 235 | "name": "HTTP Shell", 236 | "outerCSS": "semi-bold", 237 | "css": "cyan-text", 238 | "attributes": [ 239 | { 240 | "key": "VERSION", 241 | "value": "0.1.0" 242 | } 243 | ], 244 | "key": "COMPONENT" 245 | }, 246 | { 247 | "name": "electron", 248 | "outerCSS": "", 249 | "css": "lighter-text", 250 | "attributes": [ 251 | { 252 | "key": "VERSION", 253 | "value": "7.3.3" 254 | } 255 | ], 256 | "key": "COMPONENT" 257 | }, 258 | { 259 | "name": "chrome", 260 | "outerCSS": "", 261 | "css": "lighter-text", 262 | "attributes": [ 263 | { 264 | "key": "VERSION", 265 | "value": "78.0.3904.130" 266 | } 267 | ], 268 | "key": "COMPONENT" 269 | }, 270 | { 271 | "name": "node", 272 | "outerCSS": "", 273 | "css": "lighter-text", 274 | "attributes": [ 275 | { 276 | "key": "VERSION", 277 | "value": "12.8.1" 278 | } 279 | ], 280 | "key": "COMPONENT" 281 | }, 282 | { 283 | "name": "v8", 284 | "outerCSS": "", 285 | "css": "lighter-text", 286 | "attributes": [ 287 | { 288 | "key": "VERSION", 289 | "value": "7.8.279.23-electron.0" 290 | } 291 | ], 292 | "key": "COMPONENT" 293 | } 294 | ] 295 | }, 296 | "responseType": "ScalarResponse", 297 | "historyIdx": 259 298 | }, 299 | "isExperimental": false, 300 | "isReplay": true, 301 | "execUUID": "076c2be6-26d7-43e4-8fe9-f68748ebcf2e", 302 | "startTime": 1602238512284, 303 | "prefersTerminalPresentation": false, 304 | "outputOnly": false, 305 | "state": "valid-response" 306 | }, 307 | { 308 | "response": { 309 | "apiVersion": "kui-shell/v1", 310 | "kind": "NavResponse", 311 | "breadcrumbs": [ 312 | { 313 | "label": "Help" 314 | }, 315 | { 316 | "label": "HTTP Shell" 317 | } 318 | ], 319 | "menus": [ 320 | { 321 | "label": "Available commands", 322 | "items": [ 323 | { 324 | "mode": "Authentication", 325 | "contentType": "text/markdown", 326 | "content": "\n#### set auth\nOpens a dialog to sets the basic authentication credentials to use in further requests\n> e.g. [`h set auth`](#kuiexec?command=h%20set%20auth)\n​\n#### reset auth\nClear the basic authentication credentials\n> e.g. [`h reset auth`](#kuiexec?command=h%20reset%20auth)\n" 327 | }, 328 | { 329 | "mode": "Configuration", 330 | "contentType": "text/markdown", 331 | "content": "\n#### set url \nSets the base url to use in further requests. If does not include the protocol, http is assumed. If only specifies the port (e.g. :8080), localhost is assumed\n> e.g. [`h set url http://127.0.0.1:8080`](#kuiexec?command=h%20set%20url%20http%3A%2F%2F127.0.0.1%3A8080)\n​\n#### [get url](#kuiexec?command=h%20get%20url)\nPrints the base url\n​\n#### edit \nOpens for editing. Tip, hit key F1 for list of editor commands\n> e.g. [`edit body.json`](#kuiexec?command=edit%20body.json)\n" 332 | }, 333 | { 334 | "mode": "Access Methods", 335 | "contentType": "text/markdown", 336 | "content": "\n#### get \nExecutes the GET request to url=+\n> e.g. [`h get /messages`](#kuiexec?command=h%20get%20/messages)\n​\n#### post \nExecutes the request POST +, sending the content of as the request body\n> e.g. [`h post /messages msg.json`](#kuiexec?command=h%20post%20%2Fmessages%20msg.json)\n​\n#### put \nExecutes the request PUT +, sending the content of as the request body\n> e.g. [`h put /messages/foo msg.json`](#kuiexec?command=h%20put%20%2Fmessages%2Ffoo%20msg.json)\n​\n#### patch \nExecutes the request PATCH +, sending the content of as the request body\n> e.g. [`h patch /messages msg.json`](#kuiexec?command=h%20patch%20%2Fmessages%20msg.json)\n\n#### delete \nExecutes the DELETE request to url=+\n​\n#### set header \nSet the header to \n> e.g. [`h set header Authorization \"Bearer 5f7f35efcb800f2502f95cb5\"`](#kuiexec?command=h%20set%20header%20Authorization%20\"Bearer%205f7f35efcb800f2502f95cb5\")\n​\n#### [get headers](#kuiexec?command=h%20get%20headers)\nPrints the current set headers\n> e.g. [`h get headers`](#kuiexec?command=h%20get%20headers)\n​\n#### [reset headers](#kuiexec?command=h%20reset%20headers)\nClears the headers\n> e.g. [`h reset headers`](#kuiexec?command=h%20reset%20headers)\n" 337 | } 338 | ] 339 | } 340 | ] 341 | }, 342 | "historyIdx": 11, 343 | "cwd": "~/development/http-shell", 344 | "command": "help http-shell", 345 | "startEvent": { 346 | "route": "/help/http-shell", 347 | "startTime": 1603990807370, 348 | "command": "help http-shell", 349 | "evaluatorOptions": { 350 | "usage": { 351 | "title": "HTTP Shell", 352 | "header": "Commands to execute HTTP Shell requests", 353 | "available": [ 354 | { 355 | "command": "h set auth", 356 | "docs": "sets the basic authentication credentials" 357 | }, 358 | { 359 | "command": "h set url", 360 | "docs": "sets the base-url" 361 | }, 362 | { 363 | "command": "h get url", 364 | "docs": "prints the base-url" 365 | }, 366 | { 367 | "command": "h get ", 368 | "docs": "executes the GET request to url=+" 369 | }, 370 | { 371 | "command": "h post ", 372 | "docs": "executes the POST request to url=+" 373 | } 374 | ] 375 | }, 376 | "plugin": "plugin-http-shell" 377 | }, 378 | "execType": 3, 379 | "execUUID": "8f31f28d-c56f-4131-b42a-d0ecc919f199", 380 | "execOptions": { 381 | "echo": true, 382 | "type": 3, 383 | "execUUID": "8f31f28d-c56f-4131-b42a-d0ecc919f199", 384 | "history": 11, 385 | "env": {} 386 | }, 387 | "echo": true 388 | }, 389 | "completeEvent": { 390 | "execType": 3, 391 | "completeTime": 1603990807411, 392 | "command": "help http-shell", 393 | "argvNoOptions": [ 394 | "help", 395 | "http-shell" 396 | ], 397 | "parsedOptions": { 398 | "_": [ 399 | "help", 400 | "http-shell" 401 | ] 402 | }, 403 | "execUUID": "8f31f28d-c56f-4131-b42a-d0ecc919f199", 404 | "cancelled": false, 405 | "echo": true, 406 | "evaluatorOptions": { 407 | "plugin": "plugin-http-shell" 408 | }, 409 | "execOptions": { 410 | "echo": true, 411 | "type": 3, 412 | "execUUID": "8f31f28d-c56f-4131-b42a-d0ecc919f199", 413 | "history": 11, 414 | "env": {} 415 | }, 416 | "response": { 417 | "apiVersion": "kui-shell/v1", 418 | "kind": "NavResponse", 419 | "breadcrumbs": [ 420 | { 421 | "label": "Help" 422 | }, 423 | { 424 | "label": "HTTP Shell" 425 | } 426 | ], 427 | "menus": [ 428 | { 429 | "label": "Available commands", 430 | "items": [ 431 | { 432 | "mode": "Authentication", 433 | "contentType": "text/markdown", 434 | "content": "\n#### set auth\nOpens a dialog to sets the basic authentication credentials to use in further requests\n> e.g. [`h set auth`](#kuiexec?command=h%20set%20auth)\n​\n#### reset auth\nClear the basic authentication credentials\n> e.g. [`h reset auth`](#kuiexec?command=h%20reset%20auth)\n" 435 | }, 436 | { 437 | "mode": "Configuration", 438 | "contentType": "text/markdown", 439 | "content": "\n#### set url \nSets the base url to use in further requests. If does not include the protocol, http is assumed. If only specifies the port (e.g. :8080), localhost is assumed\n> e.g. [`h set url http://127.0.0.1:8080`](#kuiexec?command=h%20set%20url%20http%3A%2F%2F127.0.0.1%3A8080)\n​\n#### [get url](#kuiexec?command=h%20get%20url)\nPrints the base url\n​\n#### edit \nOpens for editing. Tip, hit key F1 for list of editor commands\n> e.g. [`edit body.json`](#kuiexec?command=edit%20body.json)\n" 440 | }, 441 | { 442 | "mode": "Access Methods", 443 | "contentType": "text/markdown", 444 | "content": "\n#### get \nExecutes the GET request to url=+\n> e.g. [`h get /messages`](#kuiexec?command=h%20get%20/messages)\n​\n#### post \nExecutes the request POST +, sending the content of as the request body\n> e.g. [`h post /messages msg.json`](#kuiexec?command=h%20post%20%2Fmessages%20msg.json)\n​\n#### put \nExecutes the request PUT +, sending the content of as the request body\n> e.g. [`h put /messages/foo msg.json`](#kuiexec?command=h%20put%20%2Fmessages%2Ffoo%20msg.json)\n​\n#### patch \nExecutes the request PATCH +, sending the content of as the request body\n> e.g. [`h patch /messages msg.json`](#kuiexec?command=h%20patch%20%2Fmessages%20msg.json)\n\n#### delete \nExecutes the DELETE request to url=+\n​\n#### set header \nSet the header to \n> e.g. [`h set header Authorization \"Bearer 5f7f35efcb800f2502f95cb5\"`](#kuiexec?command=h%20set%20header%20Authorization%20\"Bearer%205f7f35efcb800f2502f95cb5\")\n​\n#### [get headers](#kuiexec?command=h%20get%20headers)\nPrints the current set headers\n> e.g. [`h get headers`](#kuiexec?command=h%20get%20headers)\n​\n#### [reset headers](#kuiexec?command=h%20reset%20headers)\nClears the headers\n> e.g. [`h reset headers`](#kuiexec?command=h%20reset%20headers)\n" 445 | } 446 | ] 447 | } 448 | ] 449 | }, 450 | "responseType": "NavResponse", 451 | "historyIdx": 11 452 | }, 453 | "isExperimental": false, 454 | "isReplay": true, 455 | "execUUID": "8f31f28d-c56f-4131-b42a-d0ecc919f199", 456 | "startTime": 1603990807370, 457 | "outputOnly": false, 458 | "state": "valid-response" 459 | } 460 | ] 461 | } 462 | ] 463 | } 464 | } -------------------------------------------------------------------------------- /plugins/plugin-client-default/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@kui-shell/plugin-client", 3 | "version": "0.1.0", 4 | "description": "Kui plugin that offers client defintion", 5 | "main": "dist/index.js", 6 | "module": "mdist/index.js", 7 | "types": "mdist/index.d.ts", 8 | "license": "Apache-2.0", 9 | "author": "Mengting Yan", 10 | "homepage": "https://github.com/IBM/kui#readme", 11 | "bugs": { 12 | "url": "https://github.com/IBM/kui/issues/new" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "git+https://github.com/IBM/kui.git" 17 | }, 18 | "keywords": [ 19 | "restheart", 20 | "http", 21 | "client", 22 | "api", 23 | "kui", 24 | "plugin" 25 | ], 26 | "private": true, 27 | "publishConfig": { 28 | "access": "public" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/src/index.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 IBM Corporation 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import * as React from 'react' 18 | 19 | import { i18n, inBrowser } from '@kui-shell/core' 20 | import { Kui, KuiProps, ContextWidgets, MeterWidgets, CurrentWorkingDirectory } from '@kui-shell/plugin-client-common' 21 | 22 | import { CurrentGitBranch } from '@kui-shell/plugin-git' 23 | import { ProxyOfflineIndicator } from '@kui-shell/plugin-proxy-support' 24 | import { Screenshot, Search } from '@kui-shell/plugin-electron-components' 25 | 26 | import { productName } from '@kui-shell/client/config.d/name.json' 27 | 28 | import { CurrentUrlWidget, CurrentIdWidget, HelpWidget } from '@kui-shell/plugin-http-shell' 29 | 30 | const strings = i18n('plugin-client-default') 31 | 32 | /** 33 | * We will set this bit when the user dismisses the Welcome to Kui 34 | * tab, so as to avoid opening it again and bothering that user for 35 | * every new Kui window. 36 | * 37 | */ 38 | const welcomeBit = 'plugin-client-default.welcome-was-dismissed' 39 | 40 | /** 41 | * Format our body, with extra status stripe widgets 42 | * - 43 | * - 44 | * 45 | */ 46 | export default function renderMain(props: KuiProps) { 47 | const title = strings('HTTP Shell') 48 | 49 | return ( 50 | } 57 | commandLine={ 58 | props.commandLine || [ 59 | 'tab', 60 | 'new', 61 | '--cmdline', 62 | 'replay /kui/welcome.json', 63 | '-q', // qexec 64 | '--bg', // open in background 65 | '--title', 66 | title, 67 | '--status-stripe-type', 68 | 'blue', 69 | '--status-stripe-message', 70 | title, 71 | '--if', 72 | `kuiconfig not set ${welcomeBit}`, 73 | '--onClose', 74 | `kuiconfig set ${welcomeBit}` 75 | ] 76 | } 77 | > 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | ) 92 | } 93 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/src/preload.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 IBM Corporation 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** 18 | * Register the welcome notebook 19 | * 20 | */ 21 | export default async () => { 22 | const { notebookVFS } = await import('@kui-shell/plugin-core-support') 23 | 24 | notebookVFS.cp( 25 | undefined, 26 | ['plugin://client/notebooks/welcome.json', 'plugin://client/notebooks/settings.json'], 27 | '/kui' 28 | ) 29 | } 30 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../node_modules/@kui-shell/builder/tsconfig-base.json", 3 | "include": ["src/**/*"], 4 | "compilerOptions": { 5 | "composite": true, 6 | "jsx": "react", 7 | "outDir": "mdist", 8 | "rootDir": "src" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /plugins/plugin-client-default/web/css/static/test.scss: -------------------------------------------------------------------------------- 1 | .sassy { 2 | .hide { 3 | display: block !important; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | mdist/ 3 | build -------------------------------------------------------------------------------- /plugins/plugin-http-shell/.npmignore: -------------------------------------------------------------------------------- 1 | build 2 | src 3 | tests 4 | dist/test 5 | tsconfig* 6 | /*.tgz 7 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@kui-shell/plugin-http-shell", 3 | "version": "0.1.0", 4 | "description": "HTTP Shell", 5 | "main": "dist/index.js", 6 | "module": "mdist/index.js", 7 | "types": "mdist/index.d.ts", 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "keywords": [], 12 | "author": "Andrea Di Cesare", 13 | "license": "Apache-2.0" 14 | } 15 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | export { default as CurrentUrlWidget } from './view/CurrentUrlWidget' 18 | export { default as CurrentIdWidget } from './view/BasicAuthenticationWidget' 19 | export { default as HelpWidget } from './view/HelpWidget' -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/delete.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { 18 | Registrar, 19 | Arguments, 20 | MultiModalResponse, 21 | } from "@kui-shell/core"; 22 | import { deleteUsage as usage } from "../usage"; 23 | 24 | import { del } from "superagent"; 25 | import { url } from './requests'; 26 | 27 | const deleteCmd = async (args: Arguments): Promise => { 28 | return url(args, del, usage); 29 | }; 30 | 31 | export default async (registrar: Registrar) => { 32 | registrar.listen("/h/delete", deleteCmd, { 33 | usage: usage, 34 | noAuthOk: true, 35 | }); 36 | }; 37 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/get-headers.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { Registrar, Store, Table } from "@kui-shell/core"; 18 | // import Debug from "debug"; 19 | 20 | // const debug = Debug("plugins/plugin-http-shell/get-auth"); 21 | 22 | const getHeadersCmd = async () => { 23 | let _headers = Store().getItem("headers"); 24 | 25 | if (!_headers) { 26 | _headers = "[]"; 27 | } 28 | 29 | const headers = JSON.parse(_headers); 30 | 31 | const t: Table = { 32 | header: { name: "header", attributes: [{ value: "value" }] }, 33 | body: [], 34 | }; 35 | 36 | for(var i = 0; i < headers.length; i++) { 37 | t.body.push({name: headers[i]['k'], attributes: [{ value: headers[i]['v'] }]}) 38 | } 39 | 40 | return t; 41 | }; 42 | 43 | export default async (registrar: Registrar) => { 44 | registrar.listen("/h/get/headers", getHeadersCmd, { 45 | noAuthOk: true, 46 | }); 47 | }; 48 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/get-url.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { Registrar, Store, Table } from "@kui-shell/core"; 18 | // import Debug from "debug"; 19 | 20 | // const debug = Debug("plugins/plugin-http-shell/get-url"); 21 | 22 | const getUrl = () => { 23 | const t: Table = { 24 | header: { name: "property", attributes: [{ value: "value" }] }, 25 | body: [ 26 | { name: "url", attributes: [{ value: `${Store().getItem("url")}` }] } 27 | ] 28 | }; 29 | 30 | return t; 31 | }; 32 | 33 | export default async (registrar: Registrar) => { 34 | registrar.listen("/h/get/url", getUrl, { 35 | noAuthOk: true 36 | }); 37 | }; 38 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/get.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { 18 | Registrar, 19 | Arguments, 20 | MultiModalResponse, 21 | } from "@kui-shell/core"; 22 | 23 | import { get } from "superagent"; 24 | import { url } from './requests'; 25 | import { getUsage as usage } from '../usage'; 26 | 27 | // import Debug from "debug"; 28 | // const debug = Debug("plugins/plugin-http-shell/get"); 29 | 30 | const getCmd = async (args: Arguments): Promise => { 31 | return url(args, get, usage); 32 | }; 33 | 34 | export default async (registrar: Registrar) => { 35 | registrar.listen("/h/get", getCmd, { 36 | usage: usage, 37 | noAuthOk: true, 38 | }); 39 | }; 40 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/help-http-shell.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | ​ 17 | import { Registrar, NavResponse } from "@kui-shell/core"; 18 | import { toplevelUsage as usage } from '../usage' 19 | // import Debug from "debug"; 20 | 21 | // const debug = Debug("plugins/plugin-http-shell/test"); 22 | ​ 23 | const resp: NavResponse = { 24 | apiVersion: 'kui-shell/v1', 25 | kind: 'NavResponse', 26 | breadcrumbs: [{ label: "Help" }, { label: "HTTP Shell" }], 27 | menus: [ 28 | { 29 | label: "Available commands", 30 | items: [ 31 | { mode: 'Authentication', 32 | contentType: "text/markdown", 33 | content: ` 34 | #### set auth 35 | Opens a dialog to sets the basic authentication credentials to use in further requests 36 | > e.g. [\`h set auth\`](#kuiexec?command=h%20set%20auth) 37 | ​ 38 | #### reset auth 39 | Clear the basic authentication credentials 40 | > e.g. [\`h reset auth\`](#kuiexec?command=h%20reset%20auth) 41 | ` 42 | }, 43 | { mode: 'Configuration', 44 | contentType: "text/markdown", 45 | content: ` 46 | #### set url 47 | Sets the base url to use in further requests. If does not include the protocol, http is assumed. If only specifies the port (e.g. :8080), localhost is assumed 48 | > e.g. [\`h set url http://127.0.0.1:8080\`](#kuiexec?command=h%20set%20url%20http%3A%2F%2F127.0.0.1%3A8080) 49 | ​ 50 | #### [get url](#kuiexec?command=h%20get%20url) 51 | Prints the base url 52 | ​ 53 | #### edit 54 | Opens for editing. Tip, hit key F1 for list of editor commands 55 | > e.g. [\`edit body.json\`](#kuiexec?command=edit%20body.json) 56 | ` 57 | }, 58 | { mode: 'Access Methods', 59 | contentType: "text/markdown", 60 | content: ` 61 | #### get 62 | Executes the GET request to url=+ 63 | > e.g. [\`h get /messages\`](#kuiexec?command=h%20get%20/messages) 64 | ​ 65 | #### post 66 | Executes the request POST +, sending the content of as the request body 67 | > e.g. [\`h post /messages msg.json\`](#kuiexec?command=h%20post%20%2Fmessages%20msg.json) 68 | ​ 69 | #### put 70 | Executes the request PUT +, sending the content of as the request body 71 | > e.g. [\`h put /messages/foo msg.json\`](#kuiexec?command=h%20put%20%2Fmessages%2Ffoo%20msg.json) 72 | ​ 73 | #### patch 74 | Executes the request PATCH +, sending the content of as the request body 75 | > e.g. [\`h patch /messages msg.json\`](#kuiexec?command=h%20patch%20%2Fmessages%20msg.json) 76 | 77 | #### delete 78 | Executes the DELETE request to url=+ 79 | ​ 80 | #### set header 81 | Set the header to 82 | > e.g. [\`h set header Authorization "Bearer 5f7f35efcb800f2502f95cb5"\`](#kuiexec?command=h%20set%20header%20Authorization%20"Bearer%205f7f35efcb800f2502f95cb5") 83 | ​ 84 | #### [get headers](#kuiexec?command=h%20get%20headers) 85 | Prints the current set headers 86 | > e.g. [\`h get headers\`](#kuiexec?command=h%20get%20headers) 87 | ​ 88 | #### [reset headers](#kuiexec?command=h%20reset%20headers) 89 | Clears the headers 90 | > e.g. [\`h reset headers\`](#kuiexec?command=h%20reset%20headers) 91 | ` 92 | } 93 | ] 94 | } 95 | ] 96 | }; 97 | 98 | export default async (registrar: Registrar) => { 99 | registrar.listen("/help/http-shell", () => resp, { usage: usage }); 100 | }; 101 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/help.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 IBM Corporation 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import Debug from 'debug' 18 | const debug = Debug('plugins/core-support/help') 19 | debug('loading') 20 | 21 | import { isHeadless, inBrowser, Arguments, Registrar, CodedError, UsageError, i18n } from '@kui-shell/core' 22 | 23 | const strings = i18n('plugin-core-support') 24 | 25 | /** 26 | * Respond with a top-level usage document 27 | * 28 | */ 29 | const help = usage => ({ argvNoOptions: args, REPL }: Arguments) => { 30 | const rest = args.slice(args.indexOf('help') + 1) 31 | debug('help command', rest, usage) 32 | 33 | if (rest.length > 0) { 34 | // then the user asked e.g. "help foo"; interpret this as "foo help" 35 | debug('reversal') 36 | return REPL.qexec( 37 | rest 38 | .concat('help') 39 | .map(val => REPL.encodeComponent(val)) 40 | .join(' ') 41 | ) 42 | 43 | // } else if (args.length !== 1) { 44 | } else if (usage) { 45 | debug('usage-based', args) 46 | 47 | // this will be our return value 48 | const topLevelUsage = { 49 | title: strings('helpUsageTitle'), 50 | header: 'A summary of the top-level command structure.', 51 | available: [], 52 | nRowsInViewport: 8 // show a few more rows for top-level help 53 | } 54 | 55 | // traverse the top-level usage documents, populating topLevelUsage.available 56 | for (const key in usage) { 57 | const { route, usage: model } = usage[key] 58 | if ( 59 | model && 60 | !model.synonymFor && 61 | (isHeadless() || !model.headlessOnly) && 62 | (!inBrowser() || !model.requiresLocal) 63 | ) { 64 | topLevelUsage.available.push({ 65 | label: route.substring(1), 66 | available: model.available, 67 | hidden: model.hidden, 68 | synonyms: model.synonyms, 69 | command: model.commandPrefix || model.command, // either subtree or leaf command 70 | docs: model.command ? model.header : model.title // for leaf commands, print full header 71 | }) 72 | } 73 | } 74 | 75 | debug('generated top-level usage model') 76 | throw new UsageError({ usage: topLevelUsage }) 77 | } else { 78 | debug('no usage model') 79 | 80 | const error: CodedError = new Error('No documentation found') 81 | error.code = 404 82 | throw error 83 | } 84 | } 85 | 86 | /** 87 | * The module. Here, we register as a listener for commands. 88 | * 89 | */ 90 | export default async (commandTree: Registrar, { usage }) => { 91 | commandTree.listen('/help', help(usage)) 92 | commandTree.listen('/?', help(usage)) 93 | } 94 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/options.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { 18 | Registrar, 19 | Arguments, 20 | MultiModalResponse, 21 | } from "@kui-shell/core"; 22 | import { optionsUsage as usage } from "../usage"; 23 | 24 | import { options } from "superagent"; 25 | import { url } from './requests'; 26 | 27 | const optionsCmd = async (args: Arguments): Promise => { 28 | return url(args, options, usage); 29 | }; 30 | 31 | export default async (registrar: Registrar) => { 32 | registrar.listen("/h/options", optionsCmd, { 33 | usage: usage, 34 | noAuthOk: true, 35 | }); 36 | }; 37 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/patch.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { 18 | Registrar, 19 | Arguments, 20 | MultiModalResponse, 21 | } from "@kui-shell/core"; 22 | import { patchUsage as usage } from "../usage"; 23 | 24 | import { patch } from "superagent"; 25 | import { urlFile } from './requests'; 26 | 27 | const patchCmd = async (args: Arguments): Promise => { 28 | return urlFile(args, patch, usage); 29 | }; 30 | 31 | export default async (registrar: Registrar) => { 32 | registrar.listen("/h/patch", patchCmd, { 33 | usage: usage, 34 | noAuthOk: true, 35 | }); 36 | }; 37 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/post.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { 18 | Registrar, 19 | Arguments, 20 | MultiModalResponse, 21 | } from "@kui-shell/core"; 22 | import { postUsage as usage } from "../usage"; 23 | 24 | import { post } from "superagent"; 25 | import { urlFile } from './requests'; 26 | 27 | const postCmd = async (args: Arguments): Promise => { 28 | return urlFile(args, post, usage); 29 | }; 30 | 31 | export default async (registrar: Registrar) => { 32 | registrar.listen("/h/post", postCmd, { 33 | usage: usage, 34 | noAuthOk: true, 35 | }); 36 | }; 37 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/put.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { Registrar, Arguments, MultiModalResponse } from "@kui-shell/core"; 18 | import { putUsage as usage } from "../usage"; 19 | 20 | import { put } from "superagent"; 21 | import { url, urlFile } from "./requests"; 22 | 23 | const putCmd = async ( 24 | args: Arguments 25 | ): Promise => { 26 | return args.argvNoOptions.length == 2 27 | ? url(args, put, usage) 28 | : urlFile(args, put, usage); 29 | }; 30 | 31 | export default async (registrar: Registrar) => { 32 | registrar.listen("/h/put", putCmd, { 33 | usage: usage, 34 | noAuthOk: true, 35 | }); 36 | }; 37 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/requests.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { 18 | Arguments, 19 | Store, 20 | UsageError, 21 | MultiModalResponse, 22 | UsageModel, 23 | } from "@kui-shell/core"; 24 | 25 | import { Response, ResponseError, SuperAgentRequest } from "superagent"; 26 | import { readFileSync } from "fs"; 27 | import { errorMsg } from '../usage' 28 | const { BrowserWindow } = require("electron"); 29 | 30 | import Debug from "debug"; 31 | 32 | const debug = Debug("plugins/plugin-http-shell/requests"); 33 | 34 | interface UrlRequest { 35 | (url: string): SuperAgentRequest; 36 | (url: string): SuperAgentRequest; 37 | } 38 | 39 | export async function urlFile( 40 | { argvNoOptions: args }: Arguments, 41 | req: UrlRequest, 42 | usage: UsageModel 43 | ): Promise { 44 | if (!args || args.length < 4) { 45 | const error = new UsageError({ message: errorMsg(usage), usage: usage }); 46 | debug('error', error); 47 | 48 | throw error; 49 | } else { 50 | const uri = args[2]; 51 | const urlPrefix = Store().getItem("url"); 52 | 53 | const file = args[3]; 54 | 55 | if (!urlPrefix) { 56 | return 'url not set. use "set url"'; 57 | } 58 | 59 | const uriSlashPrefixed = uri.length > 0 && uri[0] === "/"; 60 | const urlTrailingSlash = urlPrefix[urlPrefix.length - 1] === "/"; 61 | 62 | const url = 63 | uriSlashPrefixed && urlTrailingSlash 64 | ? `${urlPrefix.substring(urlPrefix.length - 1)}${uri}` 65 | : !uriSlashPrefixed && !urlTrailingSlash 66 | ? `${urlPrefix}/${uri}` 67 | : `${urlPrefix}${uri}`; 68 | 69 | let body = readFileSync(file).toString(); 70 | 71 | const _headers = JSON.parse( 72 | Store().getItem("headers") ? Store().getItem("headers") : "[]" 73 | ); 74 | 75 | const headers = {}; 76 | 77 | for (var i = 0; i < _headers.length; i++) { 78 | headers[_headers[i]["k"]] = _headers[i]["v"]; 79 | } 80 | 81 | if (!headers["Content-Type"]) { 82 | headers["Content-Type"] = "application/json"; 83 | } 84 | 85 | if (!headers["Accept"]) { 86 | headers["Accept"] = "application/json"; 87 | } 88 | 89 | const _req = req(url); 90 | 91 | if (Store().getItem("id") && Store().getItem("pwd")) { 92 | _req.auth(Store().getItem("id"), Store().getItem("pwd")); 93 | } 94 | 95 | return _req 96 | .set(headers) 97 | .send(body) 98 | .on("error", (err) => { 99 | debug("error", err); 100 | }) 101 | .then((res: Response) => { 102 | const method = res["req"] 103 | ? res["req"]["method"] 104 | ? res["req"]["method"] 105 | : "" 106 | : ""; 107 | 108 | //debug(res); 109 | 110 | const ret: MultiModalResponse = { 111 | metadata: { name: `🐱 ${method} ${url}` }, 112 | kind: "Response", 113 | modes: [ 114 | { 115 | mode: "Status", 116 | content: `Status: ${res.status}\n\nStatus Text: ${res['statusText']}`, 117 | contentType: "text/markdown", 118 | }, 119 | ], 120 | }; 121 | 122 | const _ct = res.headers['Content-Type'] 123 | ? res.headers['Content-Type'] 124 | : res.headers['content-type'] 125 | ? res.headers['content-type'] 126 | : 'json'; 127 | 128 | const ct = _ct === 'application/json' || _ct === 'application/hal+json' ? 'json' : _ct; 129 | 130 | if (res.text) { 131 | ret.modes.push({ 132 | mode: "Body", 133 | content: ct === 'json' ? JSON.stringify(res.body, null, 2) : res.text, 134 | contentType: ct 135 | }); 136 | } 137 | 138 | ret.modes.push({ 139 | mode: "Headers", 140 | content: res.headers ? JSON.stringify(res.headers, null, 2) : "", 141 | contentType: "json", 142 | }); 143 | 144 | return ret; 145 | }) 146 | .catch((error: ResponseError) => { 147 | const method = error.response 148 | ? error.response["req"] 149 | ? error.response["req"]["method"] 150 | ? error.response["req"]["method"] 151 | : "" 152 | : "" 153 | : ""; 154 | 155 | const ret: MultiModalResponse = { 156 | metadata: { name: `🔥 ${method} ${url}` }, 157 | kind: "Error", 158 | modes: [], 159 | }; 160 | 161 | if (error.status) { 162 | ret.modes.push({ 163 | mode: "Status", 164 | content: `Status: ${error.status}\n\nStatus Text: ${error.response ? error.response['statusText'] : ''}`, 165 | contentType: "text/markdown", 166 | }); 167 | } else { 168 | ret.modes.push({ 169 | mode: "Status", 170 | content: 171 | "Connection refused\n\n" + 172 | "Possible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the server HTTPS certificate is invalid, etc.\n\n" + 173 | "More information could be in the console log (for Mac `Options+Command+I`, other OS: `Ctrl+Alt+I`)", 174 | contentType: "text/markdown", 175 | }); 176 | } 177 | 178 | if (error["body"]) { 179 | ret.modes.push({ 180 | mode: "Response body", 181 | content: JSON.stringify(error["body"], null, 2), 182 | contentType: "json", 183 | }); 184 | } 185 | 186 | if (error.response && error.response.headers) { 187 | ret.modes.push({ 188 | mode: "Headers", 189 | content: JSON.stringify(error.response.headers, null, 2), 190 | contentType: "json", 191 | }); 192 | } 193 | 194 | ret.modes.push({ 195 | mode: "Details", 196 | content: JSON.stringify(error, null, 2), 197 | contentType: "json", 198 | }); 199 | 200 | return ret; 201 | }); 202 | } 203 | } 204 | 205 | export async function url( 206 | { argvNoOptions: args }: Arguments, 207 | req: UrlRequest, 208 | usage: UsageModel 209 | ): Promise { 210 | if (!args || args.length < 3) { 211 | throw new UsageError({ message: errorMsg(usage), usage: usage }); 212 | } else { 213 | const uri = args[2]; 214 | const urlPrefix = Store().getItem("url"); 215 | 216 | if (!urlPrefix) { 217 | return 'url not set. use "set url"'; 218 | } 219 | 220 | const uriSlashPrefixed = uri.length > 0 && uri[0] === "/"; 221 | const urlTrailingSlash = urlPrefix[urlPrefix.length - 1] === "/"; 222 | 223 | const url = 224 | uriSlashPrefixed && urlTrailingSlash 225 | ? `${urlPrefix.substring(urlPrefix.length - 1)}${uri}` 226 | : !uriSlashPrefixed && !urlTrailingSlash 227 | ? `${urlPrefix}/${uri}` 228 | : `${urlPrefix}${uri}`; 229 | 230 | const _headers = JSON.parse( 231 | Store().getItem("headers") ? Store().getItem("headers") : "[]" 232 | ); 233 | const headers = {}; 234 | 235 | for (var i = 0; i < _headers.length; i++) { 236 | headers[_headers[i]["k"]] = _headers[i]["v"]; 237 | } 238 | 239 | if (!headers["Content-Type"]) { 240 | headers["Content-Type"] = "application/json"; 241 | } 242 | 243 | if (!headers["Accept"]) { 244 | headers["Accept"] = "application/json"; 245 | } 246 | 247 | const _req = req(url); 248 | 249 | if (Store().getItem("id") && Store().getItem("pwd")) { 250 | _req.auth(Store().getItem("id"), Store().getItem("pwd")); 251 | } 252 | 253 | return _req 254 | .set(headers) 255 | .on("error", (err) => { 256 | debug("error", err); 257 | }) 258 | .then((res: Response) => { 259 | debug(res); 260 | 261 | const method = res["req"] 262 | ? res["req"]["method"] 263 | ? res["req"]["method"] 264 | : "" 265 | : ""; 266 | 267 | const ret: MultiModalResponse = { 268 | metadata: { name: `🐱 ${method} ${url}` }, 269 | modes: [], 270 | kind: "Response", 271 | }; 272 | 273 | const _ct = res.headers['Content-Type'] 274 | ? res.headers['Content-Type'] 275 | : res.headers['content-type'] 276 | ? res.headers['content-type'] 277 | : 'json'; 278 | 279 | const mediaType = _ct.split(';')[0] 280 | const ct = mediaType === 'application/json' || mediaType === 'application/hal+json' ? 'json' : mediaType; 281 | 282 | if (res.text) { 283 | ret.modes.push({ 284 | mode: "Body", 285 | content: ct === 'json' ? JSON.stringify(res.body, null, 2) : res.text, 286 | contentType: ct 287 | }); 288 | } 289 | 290 | ret.modes.push( 291 | { 292 | mode: "Status", 293 | content: `Status: ${res.status}\n\nStatus Text: ${res["statusText"]}`, 294 | contentType: "text/markdown", 295 | }, 296 | { 297 | mode: "Headers", 298 | content: res.headers ? JSON.stringify(res.headers, null, 2) : "", 299 | contentType: "json", 300 | } 301 | ); 302 | 303 | return ret; 304 | }) 305 | .catch((error: ResponseError) => { 306 | debug(JSON.stringify(error)); 307 | 308 | const method = error.response 309 | ? error.response["req"] 310 | ? error.response["req"]["method"] 311 | ? error.response["req"]["method"] 312 | : "" 313 | : "" 314 | : ""; 315 | 316 | const ret: MultiModalResponse = { 317 | metadata: { name: `🔥 ${method} ${url}` }, 318 | kind: "Error", 319 | modes: [], 320 | }; 321 | 322 | if (error.status) { 323 | ret.modes.push({ 324 | mode: "Status", 325 | content: `Status: ${error.status}\n\nStatus Text: ${error.response ? error.response['statusText'] : ''}`, 326 | contentType: "text/markdown", 327 | }); 328 | } else { 329 | ret.modes.push({ 330 | mode: "Status", 331 | content: 332 | "Connection refused\n\n" + 333 | "Possible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the server HTTPS certificate is invalid, etc.\n\n" + 334 | "More information could be in the console log (for Mac `Options+Command+I`, other OS: `Ctrl+Alt+I`)", 335 | contentType: "text/markdown", 336 | }); 337 | } 338 | 339 | if (error.response && error.response.body) { 340 | ret.modes.push({ 341 | mode: "Response body", 342 | content: JSON.stringify(error.response.body, null, 2), 343 | contentType: "json", 344 | }); 345 | } 346 | 347 | if (error.response && error.response.headers) { 348 | ret.modes.push({ 349 | mode: "Headers", 350 | content: JSON.stringify(error.response.headers, null, 2), 351 | contentType: "json", 352 | }); 353 | } 354 | 355 | ret.modes.push({ 356 | mode: "Details", 357 | content: JSON.stringify(error, null, 2), 358 | contentType: "json", 359 | }); 360 | 361 | return ret; 362 | }); 363 | } 364 | } 365 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/reset-auth.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { Arguments, Registrar, Store, UsageError } from "@kui-shell/core"; 18 | import emitter from '../utils/Emitter'; 19 | import { setUrlUsage as usage, errorMsg } from "../usage"; 20 | 21 | const resetHeadersCmd = async ({ argvNoOptions: args }: Arguments) => { 22 | if (!args || args.length < 2) { 23 | throw new UsageError({ message: errorMsg(usage), usage: usage }); 24 | } else { 25 | Store().removeItem("id"); 26 | Store().removeItem("pwd"); 27 | emitter.emit('/current/id/change', undefined); 28 | 29 | return "ok"; 30 | } 31 | }; 32 | 33 | export default async (registrar: Registrar) => { 34 | registrar.listen("/h/reset/auth", resetHeadersCmd, { 35 | usage: usage, 36 | noAuthOk: true 37 | }); 38 | }; 39 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/reset-headers.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { Arguments, Registrar, Store, UsageError } from "@kui-shell/core"; 18 | 19 | import { setUrlUsage as usage, errorMsg } from "../usage"; 20 | 21 | const resetHeadersCmd = async ({ argvNoOptions: args }: Arguments) => { 22 | if (!args || args.length < 2) { 23 | throw new UsageError({ message: errorMsg(usage), usage: usage }); 24 | } else { 25 | Store().setItem("headers", '[]'); 26 | 27 | return "ok"; 28 | } 29 | }; 30 | 31 | export default async (registrar: Registrar) => { 32 | registrar.listen("/h/reset/headers", resetHeadersCmd, { 33 | usage: usage, 34 | noAuthOk: true 35 | }); 36 | }; 37 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/set-auth.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { Registrar, Store } from "@kui-shell/core"; 18 | import { setAuthUsage as usage } from "../usage"; 19 | import { default as PasswordForm } from '../../view/PasswordForm' 20 | import emitter from '../utils/Emitter'; 21 | import Debug from "debug"; 22 | const debug = Debug("plugins/plugin-http-shell/set-auth"); 23 | 24 | const setAuth = () => { 25 | return { react: PasswordForm({ cid: Store().getItem("id"), 26 | cpwd: Store().getItem("id"), 27 | id: e => { Store().setItem("id", e); emitter.emit('/current/id/change', e); } , 28 | pwd: e => Store().setItem("pwd", e) }) } 29 | }; 30 | 31 | 32 | export default async (registrar: Registrar) => { 33 | registrar.listen("/h/set/auth", setAuth, { 34 | usage, 35 | noAuthOk: true 36 | }); 37 | }; 38 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/set-header.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { Arguments, Registrar, Store, UsageError } from "@kui-shell/core"; 18 | 19 | import { setHeaderUsage as usage, errorMsg } from "../usage"; 20 | 21 | const setHeaderCmd = async ({ argvNoOptions: args }: Arguments) => { 22 | if (!args || args.length < 5) { 23 | throw new UsageError({ message: errorMsg(usage), usage: usage }); 24 | } else { 25 | let _headers = Store().getItem("headers"); 26 | 27 | if (!_headers) { 28 | _headers = '[]'; 29 | } 30 | 31 | const headers = JSON.parse(_headers); 32 | 33 | headers.push({k: args[3], v: args[4]}); 34 | 35 | Store().setItem("headers", JSON.stringify(headers)); 36 | 37 | return "ok"; 38 | } 39 | }; 40 | 41 | export default async (registrar: Registrar) => { 42 | registrar.listen("/h/set/header", setHeaderCmd, { 43 | usage: usage, 44 | noAuthOk: true 45 | }); 46 | }; 47 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/cmds/set-url.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { Arguments, Registrar, Store, UsageError } from "@kui-shell/core"; 18 | 19 | import { setUrlUsage as usage, errorMsg } from "../usage"; 20 | 21 | // import Debug from "debug"; 22 | // const debug = Debug("plugins/plugin-http-shell/set-url"); 23 | 24 | const setUrlCmd = async ({ argvNoOptions: args }: Arguments) => { 25 | if (!args || args.length < 4) { 26 | throw new UsageError({ message: errorMsg(usage), usage: usage }); 27 | } else { 28 | const url = `${args[3]}`; 29 | 30 | if (url.startsWith('http://') || url.startsWith('https://')) { 31 | Store().setItem("url", url); 32 | return url; 33 | } else if (url.length > 2 && url[0] === ':' && !isNaN(Number(url.substring(1)))) { 34 | Store().setItem("url", `http://localhost${url}`); 35 | return `http://localhost${url}` 36 | } else if (url.length > 0 && url[0] !== ':') { 37 | Store().setItem("url", `http://${url}`); 38 | return `http://${url}`; 39 | } else { 40 | return 'invalid URL'; 41 | } 42 | } 43 | }; 44 | 45 | export default async (registrar: Registrar) => { 46 | registrar.listen('/h/set/url', setUrlCmd, { 47 | usage: usage, 48 | noAuthOk: true 49 | }); 50 | }; 51 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/usage.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { UsageModel } from "@kui-shell/core"; 18 | 19 | export const setAuthUsage: UsageModel = { 20 | title: "set auth", 21 | header: "opens a dialog to sets the basic authentication credentials to use in further requests", 22 | example: "set auth", 23 | detailedExample: [ 24 | { 25 | command: "set auth", 26 | docs: 'opens a dialog to sets the basic authentication credentials to use in further requests' 27 | } 28 | ] 29 | // optional: [] 30 | }; 31 | 32 | export const setUrlUsage: UsageModel = { 33 | title: "h set url ", 34 | header: "sets the base-url for requests", 35 | example: "h set url http://127.0.0.1:8080", 36 | detailedExample: [ 37 | { 38 | command: "h set url https://example.com", 39 | docs: "sets the base-url to https://example.com" 40 | }, 41 | { 42 | command: "h set url 127.0.0.1:8080", 43 | docs: "sets the base-url to http://127.0.0.1:8080" 44 | }, 45 | { 46 | command: "h set url :8080", 47 | docs: "sets the base-url to http://127.0.0.1:8080" 48 | } 49 | ], 50 | required: [ 51 | { name: "url", docs: "the base-url to use in further requests", file: false, positional: true } 52 | ] 53 | }; 54 | 55 | export const setHeaderUsage: UsageModel = { 56 | title: "h set header ", 57 | header: "sets the header for requests", 58 | example: "h set header Content-Type application/json", 59 | detailedExample: [ 60 | { 61 | command: "h set header Content-Type application/json", 62 | docs: "sets the Content-Type request header" 63 | } 64 | ], 65 | required: [ 66 | { name: "name", docs: "the name of the header to set", file: false, positional: true }, 67 | { name: "value", docs: "the value of the header", file: false, positional: true } 68 | ] 69 | }; 70 | 71 | export const getHeadersUsage: UsageModel = { 72 | title: "h get headers", 73 | header: "prints the headers", 74 | example: "h get headers", 75 | detailedExample: [ 76 | { 77 | command: "h get headers", 78 | docs: "prints the headers" 79 | } 80 | ], 81 | required: [ 82 | ] 83 | }; 84 | 85 | export const resetHeadersUsage: UsageModel = { 86 | title: 'h reset headers', 87 | header: 'cleart all the headers that were previously setset via command "set header"', 88 | example: 'h reset headers', 89 | detailedExample: [ 90 | { 91 | command: 'h reset headers', 92 | docs: 'cleart all the headers that were previously setset via command "set header"' 93 | } 94 | ], 95 | required: [ 96 | ] 97 | }; 98 | 99 | export const getUsage: UsageModel = { 100 | title: "h get ", 101 | header: "executes a GET request", 102 | example: "h get messages", 103 | detailedExample: [ 104 | { 105 | command: "h get messages", 106 | docs: 107 | 'executes the request GET /messages, where base-url is set via the command "set url"' 108 | } 109 | ], 110 | required: [ 111 | { 112 | name: "url", 113 | docs: "the URI of the resource to get", 114 | file: false, 115 | positional: true 116 | } 117 | ] 118 | }; 119 | 120 | export const optionsUsage: UsageModel = { 121 | title: "h options ", 122 | header: "executes an OPTIONS request", 123 | example: "h options messages", 124 | detailedExample: [ 125 | { 126 | command: "h options messages", 127 | docs: 128 | 'executes the request OPTIONS /messages, where base-url is set via the command "set url"' 129 | } 130 | ], 131 | required: [ 132 | { 133 | name: "url", 134 | docs: "the URI of the resource to inquiry", 135 | file: false, 136 | positional: true 137 | } 138 | ] 139 | }; 140 | 141 | export const deleteUsage: UsageModel = { 142 | title: "h delete ", 143 | header: "executes a DELETE request", 144 | example: "h delete messages", 145 | detailedExample: [ 146 | { 147 | command: "h delete messages", 148 | docs: 149 | 'executes the request DELETE /messages, where base-url is set via the command "set url"' 150 | } 151 | ], 152 | required: [ 153 | { 154 | name: "url", 155 | docs: "the URI of the resource to DELETE", 156 | file: false, 157 | positional: true 158 | } 159 | ] 160 | }; 161 | 162 | export const postUsage: UsageModel = { 163 | title: "h post ", 164 | header: "executes a POST request", 165 | example: "h post messages newMessage.json", 166 | detailedExample: [ 167 | { 168 | command: "h post /coll data.json", 169 | docs: 170 | 'executes the request POST /messages, where base-url is set via the command "set url" sending the content of the file newMessage.json as the request body' 171 | } 172 | ], 173 | required: [ 174 | { 175 | name: "url", 176 | docs: "the URI of the resource to POST", 177 | file: false, 178 | positional: true 179 | }, 180 | { 181 | name: "file", 182 | docs: "the file containing the request body to POST", 183 | file: false, 184 | positional: true 185 | } 186 | ] 187 | }; 188 | 189 | export const putUsage: UsageModel = { 190 | title: "h put ", 191 | header: "executes a PUT request", 192 | example: "h put messages/id message.json", 193 | detailedExample: [ 194 | { 195 | command: "h put messages/id message.json", 196 | docs: 197 | 'executes the request PUT /messages/id, where base-url is set via the command "set url" sending the content of the file message.json as the request body' 198 | } 199 | ], 200 | required: [ 201 | { 202 | name: "url", 203 | docs: "the URI of the resource to PUT", 204 | file: false, 205 | positional: true 206 | }, 207 | { 208 | name: "file", 209 | docs: "the file containing the request body to PUT", 210 | file: false, 211 | positional: true 212 | } 213 | ] 214 | }; 215 | 216 | export const patchUsage: UsageModel = { 217 | title: "h patch ", 218 | header: "executes a PATCH request", 219 | example: "h patch messages/id message.json", 220 | detailedExample: [ 221 | { 222 | command: "h patch messages/id message.json", 223 | docs: 224 | 'executes the request PATCH /messages/id, where base-url is set via the command "set url" sending the content of the file message.json as the request body' 225 | } 226 | ], 227 | required: [ 228 | { 229 | name: "url", 230 | docs: "the URI of the resource to PATCH", 231 | file: false, 232 | positional: true 233 | }, 234 | { 235 | name: "file", 236 | docs: "the file containing the request body to PATCH", 237 | file: false, 238 | positional: true 239 | } 240 | ] 241 | }; 242 | 243 | /** 244 | * Usage model for the HTTP Shell plugin 245 | * 246 | */ 247 | export const toplevelUsage: UsageModel = { 248 | title: "HTTP Shell", 249 | header: "Commands to execute HTTP Shell requests", 250 | available: [ 251 | { command: "h set auth", docs: "sets the basic authentication credentials" }, 252 | { command: "h set url", docs: "sets the base-url" }, 253 | { command: "h get url", docs: "prints the base-url" }, 254 | { command: "h get ", docs: "executes the GET request to url=+" }, 255 | { command: "h post ", docs: "executes the POST request to url=+" } 256 | ] 257 | 258 | // children: { a: { route: '/set/auth', usage: setAuthUsage } } 259 | }; 260 | 261 | export function errorMsg(model: UsageModel): string { 262 | return ` ${model.header} 263 | usage: ${model.title} 264 | example: 265 | > ${model.detailedExample[0].command} 266 | ${model.detailedExample[0].docs}` 267 | } -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/lib/utils/Emitter.ts: -------------------------------------------------------------------------------- 1 | const { EventEmitter } = require('events'); 2 | 3 | const emitter = new EventEmitter(); 4 | 5 | export default emitter; -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/plugin.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { Registrar } from '@kui-shell/core'; 18 | import setauth from './lib/cmds/set-auth'; 19 | import seturl from './lib/cmds/set-url'; 20 | import geturl from './lib/cmds/get-url'; 21 | import get from './lib/cmds/get'; 22 | import post from './lib/cmds/post'; 23 | import put from './lib/cmds/put'; 24 | import patch from './lib/cmds/patch'; 25 | import del from './lib/cmds/delete'; 26 | import options from './lib/cmds/options'; 27 | import setheader from './lib/cmds/set-header'; 28 | import getheaders from './lib/cmds/get-headers'; 29 | import helpshell from './lib/cmds/help-http-shell'; 30 | import resetheaders from './lib/cmds/reset-headers'; 31 | import resetauth from './lib/cmds/reset-auth'; 32 | // import help from './lib/cmds/help'; 33 | 34 | // import Debug from "debug"; 35 | 36 | // const debug = Debug("plugins/plugin-http-shell"); 37 | 38 | export default async (registrar: Registrar) => { 39 | await Promise.all([ 40 | // help(registrar, {usage: toplevelUsage} ), 41 | helpshell(registrar), 42 | setauth(registrar), 43 | resetauth(registrar), 44 | seturl(registrar), 45 | geturl(registrar), 46 | get(registrar), 47 | post(registrar), 48 | put(registrar), 49 | patch(registrar), 50 | del(registrar), 51 | options(registrar), 52 | setheader(registrar), 53 | getheaders(registrar), 54 | resetheaders(registrar) 55 | ]); 56 | }; 57 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/preload.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/view/BasicAuthenticationWidget.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import * as React from "react"; 18 | import { 19 | Store, 20 | wireToStandardEvents, 21 | unwireToStandardEvents 22 | } from "@kui-shell/core"; 23 | import { TextWithIconWidget } from "@kui-shell/plugin-client-common"; 24 | import { Icons } from "@kui-shell/plugin-client-common" 25 | import Debug from "debug"; 26 | import emitter from '../lib/utils/Emitter'; 27 | const debug = Debug("plugins/plugin-http-shell/basic-auth-widget"); 28 | 29 | interface Props { 30 | } 31 | 32 | interface State { 33 | id: string 34 | } 35 | 36 | export default class BasicAuthenticationWidget extends React.PureComponent { 37 | private readonly handler = this.currentId.bind(this); 38 | 39 | public constructor(props: Props) { 40 | super(props); 41 | 42 | this.state = { 43 | id: Store().getItem("id") ? Store().getItem("id") : "not set" 44 | }; 45 | } 46 | 47 | /** 48 | * Check the current basic auth id 49 | * 50 | */ 51 | private async currentId() { 52 | this.setState({ 53 | id: Store().getItem("id") ? Store().getItem("id") : "not set" 54 | }); 55 | } 56 | 57 | public listener = (e) => this.currentId(); 58 | 59 | /** 60 | * Once we have mounted, we immediately check the state, 61 | * and schedule an update based on standard REPL events. 62 | * 63 | */ 64 | public componentDidMount() { 65 | emitter.on('/current/id/change', this.listener); 66 | this.handler(); 67 | } 68 | 69 | /** Make sure to unsubscribe! */ 70 | public componentWillUnmount() { 71 | emitter.removeListener('/current/id/change', this.listener); 72 | } 73 | 74 | public render() { 75 | return ( 76 | 84 | 85 | 86 | ); 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/view/CurrentUrlWidget.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import * as React from "react"; 18 | import { 19 | Store, 20 | wireToStandardEvents, 21 | // unwireToStandardEvents 22 | } from "@kui-shell/core"; 23 | import { TextWithIconWidget } from "@kui-shell/plugin-client-common"; 24 | import { Icons } from "@kui-shell/plugin-client-common" 25 | 26 | interface Props { 27 | className?: string; 28 | } 29 | 30 | interface State { 31 | url: string 32 | } 33 | 34 | export default class CurrentUrlWidget extends React.PureComponent { 35 | private readonly handler = this.reportCurrentUrl.bind(this); 36 | 37 | public constructor(props: Props) { 38 | super(props); 39 | 40 | this.state = { 41 | url: Store().getItem("url") ? Store().getItem("url") : "no URL set" 42 | }; 43 | } 44 | 45 | /** 46 | * Check the current working directory 47 | * 48 | */ 49 | private async reportCurrentUrl() { 50 | this.setState({ 51 | url: Store().getItem("url") ? Store().getItem("url") : "no URL set" 52 | }); 53 | } 54 | 55 | /** 56 | * Once we have mounted, we immediately check the state, 57 | * and schedule an update based on standard REPL events. 58 | * 59 | */ 60 | public componentDidMount() { 61 | this.handler(); 62 | wireToStandardEvents(this.handler); 63 | } 64 | 65 | /** Make sure to unsubscribe! */ 66 | public componentWillUnmount() { 67 | // unwireToStandardEvents(this.handler); 68 | } 69 | 70 | public render() { 71 | return ( 72 | 81 | 82 | 83 | ); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/view/HelpWidget.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import * as React from "react"; 18 | import { TextWithIconWidget } from "@kui-shell/plugin-client-common"; 19 | import { Icons } from "@kui-shell/plugin-client-common" 20 | 21 | interface Props { 22 | className?: string; 23 | } 24 | 25 | export default class HelpWidget extends React.PureComponent { 26 | public render() { 27 | return ( 28 | 37 | 38 | 39 | ); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /plugins/plugin-http-shell/src/view/PasswordForm.tsx: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 SoftInstigate Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import * as React from "react"; 18 | import { Form, FormGroup, TextInput, ToastNotification } from 'carbon-components-react'; 19 | import Debug from "debug"; 20 | const debug = Debug("plugins/plugin-http-shell/password-form"); 21 | 22 | interface Props { 23 | cid: string; 24 | cpwd: string; 25 | 26 | id: Function; 27 | pwd: Function; 28 | } 29 | 30 | export default function PasswordComponentSpi(props: Props): React.ReactElement { 31 | return 32 | } 33 | 34 | class PasswordComponent extends React.PureComponent { 35 | public render() { 36 | return ( 37 | 38 |
39 | 40 | this.props.id(e.target.value) } 45 | required 46 | /> 47 | this.props.pwd(e.target.value) } 53 | required 54 | /> 55 | 56 |
57 |
58 | ) 59 | } 60 | } -------------------------------------------------------------------------------- /plugins/plugin-http-shell/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../node_modules/@kui-shell/builder/tsconfig-base.json", 3 | "include": ["src/**/*"], 4 | "compilerOptions": { 5 | "composite": true, 6 | "jsx": "react", 7 | "outDir": "mdist", 8 | "rootDir": "src", 9 | "baseUrl": "." 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /src/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAA;AAErD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;AAC/C,IAAI,OAAO,EAAE;IACX,MAAM,CAAC,oBAAC,GAAG,OAAG,EAAE,OAAO,CAAC,CAAA;CACzB"} -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./node_modules/@kui-shell/builder/tsconfig-base.json", 3 | "references": [ 4 | { "path": "./plugins/plugin-http-shell" }, 5 | { "path": "./plugins/plugin-client-default" } 6 | ] 7 | } 8 | --------------------------------------------------------------------------------