npm explorer

jquery.terminal

v2.45.2TypeScript

jQuery Terminal Emulator is a plugin for creating command line interpreters in your applications.

terminalemulatorpromptconsolekeyboardlinuxunixbashtypingtype
0/weekUpdated 6 months agoMITUnpacked: 2.7 MB
Published by Jakub T. Jankiewicz
npm install jquery.terminal
RepositoryHomepagenpm


alt="ASCII Art that represent text jQuery Terminal - JavaScript Library for Web Based Terminal Emulators" />

JavaScript Library for Web Based Terminal Emulators

![npm](https://www.npmjs.com/package/jquery.terminal)
!bower
![Build and test](https://github.com/jcubic/jquery.terminal/actions/workflows/build.yaml)
![Coverage Status](https://coveralls.io/github/jcubic/jquery.terminal?branch=master)
!NPM Downloads
![jsDelivr Downloads](https://www.jsdelivr.com/package/npm/jquery.terminal)
![Paid Support](https://support.jcubic.pl/)
![LICENSE MIT](https://github.com/jcubic/jquery.terminal/blob/master/LICENSE)

$3

jQuery Terminal Emulator is a plugin for creating command line interpreters in
your applications. It can automatically call JSON-RPC service when a user types
commands or you can provide your own function in which you can parse user
commands. It's ideal if you want to provide additional functionality for power
users. It can also be used to debug your application.

You can use this JavaScript library to create a web based terminal on any website.

Because with this library you need to code all the commands yourself, you can call it fake terminal emulator. In contrast to library that will give you access to real terminal like online SSH. To have real online SSH I suggest to use xterm.js library.

$3

* You can create an interpreter for your JSON-RPC service with one line
of code (just use url as first argument).

* Support for authentication (you can provide functions when users enter
login and password or if you use JSON-RPC it can automatically call
login function on the server and pass token to all functions).

* Stack of interpreters - you can create commands that trigger additional
interpreters (eg. you can use couple of JSON-RPC service and run them
when user type command)

* Command Tree - you can use nested objects. Each command will invoke a
function (own REPL), if the value is an object it will create a new
interpreter and use the function from that object as commands. You can
use as many nested object/commands as you like. If the value is a string
it will create JSON-RPC service.

* Support for command line history, it uses Local Storage if possible.

* Support for tab completion.

* Includes keyboard shortcut from bash like CTRL+A, CTRL+D, CTRL+E etc.

* Bash reverse history search (CTRL+R / CTRL+G).

* You can create and overwrite existing keyboard shortcuts.

* Multiple terminals on one page (every terminal can have different
commands, its own authentication function and its own command history).

* It catches all exceptions and displays error messages in the terminal
(you can see errors in your javascript and php code in terminal if they
are in the interpreter function).

* Using extended commands you can change working of the terminal without
touching the front-end code (using echo method and terminal formatting
like syntax). Read more in
docs.

* Easy way to change the style of the terminal (like color or cursor animation).

* Chinese and Japanese character support.

* You can use ASCII forms and collect information from users.

* Animation (including typing effect and Canvas canvas adapter).

* Support ANSI escapes codes.

* Experimental mobile support, see open issues

$3

You can test current version at this URL:

* https://jcubic.github.io/jquery.terminal/

or if it doesn't use latest version (because of jsDelivr cache) you can force it with this URL:

* https://jcubic.github.io/jquery.terminal/?ver=2.45.2

And development version using:

* https://jcubic.github.io/jquery.terminal/?ver=devel

You can use any version you want, everything what jsDelivr GH API accepts.

$3

Include jQuery library, you can use cdn from https://jquery.com/download/

or use jsDelivr:

``html

`

Then include js/jquery.terminal-2.45.2.min.js and css/jquery.terminal-2.45.2.min.css

You can grab the files from CDN:

`html


`

or

`html


`

If you always want latest version, you can get it from unpkg without specifying version,
it will redirect to the latest ones:


`html


`

or jsDelivr that is bit faster:

`html


`


#### Bleeding Edge Version

If you want to test bleeding edge, development version of jQuery Terminal. You can use those files:

`html


`

but it's not refreshed as fast as rawgit was, because it's CDN and need to be propagated to different servers.

#### Keyboard key polyfill

NOTE: From version 1.0.0 if you want to support old browsers then you'll need to use key event property polyfill. You can check the support for it on can I use.

`html

`

or

`html

`

#### Command Line


You can also install jQuery Terminal using command line, from bower repository:

`
bower install jquery.terminal
`

or npm registry:

`
npm install jquery.terminal
`


$3

This is code that uses low level function, that gives you full control of the commands,
just pass anything that the user types into a function.

`javascript
jQuery(function($, undefined) {
$('#term_demo').terminal(function(command) {
if (command !== '') {
var result = window.eval(command);
if (result != undefined) {
this.echo(String(result));
}
}
}, {
greetings: 'Javascript Interpreter',
name: 'js_demo',
height: 200,
width: 450,
prompt: 'js> '
});
});
`

Here is a higher level call, using an object as an interpreter, By default the terminal will
parse commands that a user types and replace number like strings with real numbers
regex with regexes and process escape characters in double quoted strings.

`javascript
$('body').terminal({
cat: function(width = 200, height = 300) {
return $(
);
},
title: function() {
return fetch('https://terminal.jcubic.pl')
.then(r => r.text())
.then(html => html.match(/([^>]+)<\/title>/)[1]);<br /> }<br />}, {<br /> checkArity: false,<br /> greetings: 'My Terminal\n'<br />});<br /></code>`<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"></p><p class="my-3">And more advanced example:</p><p class="my-3"></code>`<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono">javascript<br />jQuery(function($, undefined) {<br /> $('#term_demo').terminal({<br /> add: function(a, b) {<br /> this.echo(a + b);<br /> },<br /> re: function(re, str) {<br /> if (re instanceof RegExp && re.test(str)) {<br /> this.echo(str + ' [[;green;]match]');<br /> }<br /> },<br /> foo: 'foo.php',<br /> bar: {<br /> sub: function(a, b) {<br /> this.echo(a - b);<br /> }<br /> }<br /> }, {<br /> height: 200,<br /> width: 450,<br /> prompt: 'demo> '<br /> });<br />});<br /></code>`<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"></p><p class="my-3">command </code>add 2 2<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> will display </code>4<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> (not </code>22<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono">).</p><p class="my-3">Command </code>foo<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> will change prompt to </code>foo><code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> and each new command will execute<br />json-rpc method from foo.php script.</p><p class="my-3">command </code>bar<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> will change the prompt to </code>bar> <code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> and if you type </code>sub 10 2<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> it will display 8.<br />To exit from bar nested command you can type </code>exit<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> or press CTRL+D.</p><p class="my-3">command </code>re /^foo/ foo-bar<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> will echo: "foo-bar match" where "match" will be green.</p><p class="my-3">By default arguments are required but you can disable the check like this:</p><p class="my-3"></code>`<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono">javascript<br />jQuery(function($, undefined) {<br /> $('#term_demo').terminal({<br /> add: function(...args) {<br /> this.echo(args.reduce((a,b) => a + b));<br /> }<br /> }, {<br /> checkArity: false<br /> });<br />});<br /></code>`<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"></p><p class="my-3">And add command will accept any number of argments and it will sum them up (if they are numbers).</p><p class="my-3">You can create JSON-RPC interpreter with authentication in just one line:</p><p class="my-3"></code>`<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono">javascript<br />$('#term_demo').terminal('service.php', {login: true});<br /></code>`<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"></p><p class="my-3">The rest of the code can be on the server, so you can write fully working application,<br />without any front-end, that can be tested in browser.</p><p class="my-3">First argument to terminal can also be array with objects strings and functions, with<br />one requirement, that only one function can be used as last fallback for commands that was<br />not found in RPC or in objects.</p><p class="my-3"></code>`<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono">javascript<br />jQuery(function($, undefined) {<br /> $('#term_demo').terminal([{<br /> add: function(...args) {<br /> this.echo(args.reduce((a,b) => a + b));<br /> }<br /> } 'foo.php', function(command) {<br /> this.echo("You've typed " + command, {formatters: false, exec: false});<br /> }], {<br /> checkArity: false<br /> });<br />});<br /></code>`<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"></p><p class="my-3"><br />More examples <a href="http://terminal.jcubic.pl/examples.php" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">here</a>. You can also check<br /><a href="http://terminal.jcubic.pl/api_reference.php" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">Full Documentation</a> or<br /><a href="https://github.com/jcubic/jquery.terminal/wiki/Getting-Started" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">Getting Started Guide on Wiki</a>.</p><p class="my-3"><h3 class="text-lg font-medium mt-4 mb-2">$3</h3></p><p class="my-3">If you want to start with jQuery Terminal you can look at those tutorials:</p><p class="my-3">* <a href="https://itnext.io/how-to-create-interactive-terminal-like-website-888bb0972288" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">How to create interactive terminal like website?</a> (beginner level)<br />* <a href="https://www.freecodecamp.org/news/how-to-create-interactive-terminal-based-portfolio/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">How to Create an Interactive Terminal-Based Portfolio</a> (intermediate level)</p><p class="my-3">The first tutorial is have all the basics, even if you're new to programming and JavaScript. The<br />second one explain everything but it assume that you know the basics. If you pick the second and and<br />stuck you can reference the first one. It's worth checking the first one anyway.</p><p class="my-3">TL;DR: You can also use this <a href="https://github.com/jcubic/terminal-website-template" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">Terminal Website Template</a>.</p><p class="my-3"><h3 class="text-lg font-medium mt-4 mb-2">$3</h3></p><p class="my-3">Because of security in version 1.20.0 links with protocols different than ftp or http(s) (it was<br />possible to enter javascript protocol, that could lead to XSS if author of the app echo user input<br />and save it in DB) was turn off by default. To enable it, you need to use </code>anyLinks: true<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> option.</p><p class="my-3">In version 1.21.0 executing terminal methods using extendend commands </code>[[ terminal::clear() ]]<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> was<br />also disabled by default because attacker (depending on your application) could execute<br /></code>terminal::echo<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> with raw option to enter any html and execute any javascript. To enable this<br />feature from this version you need to use </code>invokeMethods: true<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> option.</p><p class="my-3">The features are safe to enable, if you don't save user input in DB and don't echo it back to<br />different users (like with chat application). It's also safe if you escape formatting before you<br />echo stuff.</p><p class="my-3">If you don't save user input in DB but allow to echo back what user types and have enabled<br /></code>execHash<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> options, you may have reflected XSS vulnerability if you enable this features. If you<br />escape formatting this options are also safe.</p><p class="my-3"><strong>NOTE</strong>: To disable exec if you have </code>execHash<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> (or echo stuff from users with </code>invokeMethods: true<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono">),<br />you can also set option </code>{exec: false}<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> to your </code>echo<code class="bg-muted px-1 py-0.5 rounded text-sm font-mono"> call and use it only when you get<br />values from server (not from DB indireclty from users). If you do this you will be able to echo stuff<br />from users and execute terminal methods from server (this feature is mostly done just for that).</p><p class="my-3"><h3 class="text-lg font-medium mt-4 mb-2">$3</h3></p><p class="my-3">If you want to contribute read <a href="CONTRIBUTING.md" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">CONTRIBUTING.md</a> first. Here are project contributors:</p><p class="my-3"><!-- CONTRIBUTORS-START --><br />| <a href="https://jakub.jankiewicz.org/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/280241?v=4" width="100px;"/><br /><sub>Jakub T. Jankiewicz</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=jcubic" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/cowuake" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/49900772?v=4" width="100px;"/><br /><sub>Riccardo Mura</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=cowuake" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/Neyxo" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/19851053?v=4" width="100px;"/><br /><sub>Jean-Michel Carrel</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=Neyxo" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/kid1412z" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/1208327?v=4" width="100px;"/><br /><sub>kid1412z</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=kid1412z" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/ml1nk" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/4943440?v=4" width="100px;"/><br /><sub>Marcel Link</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=ml1nk" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="http://sebastien.warin.fr" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/6674275?v=4" width="100px;"/><br /><sub>Sébastien Warin</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=sebastienwarin" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/ChrisJohnRyan" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/8646106?v=4" width="100px;"/><br /><sub>Christopher John Ryan</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=ChrisJohnRyan" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> |<br />| :---: | :---: | :---: | :---: | :---: | :---: | :---: |<br />| <a href="https://github.com/johanjordaan" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/715580?v=4" width="100px;"/><br /><sub>Johan</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=johanjordaan" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://snyk.io" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/19733683?v=4" width="100px;"/><br /><sub>Snyk bot</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=snyk-bot" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/fschaefer" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/273194?v=4" width="100px;"/><br /><sub>Florian Schäfer</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=fschaefer" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="ducin.dev" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/375027?v=4" width="100px;"/><br /><sub>Tomasz Ducin</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=ducin" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/eagleoflqj" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/26783539?v=4" width="100px;"/><br /><sub>Qijia Liu</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=eagleoflqj" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/IshanRatnapala" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/1751242?v=4" width="100px;"/><br /><sub>Ishan Ratnapala</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=IshanRatnapala" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="http://www.refoua.me" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/4673812?v=4" width="100px;"/><br /><sub>David Refoua</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=DRSDavidSoft" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> |<br />| <a href="https://github.com/antoineol" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/6078211?v=4" width="100px;"/><br /><sub>Antoine</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=antoineol" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/youurayy" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/588573?v=4" width="100px;"/><br /><sub>youurayy</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=youurayy" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://www.linkedin.com/in/steve-kirkegard" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/5696096?v=4" width="100px;"/><br /><sub>Steve Kirkegard</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=stevekirks" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://stereobooster.com" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/179534?v=4" width="100px;"/><br /><sub>stereobooster</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=stereobooster" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/mrkaiser" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/282724?v=4" width="100px;"/><br /><sub>Dev Kumar Gupta</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=mrkaiser" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | [<img src="https://avatars.githubusercontent.com/in/29110?v=4" width="100px;"/><br /><sub>dependabot[bot]</sub>](https://github.com/dependabot[bot])<br><a href="https://github.com/jcubic/jquery.terminal/commits?author=dependabot[bot]" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="http://coderaiser.github.io" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/1573141?v=4" width="100px;"/><br /><sub>coderaiser</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=coderaiser" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> |<br />| <a href="https://yutongluo.com" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/1833930?v=4" width="100px;"/><br /><sub>Yutong Luo</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=yutongluo" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://tryingtobeawesome.com/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/139603?v=4" width="100px;"/><br /><sub>Steve Phillips</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=elimisteve" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/rbw" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/1263192?v=4" width="100px;"/><br /><sub>Robert W</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=rbw" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/exit1" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/7055377?v=4" width="100px;"/><br /><sub>exit1</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=exit1" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/mattpap" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/27475?v=4" width="100px;"/><br /><sub>Mateusz Paprocki</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=mattpap" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/loewis" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/74179?v=4" width="100px;"/><br /><sub>Martin v. Löwis</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=loewis" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/KiddoV" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/28552977?v=4" width="100px;"/><br /><sub>KiddoV</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=KiddoV" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> |<br />| <a href="https://github.com/jsteinich" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/3868754?v=4" width="100px;"/><br /><sub>Jon Steinich</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=jsteinich" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="http://www.jarv.org" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/749175?v=4" width="100px;"/><br /><sub>John Jarvis</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=jarv" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://jarryshaw.me" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/15666417?v=4" width="100px;"/><br /><sub>Jarry Shaw</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=JarryShaw" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/jpaye" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/102739519?v=4" width="100px;"/><br /><sub>jpaye</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=jpaye" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://br0g.0brg.net" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/137852?v=4" width="100px;"/><br /><sub>Hraban</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=hraban" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="juanpota.to" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/9531780?v=4" width="100px;"/><br /><sub>Hasan</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=JuanPotato" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/finlob" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/336727?v=4" width="100px;"/><br /><sub>finlob</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=finlob" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> |<br />| <a href="linktr.ee/ezinneanne" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/79814820?v=4" width="100px;"/><br /><sub>Ezinne Anne Emilia</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=ezinneanne" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/avdes" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/569896?v=4" width="100px;"/><br /><sub>Anton Vasilev</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=avdes" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://omranic.com" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/406705?v=4" width="100px;"/><br /><sub>Abdelrahman Omran</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=Omranic" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/7twin" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/32747235?v=4" width="100px;"/><br /><sub>7twin</sub></a><br><a href="https://github.com/jcubic/jquery.terminal/commits?author=7twin" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> |<br /><!-- CONTRIBUTORS-END --></p><p class="my-3"><a href="https://github.com/jcubic/jquery.terminal-www" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">jQuery Terminal Website</a> contributors:</p><p class="my-3"><!-- CONTRIBUTORS-WWW-START --><br />| <a href="https://jakub.jankiewicz.org/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/280241?v=4" width="100px;"/><br /><sub>Jakub T. Jankiewicz</sub></a><br><a href="https://github.com/jcubic/jquery.terminal-www/commits?author=jcubic" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="linktr.ee/ezinneanne" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/79814820?v=4" width="100px;"/><br /><sub>Ezinne Anne Emilia</sub></a><br><a href="https://github.com/jcubic/jquery.terminal-www/commits?author=ezinneanne" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://wikisuite.org" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/1004261?v=4" width="100px;"/><br /><sub>Marc Laporte</sub></a><br><a href="https://github.com/jcubic/jquery.terminal-www/commits?author=marclaporte" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/RichMorin" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/31372?v=4" width="100px;"/><br /><sub>Rich Morin</sub></a><br><a href="https://github.com/jcubic/jquery.terminal-www/commits?author=RichMorin" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://coolapso.sh" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/14358086?v=4" width="100px;"/><br /><sub>Carlos Colaço</sub></a><br><a href="https://github.com/jcubic/jquery.terminal-www/commits?author=coolapso" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/DInesh51297" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/26324569?v=4" width="100px;"/><br /><sub>DInesh51297</sub></a><br><a href="https://github.com/jcubic/jquery.terminal-www/commits?author=DInesh51297" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> | <a href="https://github.com/davidem" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/706591?v=4" width="100px;"/><br /><sub>David</sub></a><br><a href="https://github.com/jcubic/jquery.terminal-www/commits?author=davidem" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> |<br />| :---: | :---: | :---: | :---: | :---: | :---: | :---: |<br />| <a href="https://www.loganrosen.com/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer"><img src="https://avatars.githubusercontent.com/u/512317?v=4" width="100px;"/><br /><sub>Logan Rosen</sub></a><br><a href="https://github.com/jcubic/jquery.terminal-www/commits?author=loganrosen" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">commits</a> |<br /><!-- CONTRIBUTORS-WWW-END --></p><p class="my-3"><h3 class="text-lg font-medium mt-4 mb-2">$3</h3></p><p class="my-3">Projects include with the source code:<br />* <a href="https://sites.google.com/site/daveschindler/jquery-html5-storage-plugin" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">Storage plugin</a> by Dave Schindler (MIT)<br />* <a href="http://jquery.offput.ca/every/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">jQuery Timers</a> (WTFPL)<br />* <a href="http://blog.stevenlevithan.com/archives/cross-browser-split" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">Cross-Browser Split</a> by <a href="http://stevenlevithan.com/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">Steven Levithan</a> (MIT)<br />* <a href="https://github.com/accursoft/caret" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">jQuery Caret</a> by Gideon Sireling (3-BSD)<br />* <a href="https://github.com/alexei/sprintf.js" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">sprintf.js</a> by <a href="http://alexei.ro/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">Alexandru Mărășteanu</a> (3-BSD)<br />* <a href="https://github.com/netzkolchose/node-ansiparser" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">node-ansiparser</a> by Joerg Breitbart (MIT)<br />* <a href="https://github.com/mathiasbynens/emoji-regex" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">emoji regex</a> by Mathias Bynens (MIT)</p><p class="my-3">Other code used inside the project or inspired by:<br />* <a href="https://stackoverflow.com/a/57924983/387194s" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">How to detect iPad and iPad OS version in iOS 13 and Up?</a> (StackOverflow)<br />* <a href="https://stackoverflow.com/a/18927969/387194" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">How do I scroll to an element within an overflowed Div?</a> (StackOverflow)<br />* <a href="https://github.com/zeusdeux/isInViewport" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">isInViewport</a> by Mudit Ameta (MIT)<br />* <a href="https://hacks.mozilla.org/2011/09/detecting-and-generating-css-animations-in-javascript/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">Detecting and generating CSS animations in JavaScript</a> by Chris Heilmann<br />* <a href="https://github.com/cvan/keyboardevent-key-polyfill/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">polyfill for </code>KeyboardEvent.prototype.key`</a> by Christopher Robert Van Wiemeersch (CC0)<br />* <a href="https://web.archive.org/web/20180523065743/https://developer.mozilla.org/en-US/docs/Web/Events/wheel" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">wheel event detection</a> by MDN<br />* <a href="https://codemirror.net/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">CodeMirror</a> by Marijn Haverbeke, was inspiration for some clipboard handling solutions.</p><p class="my-3">ASNSI Art used by this project<br />* <a href="https://sanderfocus.nl/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">Dennis Ritchie by SanderFocus</a><br />* <a href="https://16colo.rs/pack/fuel27/bs-pacis.ans" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">Regina Pacis by burps</a><br />* <a href="https://16colo.rs/pack/fuel27/nf-marble.ans" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">marble by Necrofiliac</a></p><p class="my-3">Personal thanks:<br />* <a href="https://stackoverflow.com/users/157247/t-j-crowder" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">T.J. Crowder</a> for helping with tracking_replace on <a href="https://stackoverflow.com/a/46756077/387194" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">StackOveflow</a><br />* <a href="https://github.com/jerch" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">@jerch</a> for helping with ANSI Parsing<br />* <a href="https://stackoverflow.com/users/1551349/cviejo" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">@cviejo</a> for <a href="https://stackoverflow.com/a/35115703/387194" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">ASCII table algorithm fix</a></p><p class="my-3">Also thanks to:</p><p class="my-3"><a href="https://user-images.githubusercontent.com/587740/39730261-9c65c4d8-522e-11e8-9f12-16b349377a35.png" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">![BrowserStack</a>](http://browserstack.com/)</p><p class="my-3">for cross-device testing opportunity.</p><p class="my-3"><h3 class="text-lg font-medium mt-4 mb-2">$3</h3><br />You can request paid support, you can find details at <a href="https://support.jcubic.pl/" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">support.jcubic.pl</a>.</p><p class="my-3"><h3 class="text-lg font-medium mt-4 mb-2">$3</h3></p><p class="my-3"><a href="https://api.star-history.com/svg?repos=jcubic/jquery.terminal&type=Date&branch=master" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">![Star History Chart</a>](https://star-history.com/#jcubic/jquery.terminal&Date)</p><p class="my-3"><h3 class="text-lg font-medium mt-4 mb-2">$3</h3></p><p class="my-3">Licensed under <a href="http://opensource.org/licenses/MIT" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">MIT</a> license</p><p class="my-3">Copyright (c) 2010-2025 <a href="https://jcubic.pl/me" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">Jakub T. Jankiewicz</a><br /></p></div><div class="flex justify-center absolute inset-x-0 bottom-0 bg-gradient-to-t from-background via-background to-transparent pb-4 pt-16"><button data-slot="button" class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down mr-1 h-4 w-4"><path d="m6 9 6 6 6-6"></path></svg>Show more</button></div></div></div><template id="P:3"></template><template id="P:4"></template></div></div></div><script>self.__next_f.push([1,"3e:I[27201,[\"/_next/static/chunks/ff1a16fafef87110.js?dpl=dpl_5VNVLvSu6UbYcDkvZSHQ251MMiDd\",\"/_next/static/chunks/d2be314c3ece3fbe.js?dpl=dpl_5VNVLvSu6UbYcDkvZSHQ251MMiDd\"],\"IconMark\"]\n2b:[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}]\n2c:[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^0.3.4\"}]\n2d:[\"$\",\"$L5\",\"coveralls-next\",{\"href\":\"/package/coveralls-next\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"coveralls-next\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^4.2.1\"}]]}]\n2e:[\"$\",\"$L5\",\"iconv-lite\",{\"href\":\"/package/iconv-lite\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"iconv-lite\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^0.6.3\"}]]}]\n2f:[\"$\",\"$L5\",\"jquery\",{\"href\":\"/package/jquery\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"jquery\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^3.7.1\"}]]}]\n30:[\"$\",\"$L5\",\"node-fetch\",{\"href\":\"/package/node-fetch\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"node-fetch\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^3.3.2\"}]]}]\n31:[\"$\",\"$L5\",\"prismjs\",{\"href\":\"/package/prismjs\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 "])</script><script>self.__next_f.push([1,"24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"prismjs\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^1.30.0\"}]]}]\n32:[\"$\",\"$L5\",\"wcwidth\",{\"href\":\"/package/wcwidth\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"wcwidth\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^1.0.1\"}]]}]\n"])</script><script>self.__next_f.push([1,"33:[\"$\",\"div\",null,{\"data-slot\":\"card\",\"className\":\"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border shadow-sm py-4 lg:col-span-2\",\"children\":[[\"$\",\"div\",null,{\"data-slot\":\"card-header\",\"className\":\"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6 pb-2\",\"children\":[\"$\",\"div\",null,{\"data-slot\":\"card-title\",\"className\":\"font-semibold flex items-center gap-2 text-base\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-wrench h-4 w-4\",\"children\":[[\"$\",\"path\",\"cbrjhi\",{\"d\":\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\"}],\"$undefined\"]}],\"Dev Dependencies\",[\"$\",\"span\",null,{\"data-slot\":\"badge\",\"className\":\"inline-flex items-center justify-center rounded-md border px-2 py-0.5 font-medium w-fit whitespace-nowrap shrink-0 [\u0026\u003esvg]:size-3 gap-1 [\u0026\u003esvg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden border-transparent bg-secondary text-secondary-foreground [a\u0026]:hover:bg-secondary/90 ml-auto text-xs\",\"children\":10}]]}]}],[\"$\",\"div\",null,{\"data-slot\":\"card-content\",\"className\":\"px-6\",\"children\":[\"$\",\"div\",null,{\"className\":\"grid gap-1 sm:grid-cols-2 lg:grid-cols-3\",\"children\":[[\"$\",\"$L5\",\"cssnano\",{\"href\":\"/package/cssnano\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"cssnano\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^5.1.5\"}]]}],[\"$\",\"$L5\",\"emoji-datasource-twitter\",{\"href\":\"/package/emoji-datasource-twitter\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"emoji-datasource-twitter\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^14.0.0\"}]]}],[\"$\",\"$L5\",\"eslint\",{\"href\":\"/package/eslint\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[\"$L35\",\"$undefined\"]}],\"eslint\"]}],\"$L36\"]}],\"$L37\",\"$L38\",\"$L39\",\"$L3a\",\"$L3b\",\"$L3c\",\"$L3d\"]}]}]]}]\n"])</script><script>self.__next_f.push([1,"11:null\n15:[[\"$\",\"title\",\"0\",{\"children\":\"jquery.terminal - npm explorer\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"jQuery Terminal Emulator is a plugin for creating command line interpreters in your applications.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon-light-32x32.png\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/icon-dark-32x32.png\",\"media\":\"(prefers-color-scheme: dark)\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/icon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png\"}],[\"$\",\"$L3e\",\"6\",{}]]\n"])</script><script>self.__next_f.push([1,"35:[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}]\n36:[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^8.11.0\"}]\n37:[\"$\",\"$L5\",\"gm\",{\"href\":\"/package/gm\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"gm\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^1.23.1\"}]]}]\n38:[\"$\",\"$L5\",\"jest\",{\"href\":\"/package/jest\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"jest\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^29.7.0\"}]]}]\n39:[\"$\",\"$L5\",\"jest-environment-jsdom\",{\"href\":\"/package/jest-environment-jsdom\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"jest-environment-jsdom\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^29.7.0\"}]]}]\n3a:[\"$\",\"$L5\",\"jsonlint-mod\",{\"href\":\"/package/jsonlint-mod\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"jsonlint-mod\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^1.7.6\"}]]}]\n3b:[\"$\",\"$L5\",\"postcss\",{\"href\":\"/package/postcss\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opa"])</script><script>self.__next_f.push([1,"city-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"postcss\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^8.4.12\"}]]}]\n3c:[\"$\",\"$L5\",\"typescript\",{\"href\":\"/package/typescript\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"typescript\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^4.6.2\"}]]}]\n3d:[\"$\",\"$L5\",\"uglify-js\",{\"href\":\"/package/uglify-js\",\"className\":\"group flex items-center justify-between rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex items-center gap-1.5 truncate font-mono text-foreground\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-chevron-right h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100\",\"children\":[[\"$\",\"path\",\"mthhwq\",{\"d\":\"m9 18 6-6-6-6\"}],\"$undefined\"]}],\"uglify-js\"]}],[\"$\",\"span\",null,{\"className\":\"ml-2 shrink-0 font-mono text-xs text-muted-foreground\",\"children\":\"^3.15.3\"}]]}]\n"])</script><title>jquery.terminal - npm explorer