diff options
Diffstat (limited to 'test/bun.js/fixture.html')
-rw-r--r-- | test/bun.js/fixture.html | 1177 |
1 files changed, 605 insertions, 572 deletions
diff --git a/test/bun.js/fixture.html b/test/bun.js/fixture.html index 929b73ce4..081040506 100644 --- a/test/bun.js/fixture.html +++ b/test/bun.js/fixture.html @@ -1,38 +1,42 @@ <!DOCTYPE html> <html> -<head> -<meta charset="UTF-8" /> -<meta name="viewport" content="width=device-width, initial-scale=1" /> -<meta property="og:title" content="Bun is a fast all-in-one JavaScript runtime" /> -<title>Bun is a fast all-in-one JavaScript runtime</title> -<meta property="og:description" content="Bundle, transpile, install and run JavaScript & TypeScript + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta property="og:title" content="Bun is a fast all-in-one JavaScript runtime" /> + <title>Bun is a fast all-in-one JavaScript runtime</title> + <meta + property="og:description" + content="Bundle, transpile, install and run JavaScript & TypeScript projects – all in Bun. Bun is a new JavaScript runtime with - a native bundler, transpiler, task runner and npm client built-in." /> -<meta name="og:locale" content="en_US" /> -<meta name="twitter:site" content="@jarredsumner" /> -<meta name="twitter:card" content="summary_large_image" /> -<meta property="og:image" content="https://bun.sh/share.png" /> -<meta name="description" content="Bundle, transpile, install and run JavaScript & TypeScript + a native bundler, transpiler, task runner and npm client built-in." + /> + <meta name="og:locale" content="en_US" /> + <meta name="twitter:site" content="@jarredsumner" /> + <meta name="twitter:card" content="summary_large_image" /> + <meta property="og:image" content="https://bun.sh/share.png" /> + <meta + name="description" + content="Bundle, transpile, install and run JavaScript & TypeScript projects – all in Bun. Bun is a new JavaScript runtime with - a native bundler, transpiler, task runner and npm client built-in." /> -<meta name="theme-color" content="#fbf0df" /> -<link rel="manifest" href="manifest.json" /> -<link rel="icon" type="image/png" sizes="256x256" href="/logo-square.png" /> -<link rel="icon" type="image/png" sizes="32x32" href="/logo-square@32px.png" /> -<link rel="icon" type="image/png" sizes="16x16" href="/logo-square@16px.png" /> -<style> + a native bundler, transpiler, task runner and npm client built-in." + /> + <meta name="theme-color" content="#fbf0df" /> + <link rel="manifest" href="manifest.json" /> + <link rel="icon" type="image/png" sizes="256x256" href="/logo-square.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/logo-square@32px.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/logo-square@16px.png" /> + <style> :root { --black: #0b0a08; --blue: #00a6e1; --orange: #f89b4b; --orange-light: #d4d3d2; - --monospace-font: "Fira Code", "Hack", "Source Code Pro", "SF Mono", - "Inconsolata", monospace; + --monospace-font: "Fira Code", "Hack", "Source Code Pro", "SF Mono", "Inconsolata", monospace; --dark-border: rgba(200, 200, 25, 0.2); --max-width: 1152px; - --system-font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", - Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", - sans-serif; + --system-font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, + "Open Sans", "Helvetica Neue", sans-serif; --horizontal-padding: 3rem; --vertical-padding: 4rem; --line-height: 1.4; @@ -172,11 +176,7 @@ color: var(--orange-light); } #usecases-section { - background: linear-gradient( - 12deg, - rgba(0, 0, 0, 0.7), - rgba(0, 0, 0, 0.2) - ), + background: linear-gradient(12deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.2)), conic-gradient( from 6.27deg at 46.95% 50.05%, #ff8181 0deg, @@ -204,12 +204,7 @@ padding-bottom: 1rem; } #usecases-section h1 { - background: linear-gradient( - 90deg, - #ff0000 0%, - #faff00 50.52%, - #0500ff 100% - ); + background: linear-gradient(90deg, #ff0000 0%, #faff00 50.52%, #0500ff 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; @@ -692,9 +687,7 @@ .CodeBlock .shiki { padding: 24px 16px; margin: calc(-1 * var(--horizontal-padding)); - width: calc( - 100vw - var(--horizontal-padding) - var(--horizontal-padding) -2px - ); + width: calc(100vw - var(--horizontal-padding) - var(--horizontal-padding) -2px); white-space: pre-wrap; box-sizing: border-box; border-radius: 0; @@ -797,562 +790,604 @@ width: 1px; } </style> -</head> -<body> -<div id="header-wrap"> -<header> -<a href="/" id="logo-link" aria-label="home"><img height="61px" src="data:image/svg+xml;base64, PHN2ZyBpZD0iQnVuIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4MCA3MCI+PHRpdGxlPkJ1biBMb2dvPC90aXRsZT48cGF0aCBpZD0iU2hhZG93IiBkPSJNNzEuMDksMjAuNzRjLS4xNi0uMTctLjMzLS4zNC0uNS0uNXMtLjMzLS4zNC0uNS0uNS0uMzMtLjM0LS41LS41LS4zMy0uMzQtLjUtLjUtLjMzLS4zNC0uNS0uNS0uMzMtLjM0LS41LS41LS4zMy0uMzQtLjUtLjVBMjYuNDYsMjYuNDYsMCwwLDEsNzUuNSwzNS43YzAsMTYuNTctMTYuODIsMzAuMDUtMzcuNSwzMC4wNS0xMS41OCwwLTIxLjk0LTQuMjMtMjguODMtMTAuODZsLjUuNS41LjUuNS41LjUuNS41LjUuNS41LjUuNUMxOS41NSw2NS4zLDMwLjE0LDY5Ljc1LDQyLDY5Ljc1YzIwLjY4LDAsMzcuNS0xMy40OCwzNy41LTMwQzc5LjUsMzIuNjksNzYuNDYsMjYsNzEuMDksMjAuNzRaIi8+PGcgaWQ9IkJvZHkiPjxwYXRoIGlkPSJCYWNrZ3JvdW5kIiBkPSJNNzMsMzUuN2MwLDE1LjIxLTE1LjY3LDI3LjU0LTM1LDI3LjU0UzMsNTAuOTEsMywzNS43QzMsMjYuMjcsOSwxNy45NCwxOC4yMiwxM1MzMy4xOCwzLDM4LDNzOC45NCw0LjEzLDE5Ljc4LDEwQzY3LDE3Ljk0LDczLDI2LjI3LDczLDM1LjdaIiBzdHlsZT0iZmlsbDojZmJmMGRmIi8+PHBhdGggaWQ9IkJvdHRvbV9TaGFkb3ciIGRhdGEtbmFtZT0iQm90dG9tIFNoYWRvdyIgZD0iTTczLDM1LjdhMjEuNjcsMjEuNjcsMCwwLDAtLjgtNS43OGMtMi43MywzMy4zLTQzLjM1LDM0LjktNTkuMzIsMjQuOTRBNDAsNDAsMCwwLDAsMzgsNjMuMjRDNTcuMyw2My4yNCw3Myw1MC44OSw3MywzNS43WiIgc3R5bGU9ImZpbGw6I2Y2ZGVjZSIvPjxwYXRoIGlkPSJMaWdodF9TaGluZSIgZGF0YS1uYW1lPSJMaWdodCBTaGluZSIgZD0iTTI0LjUzLDExLjE3QzI5LDguNDksMzQuOTQsMy40Niw0MC43OCwzLjQ1QTkuMjksOS4yOSwwLDAsMCwzOCwzYy0yLjQyLDAtNSwxLjI1LTguMjUsMy4xMy0xLjEzLjY2LTIuMywxLjM5LTMuNTQsMi4xNS0yLjMzLDEuNDQtNSwzLjA3LTgsNC43QzguNjksMTguMTMsMywyNi42MiwzLDM1LjdjMCwuNCwwLC44LDAsMS4xOUM5LjA2LDE1LjQ4LDIwLjA3LDEzLjg1LDI0LjUzLDExLjE3WiIgc3R5bGU9ImZpbGw6I2ZmZmVmYyIvPjxwYXRoIGlkPSJUb3AiIGQ9Ik0zNS4xMiw1LjUzQTE2LjQxLDE2LjQxLDAsMCwxLDI5LjQ5LDE4Yy0uMjguMjUtLjA2LjczLjMuNTksMy4zNy0xLjMxLDcuOTItNS4yMyw2LTEzLjE0QzM1LjcxLDUsMzUuMTIsNS4xMiwzNS4xMiw1LjUzWm0yLjI3LDBBMTYuMjQsMTYuMjQsMCwwLDEsMzksMTljLS4xMi4zNS4zMS42NS41NS4zNkM0MS43NCwxNi41Niw0My42NSwxMSwzNy45Myw1LDM3LjY0LDQuNzQsMzcuMTksNS4xNCwzNy4zOSw1LjQ5Wm0yLjc2LS4xN0ExNi40MiwxNi40MiwwLDAsMSw0NywxNy4xMmEuMzMuMzMsMCwwLDAsLjY1LjExYy45Mi0zLjQ5LjQtOS40NC03LjE3LTEyLjUzQzQwLjA4LDQuNTQsMzkuODIsNS4wOCw0MC4xNSw1LjMyWk0yMS42OSwxNS43NmExNi45NCwxNi45NCwwLDAsMCwxMC40Ny05Yy4xOC0uMzYuNzUtLjIyLjY2LjE4LTEuNzMsOC03LjUyLDkuNjctMTEuMTIsOS40NUMyMS4zMiwxNi40LDIxLjMzLDE1Ljg3LDIxLjY5LDE1Ljc2WiIgc3R5bGU9ImZpbGw6I2NjYmVhNztmaWxsLXJ1bGU6ZXZlbm9kZCIvPjxwYXRoIGlkPSJPdXRsaW5lIiBkPSJNMzgsNjUuNzVDMTcuMzIsNjUuNzUuNSw1Mi4yNy41LDM1LjdjMC0xMCw2LjE4LTE5LjMzLDE2LjUzLTI0LjkyLDMtMS42LDUuNTctMy4yMSw3Ljg2LTQuNjIsMS4yNi0uNzgsMi40NS0xLjUxLDMuNi0yLjE5QzMyLDEuODksMzUsLjUsMzgsLjVzNS42MiwxLjIsOC45LDMuMTRjMSwuNTcsMiwxLjE5LDMuMDcsMS44NywyLjQ5LDEuNTQsNS4zLDMuMjgsOSw1LjI3QzY5LjMyLDE2LjM3LDc1LjUsMjUuNjksNzUuNSwzNS43LDc1LjUsNTIuMjcsNTguNjgsNjUuNzUsMzgsNjUuNzVaTTM4LDNjLTIuNDIsMC01LDEuMjUtOC4yNSwzLjEzLTEuMTMuNjYtMi4zLDEuMzktMy41NCwyLjE1LTIuMzMsMS40NC01LDMuMDctOCw0LjdDOC42OSwxOC4xMywzLDI2LjYyLDMsMzUuNywzLDUwLjg5LDE4LjcsNjMuMjUsMzgsNjMuMjVTNzMsNTAuODksNzMsMzUuN0M3MywyNi42Miw2Ny4zMSwxOC4xMyw1Ny43OCwxMyw1NCwxMSw1MS4wNSw5LjEyLDQ4LjY2LDcuNjRjLTEuMDktLjY3LTIuMDktMS4yOS0zLTEuODRDNDIuNjMsNCw0MC40MiwzLDM4LDNaIi8+PC9nPjxnIGlkPSJNb3V0aCI+PGcgaWQ9IkJhY2tncm91bmQtMiIgZGF0YS1uYW1lPSJCYWNrZ3JvdW5kIj48cGF0aCBkPSJNNDUuMDUsNDNhOC45Myw4LjkzLDAsMCwxLTIuOTIsNC43MSw2LjgxLDYuODEsMCwwLDEtNCwxLjg4QTYuODQsNi44NCwwLDAsMSwzNCw0Ny43MSw4LjkzLDguOTMsMCwwLDEsMzEuMTIsNDNhLjcyLjcyLDAsMCwxLC44LS44MUg0NC4yNkEuNzIuNzIsMCwwLDEsNDUuMDUsNDNaIiBzdHlsZT0iZmlsbDojYjcxNDIyIi8+PC9nPjxnIGlkPSJUb25ndWUiPjxwYXRoIGlkPSJCYWNrZ3JvdW5kLTMiIGRhdGEtbmFtZT0iQmFja2dyb3VuZCIgZD0iTTM0LDQ3Ljc5YTYuOTEsNi45MSwwLDAsMCw0LjEyLDEuOSw2LjkxLDYuOTEsMCwwLDAsNC4xMS0xLjksMTAuNjMsMTAuNjMsMCwwLDAsMS0xLjA3LDYuODMsNi44MywwLDAsMC00LjktMi4zMSw2LjE1LDYuMTUsMCwwLDAtNSwyLjc4QzMzLjU2LDQ3LjQsMzMuNzYsNDcuNiwzNCw0Ny43OVoiIHN0eWxlPSJmaWxsOiNmZjYxNjQiLz48cGF0aCBpZD0iT3V0bGluZS0yIiBkYXRhLW5hbWU9Ik91dGxpbmUiIGQ9Ik0zNC4xNiw0N2E1LjM2LDUuMzYsMCwwLDEsNC4xOS0yLjA4LDYsNiwwLDAsMSw0LDEuNjljLjIzLS4yNS40NS0uNTEuNjYtLjc3YTcsNywwLDAsMC00LjcxLTEuOTMsNi4zNiw2LjM2LDAsMCwwLTQuODksMi4zNkE5LjUzLDkuNTMsMCwwLDAsMzQuMTYsNDdaIi8+PC9nPjxwYXRoIGlkPSJPdXRsaW5lLTMiIGRhdGEtbmFtZT0iT3V0bGluZSIgZD0iTTM4LjA5LDUwLjE5YTcuNDIsNy40MiwwLDAsMS00LjQ1LTIsOS41Miw5LjUyLDAsMCwxLTMuMTEtNS4wNSwxLjIsMS4yLDAsMCwxLC4yNi0xLDEuNDEsMS40MSwwLDAsMSwxLjEzLS41MUg0NC4yNmExLjQ0LDEuNDQsMCwwLDEsMS4xMy41MSwxLjE5LDEuMTksMCwwLDEsLjI1LDFoMGE5LjUyLDkuNTIsMCwwLDEtMy4xMSw1LjA1QTcuNDIsNy40MiwwLDAsMSwzOC4wOSw1MC4xOVptLTYuMTctNy40Yy0uMTYsMC0uMi4wNy0uMjEuMDlhOC4yOSw4LjI5LDAsMCwwLDIuNzMsNC4zN0E2LjIzLDYuMjMsMCwwLDAsMzguMDksNDlhNi4yOCw2LjI4LDAsMCwwLDMuNjUtMS43Myw4LjMsOC4zLDAsMCwwLDIuNzItNC4zNy4yMS4yMSwwLDAsMC0uMi0uMDlaIi8+PC9nPjxnIGlkPSJGYWNlIj48ZWxsaXBzZSBpZD0iUmlnaHRfQmx1c2giIGRhdGEtbmFtZT0iUmlnaHQgQmx1c2giIGN4PSI1My4yMiIgY3k9IjQwLjE4IiByeD0iNS44NSIgcnk9IjMuNDQiIHN0eWxlPSJmaWxsOiNmZWJiZDAiLz48ZWxsaXBzZSBpZD0iTGVmdF9CbHVjaCIgZGF0YS1uYW1lPSJMZWZ0IEJsdWNoIiBjeD0iMjIuOTUiIGN5PSI0MC4xOCIgcng9IjUuODUiIHJ5PSIzLjQ0IiBzdHlsZT0iZmlsbDojZmViYmQwIi8+PHBhdGggaWQ9IkV5ZXMiIGQ9Ik0yNS43LDM4LjhhNS41MSw1LjUxLDAsMSwwLTUuNS01LjUxQTUuNTEsNS41MSwwLDAsMCwyNS43LDM4LjhabTI0Ljc3LDBBNS41MSw1LjUxLDAsMSwwLDQ1LDMzLjI5LDUuNSw1LjUsMCwwLDAsNTAuNDcsMzguOFoiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZCIvPjxwYXRoIGlkPSJJcmlzIiBkPSJNMjQsMzMuNjRhMi4wNywyLjA3LDAsMSwwLTIuMDYtMi4wN0EyLjA3LDIuMDcsMCwwLDAsMjQsMzMuNjRabTI0Ljc3LDBhMi4wNywyLjA3LDAsMSwwLTIuMDYtMi4wN0EyLjA3LDIuMDcsMCwwLDAsNDguNzUsMzMuNjRaIiBzdHlsZT0iZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkIi8+PC9nPjwvc3ZnPg==" alt="Bun logo" id="logo" /><img alt="Bun" id="logo-text" height="31.65px" src="data:image/png;base64, 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" /></a> -<nav class="Navigation"> -<ul> -<li> -<a class="NavText" href="https://github.com/oven-sh/bun#Reference">Docs</a - > -</li> -<li> -<a class="NavText" href="https://bun.sh/discord">Discord</a> -</li> -<li> -<a class="NavText" href="https://github.com/oven-sh/bun">GitHub</a - > -</li> -</ul> -</nav> -</header> -</div> -<div id="pitch"> -<main> -<div id="pitch-content"> -<h1 class="tagline">Bun is a fast all-in-one JavaScript runtime</h1> -<p class="subtitle"> -Bundle, transpile, install and run JavaScript & TypeScript -projects — all in Bun. Bun is a new JavaScript runtime with a native -bundler, transpiler, task runner and npm client built-in. -</p> -<div class="InstallBox InstallBox--desktop"> -<div class="InstallBox-label"> -<div class="InstallBox-label-heading"> -Install Bun CLI -<!-- -->0.2.1<!-- --> -(beta) -</div> -<div class="InstallBox-label-subtitle"> -macOS x64 & Silicon, Linux x64, Windows Subsystem for Linux -</div> -</div> -<div class="InstallBox-code-box"> -<div class="InstallBox-curl"> -curl https://bun.sh/install | bash -</div> -<button class="InstallBox-copy" aria-label="Copy installation script"> -copy -</button> -</div> -<a class="InstallBox-view-source-link" target="_blank" href="https://bun.sh/install">Show script source</a + </head> + <body> + <div id="header-wrap"> + <header> + <a href="/" id="logo-link" aria-label="home" + ><img + height="61px" + src="data:image/svg+xml;base64, PHN2ZyBpZD0iQnVuIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4MCA3MCI+PHRpdGxlPkJ1biBMb2dvPC90aXRsZT48cGF0aCBpZD0iU2hhZG93IiBkPSJNNzEuMDksMjAuNzRjLS4xNi0uMTctLjMzLS4zNC0uNS0uNXMtLjMzLS4zNC0uNS0uNS0uMzMtLjM0LS41LS41LS4zMy0uMzQtLjUtLjUtLjMzLS4zNC0uNS0uNS0uMzMtLjM0LS41LS41LS4zMy0uMzQtLjUtLjVBMjYuNDYsMjYuNDYsMCwwLDEsNzUuNSwzNS43YzAsMTYuNTctMTYuODIsMzAuMDUtMzcuNSwzMC4wNS0xMS41OCwwLTIxLjk0LTQuMjMtMjguODMtMTAuODZsLjUuNS41LjUuNS41LjUuNS41LjUuNS41LjUuNUMxOS41NSw2NS4zLDMwLjE0LDY5Ljc1LDQyLDY5Ljc1YzIwLjY4LDAsMzcuNS0xMy40OCwzNy41LTMwQzc5LjUsMzIuNjksNzYuNDYsMjYsNzEuMDksMjAuNzRaIi8+PGcgaWQ9IkJvZHkiPjxwYXRoIGlkPSJCYWNrZ3JvdW5kIiBkPSJNNzMsMzUuN2MwLDE1LjIxLTE1LjY3LDI3LjU0LTM1LDI3LjU0UzMsNTAuOTEsMywzNS43QzMsMjYuMjcsOSwxNy45NCwxOC4yMiwxM1MzMy4xOCwzLDM4LDNzOC45NCw0LjEzLDE5Ljc4LDEwQzY3LDE3Ljk0LDczLDI2LjI3LDczLDM1LjdaIiBzdHlsZT0iZmlsbDojZmJmMGRmIi8+PHBhdGggaWQ9IkJvdHRvbV9TaGFkb3ciIGRhdGEtbmFtZT0iQm90dG9tIFNoYWRvdyIgZD0iTTczLDM1LjdhMjEuNjcsMjEuNjcsMCwwLDAtLjgtNS43OGMtMi43MywzMy4zLTQzLjM1LDM0LjktNTkuMzIsMjQuOTRBNDAsNDAsMCwwLDAsMzgsNjMuMjRDNTcuMyw2My4yNCw3Myw1MC44OSw3MywzNS43WiIgc3R5bGU9ImZpbGw6I2Y2ZGVjZSIvPjxwYXRoIGlkPSJMaWdodF9TaGluZSIgZGF0YS1uYW1lPSJMaWdodCBTaGluZSIgZD0iTTI0LjUzLDExLjE3QzI5LDguNDksMzQuOTQsMy40Niw0MC43OCwzLjQ1QTkuMjksOS4yOSwwLDAsMCwzOCwzYy0yLjQyLDAtNSwxLjI1LTguMjUsMy4xMy0xLjEzLjY2LTIuMywxLjM5LTMuNTQsMi4xNS0yLjMzLDEuNDQtNSwzLjA3LTgsNC43QzguNjksMTguMTMsMywyNi42MiwzLDM1LjdjMCwuNCwwLC44LDAsMS4xOUM5LjA2LDE1LjQ4LDIwLjA3LDEzLjg1LDI0LjUzLDExLjE3WiIgc3R5bGU9ImZpbGw6I2ZmZmVmYyIvPjxwYXRoIGlkPSJUb3AiIGQ9Ik0zNS4xMiw1LjUzQTE2LjQxLDE2LjQxLDAsMCwxLDI5LjQ5LDE4Yy0uMjguMjUtLjA2LjczLjMuNTksMy4zNy0xLjMxLDcuOTItNS4yMyw2LTEzLjE0QzM1LjcxLDUsMzUuMTIsNS4xMiwzNS4xMiw1LjUzWm0yLjI3LDBBMTYuMjQsMTYuMjQsMCwwLDEsMzksMTljLS4xMi4zNS4zMS42NS41NS4zNkM0MS43NCwxNi41Niw0My42NSwxMSwzNy45Myw1LDM3LjY0LDQuNzQsMzcuMTksNS4xNCwzNy4zOSw1LjQ5Wm0yLjc2LS4xN0ExNi40MiwxNi40MiwwLDAsMSw0NywxNy4xMmEuMzMuMzMsMCwwLDAsLjY1LjExYy45Mi0zLjQ5LjQtOS40NC03LjE3LTEyLjUzQzQwLjA4LDQuNTQsMzkuODIsNS4wOCw0MC4xNSw1LjMyWk0yMS42OSwxNS43NmExNi45NCwxNi45NCwwLDAsMCwxMC40Ny05Yy4xOC0uMzYuNzUtLjIyLjY2LjE4LTEuNzMsOC03LjUyLDkuNjctMTEuMTIsOS40NUMyMS4zMiwxNi40LDIxLjMzLDE1Ljg3LDIxLjY5LDE1Ljc2WiIgc3R5bGU9ImZpbGw6I2NjYmVhNztmaWxsLXJ1bGU6ZXZlbm9kZCIvPjxwYXRoIGlkPSJPdXRsaW5lIiBkPSJNMzgsNjUuNzVDMTcuMzIsNjUuNzUuNSw1Mi4yNy41LDM1LjdjMC0xMCw2LjE4LTE5LjMzLDE2LjUzLTI0LjkyLDMtMS42LDUuNTctMy4yMSw3Ljg2LTQuNjIsMS4yNi0uNzgsMi40NS0xLjUxLDMuNi0yLjE5QzMyLDEuODksMzUsLjUsMzgsLjVzNS42MiwxLjIsOC45LDMuMTRjMSwuNTcsMiwxLjE5LDMuMDcsMS44NywyLjQ5LDEuNTQsNS4zLDMuMjgsOSw1LjI3QzY5LjMyLDE2LjM3LDc1LjUsMjUuNjksNzUuNSwzNS43LDc1LjUsNTIuMjcsNTguNjgsNjUuNzUsMzgsNjUuNzVaTTM4LDNjLTIuNDIsMC01LDEuMjUtOC4yNSwzLjEzLTEuMTMuNjYtMi4zLDEuMzktMy41NCwyLjE1LTIuMzMsMS40NC01LDMuMDctOCw0LjdDOC42OSwxOC4xMywzLDI2LjYyLDMsMzUuNywzLDUwLjg5LDE4LjcsNjMuMjUsMzgsNjMuMjVTNzMsNTAuODksNzMsMzUuN0M3MywyNi42Miw2Ny4zMSwxOC4xMyw1Ny43OCwxMyw1NCwxMSw1MS4wNSw5LjEyLDQ4LjY2LDcuNjRjLTEuMDktLjY3LTIuMDktMS4yOS0zLTEuODRDNDIuNjMsNCw0MC40MiwzLDM4LDNaIi8+PC9nPjxnIGlkPSJNb3V0aCI+PGcgaWQ9IkJhY2tncm91bmQtMiIgZGF0YS1uYW1lPSJCYWNrZ3JvdW5kIj48cGF0aCBkPSJNNDUuMDUsNDNhOC45Myw4LjkzLDAsMCwxLTIuOTIsNC43MSw2LjgxLDYuODEsMCwwLDEtNCwxLjg4QTYuODQsNi44NCwwLDAsMSwzNCw0Ny43MSw4LjkzLDguOTMsMCwwLDEsMzEuMTIsNDNhLjcyLjcyLDAsMCwxLC44LS44MUg0NC4yNkEuNzIuNzIsMCwwLDEsNDUuMDUsNDNaIiBzdHlsZT0iZmlsbDojYjcxNDIyIi8+PC9nPjxnIGlkPSJUb25ndWUiPjxwYXRoIGlkPSJCYWNrZ3JvdW5kLTMiIGRhdGEtbmFtZT0iQmFja2dyb3VuZCIgZD0iTTM0LDQ3Ljc5YTYuOTEsNi45MSwwLDAsMCw0LjEyLDEuOSw2LjkxLDYuOTEsMCwwLDAsNC4xMS0xLjksMTAuNjMsMTAuNjMsMCwwLDAsMS0xLjA3LDYuODMsNi44MywwLDAsMC00LjktMi4zMSw2LjE1LDYuMTUsMCwwLDAtNSwyLjc4QzMzLjU2LDQ3LjQsMzMuNzYsNDcuNiwzNCw0Ny43OVoiIHN0eWxlPSJmaWxsOiNmZjYxNjQiLz48cGF0aCBpZD0iT3V0bGluZS0yIiBkYXRhLW5hbWU9Ik91dGxpbmUiIGQ9Ik0zNC4xNiw0N2E1LjM2LDUuMzYsMCwwLDEsNC4xOS0yLjA4LDYsNiwwLDAsMSw0LDEuNjljLjIzLS4yNS40NS0uNTEuNjYtLjc3YTcsNywwLDAsMC00LjcxLTEuOTMsNi4zNiw2LjM2LDAsMCwwLTQuODksMi4zNkE5LjUzLDkuNTMsMCwwLDAsMzQuMTYsNDdaIi8+PC9nPjxwYXRoIGlkPSJPdXRsaW5lLTMiIGRhdGEtbmFtZT0iT3V0bGluZSIgZD0iTTM4LjA5LDUwLjE5YTcuNDIsNy40MiwwLDAsMS00LjQ1LTIsOS41Miw5LjUyLDAsMCwxLTMuMTEtNS4wNSwxLjIsMS4yLDAsMCwxLC4yNi0xLDEuNDEsMS40MSwwLDAsMSwxLjEzLS41MUg0NC4yNmExLjQ0LDEuNDQsMCwwLDEsMS4xMy41MSwxLjE5LDEuMTksMCwwLDEsLjI1LDFoMGE5LjUyLDkuNTIsMCwwLDEtMy4xMSw1LjA1QTcuNDIsNy40MiwwLDAsMSwzOC4wOSw1MC4xOVptLTYuMTctNy40Yy0uMTYsMC0uMi4wNy0uMjEuMDlhOC4yOSw4LjI5LDAsMCwwLDIuNzMsNC4zN0E2LjIzLDYuMjMsMCwwLDAsMzguMDksNDlhNi4yOCw2LjI4LDAsMCwwLDMuNjUtMS43Myw4LjMsOC4zLDAsMCwwLDIuNzItNC4zNy4yMS4yMSwwLDAsMC0uMi0uMDlaIi8+PC9nPjxnIGlkPSJGYWNlIj48ZWxsaXBzZSBpZD0iUmlnaHRfQmx1c2giIGRhdGEtbmFtZT0iUmlnaHQgQmx1c2giIGN4PSI1My4yMiIgY3k9IjQwLjE4IiByeD0iNS44NSIgcnk9IjMuNDQiIHN0eWxlPSJmaWxsOiNmZWJiZDAiLz48ZWxsaXBzZSBpZD0iTGVmdF9CbHVjaCIgZGF0YS1uYW1lPSJMZWZ0IEJsdWNoIiBjeD0iMjIuOTUiIGN5PSI0MC4xOCIgcng9IjUuODUiIHJ5PSIzLjQ0IiBzdHlsZT0iZmlsbDojZmViYmQwIi8+PHBhdGggaWQ9IkV5ZXMiIGQ9Ik0yNS43LDM4LjhhNS41MSw1LjUxLDAsMSwwLTUuNS01LjUxQTUuNTEsNS41MSwwLDAsMCwyNS43LDM4LjhabTI0Ljc3LDBBNS41MSw1LjUxLDAsMSwwLDQ1LDMzLjI5LDUuNSw1LjUsMCwwLDAsNTAuNDcsMzguOFoiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZCIvPjxwYXRoIGlkPSJJcmlzIiBkPSJNMjQsMzMuNjRhMi4wNywyLjA3LDAsMSwwLTIuMDYtMi4wN0EyLjA3LDIuMDcsMCwwLDAsMjQsMzMuNjRabTI0Ljc3LDBhMi4wNywyLjA3LDAsMSwwLTIuMDYtMi4wN0EyLjA3LDIuMDcsMCwwLDAsNDguNzUsMzMuNjRaIiBzdHlsZT0iZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkIi8+PC9nPjwvc3ZnPg==" + alt="Bun logo" + id="logo" /><img + alt="Bun" + id="logo-text" + height="31.65px" + src="data:image/png;base64, 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" + /></a> + <nav class="Navigation"> + <ul> + <li> + <a class="NavText" href="https://github.com/oven-sh/bun#Reference">Docs</a> + </li> + <li> + <a class="NavText" href="https://bun.sh/discord">Discord</a> + </li> + <li> + <a class="NavText" href="https://github.com/oven-sh/bun">GitHub</a> + </li> + </ul> + </nav> + </header> + </div> + <div id="pitch"> + <main> + <div id="pitch-content"> + <h1 class="tagline">Bun is a fast all-in-one JavaScript runtime</h1> + <p class="subtitle"> + Bundle, transpile, install and run JavaScript & TypeScript projects — all in Bun. Bun is a new + JavaScript runtime with a native bundler, transpiler, task runner and npm client built-in. + </p> + <div class="InstallBox InstallBox--desktop"> + <div class="InstallBox-label"> + <div class="InstallBox-label-heading"> + Install Bun CLI + <!-- -->0.2.1<!-- --> + (beta) + </div> + <div class="InstallBox-label-subtitle"> + macOS x64 & Silicon, Linux x64, Windows Subsystem for Linux + </div> + </div> + <div class="InstallBox-code-box"> + <div class="InstallBox-curl">curl https://bun.sh/install | bash</div> + <button class="InstallBox-copy" aria-label="Copy installation script">copy</button> + </div> + <a class="InstallBox-view-source-link" target="_blank" href="https://bun.sh/install">Show script source</a> + </div> + </div> + <div class="Graphs Graphs--active-react"> + <div class="Tabs" role="tablist"> + <button + data-tab="react" + id="tab-react" + aria-controls="react-tab-content" + class="Tab" + role="tab" + aria-selected="true" + tabindex="0" + > + Bun.serve</button + ><button + data-tab="websocket" + id="tab-websocket" + aria-controls="websocket-tab-content" + class="Tab" + role="tab" + tabindex="-1" + > + WebSocket</button + ><button + data-tab="sqlite" + id="tab-sqlite" + aria-controls="sqlite-tab-content" + class="Tab" + role="tab" + tabindex="-1" > -</div> -</div> -<div class="Graphs Graphs--active-react"> -<div class="Tabs" role="tablist"> -<button data-tab="react" id="tab-react" aria-controls="react-tab-content" class="Tab" role="tab" aria-selected="true" tabindex="0"> -Bun.serve</button - ><button data-tab="websocket" id="tab-websocket" aria-controls="websocket-tab-content" class="Tab" role="tab" tabindex="-1"> -WebSocket</button - ><button data-tab="sqlite" id="tab-sqlite" aria-controls="sqlite-tab-content" class="Tab" role="tab" tabindex="-1"> -bun:sqlite -</button> -</div> -<div id="active-tab" class="ActiveTab"> -<div role="tabpanel" tabindex="0" id="react-tab-content" aria-labelledby="tab-react" class="BarGraph BarGraph--react BarGraph--horizontal BarGraph--dark"> -<h2 class="BarGraph-heading">Server-side rendering React</h2> -<p class="BarGraph-subheading"> -HTTP requests per second (Linux x64) -</p> -<ul style="--count: 3" class="BarGraphList"> -<li class="BarGraphItem BarGraphItem--bun" style="--amount: 69845; --max: 87306.25"> -<div class="visually-hidden"> -bun: 69,845 requests per second -</div> -<div style="--amount: 69845; --max: 87306.25" class="BarGraphBar" aria-hidden="true"> -<div style="--amount: 69845; --max: 87306.25" class="BarGraphBar-label"> -69,845 -</div> -</div> -</li> -<li class="BarGraphItem BarGraphItem--node" style="--amount: 16288; --max: 87306.25"> -<div class="visually-hidden"> -node: 16,288 requests per second -</div> -<div style="--amount: 16288; --max: 87306.25" class="BarGraphBar" aria-hidden="true"> -<div style="--amount: 16288; --max: 87306.25" class="BarGraphBar-label"> -16,288 -</div> -</div> -</li> -<li class="BarGraphItem BarGraphItem--deno" style="--amount: 12926; --max: 87306.25"> -<div class="visually-hidden"> -deno: 12,926 requests per second -</div> -<div style="--amount: 12926; --max: 87306.25" class="BarGraphBar" aria-hidden="true"> -<div style="--amount: 12926; --max: 87306.25" class="BarGraphBar-label"> -12,926 -</div> -</div> -</li> -</ul> -<div style="--count: 3" class="BarGraphKey"> -<a href="https://github.com/oven-sh/bun/blob/b0a7f8df926e91d3b2f0b3b8833ddaf55073f30e/bench/react-hello-world/react-hello-world.jsx#L27" target="_blank" class="BarGraphKeyItem" aria-label="bun benchmark source"><div class="BarGraphKeyItem-label">bun</div> -<div class="BarGraphKeyItem-value">v0.2.0</div> -<div class="BarGraphKeyItem-viewSource">View source</div></a - ><a href="https://github.com/oven-sh/bun/blob/e55d6eed2bf9a5db30250fdd8b9be063dc949054/bench/react-hello-world/react-hello-world.node.jsx" target="_blank" class="BarGraphKeyItem" aria-label="node benchmark source"><div class="BarGraphKeyItem-label">node</div> -<div class="BarGraphKeyItem-value">v18.1.0</div> -<div class="BarGraphKeyItem-viewSource">View source</div></a - ><a href="https://github.com/oven-sh/bun/blob/af033c02c5fbaade201abfe332f376879d9e6885/bench/react-hello-world/react-hello-world.deno.jsx" target="_blank" class="BarGraphKeyItem" aria-label="Deno.serve() benchmark source"><div class="BarGraphKeyItem-label">Deno.serve()</div> -<div class="BarGraphKeyItem-value">v1.26.0</div> -<div class="BarGraphKeyItem-viewSource">View source</div></a + bun:sqlite + </button> + </div> + <div id="active-tab" class="ActiveTab"> + <div + role="tabpanel" + tabindex="0" + id="react-tab-content" + aria-labelledby="tab-react" + class="BarGraph BarGraph--react BarGraph--horizontal BarGraph--dark" + > + <h2 class="BarGraph-heading">Server-side rendering React</h2> + <p class="BarGraph-subheading">HTTP requests per second (Linux x64)</p> + <ul style="--count: 3" class="BarGraphList"> + <li class="BarGraphItem BarGraphItem--bun" style="--amount: 69845; --max: 87306.25"> + <div class="visually-hidden">bun: 69,845 requests per second</div> + <div style="--amount: 69845; --max: 87306.25" class="BarGraphBar" aria-hidden="true"> + <div style="--amount: 69845; --max: 87306.25" class="BarGraphBar-label">69,845</div> + </div> + </li> + <li class="BarGraphItem BarGraphItem--node" style="--amount: 16288; --max: 87306.25"> + <div class="visually-hidden">node: 16,288 requests per second</div> + <div style="--amount: 16288; --max: 87306.25" class="BarGraphBar" aria-hidden="true"> + <div style="--amount: 16288; --max: 87306.25" class="BarGraphBar-label">16,288</div> + </div> + </li> + <li class="BarGraphItem BarGraphItem--deno" style="--amount: 12926; --max: 87306.25"> + <div class="visually-hidden">deno: 12,926 requests per second</div> + <div style="--amount: 12926; --max: 87306.25" class="BarGraphBar" aria-hidden="true"> + <div style="--amount: 12926; --max: 87306.25" class="BarGraphBar-label">12,926</div> + </div> + </li> + </ul> + <div style="--count: 3" class="BarGraphKey"> + <a + href="https://github.com/oven-sh/bun/blob/b0a7f8df926e91d3b2f0b3b8833ddaf55073f30e/bench/react-hello-world/react-hello-world.jsx#L27" + target="_blank" + class="BarGraphKeyItem" + aria-label="bun benchmark source" + ><div class="BarGraphKeyItem-label">bun</div> + <div class="BarGraphKeyItem-value">v0.2.0</div> + <div class="BarGraphKeyItem-viewSource">View source</div></a + ><a + href="https://github.com/oven-sh/bun/blob/e55d6eed2bf9a5db30250fdd8b9be063dc949054/bench/react-hello-world/react-hello-world.node.jsx" + target="_blank" + class="BarGraphKeyItem" + aria-label="node benchmark source" + ><div class="BarGraphKeyItem-label">node</div> + <div class="BarGraphKeyItem-value">v18.1.0</div> + <div class="BarGraphKeyItem-viewSource">View source</div></a + ><a + href="https://github.com/oven-sh/bun/blob/af033c02c5fbaade201abfe332f376879d9e6885/bench/react-hello-world/react-hello-world.deno.jsx" + target="_blank" + class="BarGraphKeyItem" + aria-label="Deno.serve() benchmark source" + ><div class="BarGraphKeyItem-label">Deno.serve()</div> + <div class="BarGraphKeyItem-value">v1.26.0</div> + <div class="BarGraphKeyItem-viewSource">View source</div></a > -</div> -</div> -<div role="tabpanel" tabindex="-1" id="websocket-tab-content" aria-labelledby="tab-websocket" class="BarGraph BarGraph--websocket BarGraph--horizontal BarGraph--dark"> -<h2 class="BarGraph-heading">WebSocket server chat</h2> -<p class="BarGraph-subheading"> -Messages sent per second (Linux x64, 16 clients) -</p> -<ul style="--count: 3" class="BarGraphList"> -<li class="BarGraphItem BarGraphItem--bun" style="--amount: 737280; --max: 921600"> -<div class="visually-hidden"> -bun: 737,280 messages sent per second -</div> -<div style="--amount: 737280; --max: 921600" class="BarGraphBar" aria-hidden="true"> -<div style="--amount: 737280; --max: 921600" class="BarGraphBar-label"> -737,280 -</div> -</div> -</li> -<li class="BarGraphItem BarGraphItem--node" style="--amount: 107457; --max: 921600"> -<div class="visually-hidden"> -node: 107,457 messages sent per second -</div> -<div style="--amount: 107457; --max: 921600" class="BarGraphBar" aria-hidden="true"> -<div style="--amount: 107457; --max: 921600" class="BarGraphBar-label"> -107,457 -</div> -</div> -</li> -<li class="BarGraphItem BarGraphItem--deno" style="--amount: 82097; --max: 921600"> -<div class="visually-hidden"> -deno: 82,097 messages sent per second -</div> -<div style="--amount: 82097; --max: 921600" class="BarGraphBar" aria-hidden="true"> -<div style="--amount: 82097; --max: 921600" class="BarGraphBar-label"> -82,097 -</div> -</div> -</li> -</ul> -<div style="--count: 3" class="BarGraphKey"> -<a href="https://github.com/oven-sh/bun/blob/9c7eb75a9ac845d92bfdfd6cc574dc8f39bde293/bench/websocket-server/chat-server.bun.js#L1" target="_blank" class="BarGraphKeyItem" aria-label="Bun.serve() benchmark source"><div class="BarGraphKeyItem-label">Bun.serve()</div> -<div class="BarGraphKeyItem-value">v0.2.1</div> -<div class="BarGraphKeyItem-viewSource">View source</div></a - ><a href="https://github.com/oven-sh/bun/blob/9c7eb75a9ac845d92bfdfd6cc574dc8f39bde293/bench/websocket-server/chat-server.node.mjs#L1" target="_blank" class="BarGraphKeyItem" aria-label="ws (Node.js) benchmark source"><div class="BarGraphKeyItem-label">ws (Node.js)</div> -<div class="BarGraphKeyItem-value">node v18.10.0</div> -<div class="BarGraphKeyItem-viewSource">View source</div></a - ><a href="https://github.com/oven-sh/bun/blob/9c7eb75a9ac845d92bfdfd6cc574dc8f39bde293/bench/websocket-server/chat-server.deno.mjs#L1" target="_blank" class="BarGraphKeyItem" aria-label="Deno.serve() benchmark source"><div class="BarGraphKeyItem-label">Deno.serve()</div> -<div class="BarGraphKeyItem-value">v1.26.2</div> -<div class="BarGraphKeyItem-viewSource">View source</div></a + </div> + </div> + <div + role="tabpanel" + tabindex="-1" + id="websocket-tab-content" + aria-labelledby="tab-websocket" + class="BarGraph BarGraph--websocket BarGraph--horizontal BarGraph--dark" + > + <h2 class="BarGraph-heading">WebSocket server chat</h2> + <p class="BarGraph-subheading">Messages sent per second (Linux x64, 16 clients)</p> + <ul style="--count: 3" class="BarGraphList"> + <li class="BarGraphItem BarGraphItem--bun" style="--amount: 737280; --max: 921600"> + <div class="visually-hidden">bun: 737,280 messages sent per second</div> + <div style="--amount: 737280; --max: 921600" class="BarGraphBar" aria-hidden="true"> + <div style="--amount: 737280; --max: 921600" class="BarGraphBar-label">737,280</div> + </div> + </li> + <li class="BarGraphItem BarGraphItem--node" style="--amount: 107457; --max: 921600"> + <div class="visually-hidden">node: 107,457 messages sent per second</div> + <div style="--amount: 107457; --max: 921600" class="BarGraphBar" aria-hidden="true"> + <div style="--amount: 107457; --max: 921600" class="BarGraphBar-label">107,457</div> + </div> + </li> + <li class="BarGraphItem BarGraphItem--deno" style="--amount: 82097; --max: 921600"> + <div class="visually-hidden">deno: 82,097 messages sent per second</div> + <div style="--amount: 82097; --max: 921600" class="BarGraphBar" aria-hidden="true"> + <div style="--amount: 82097; --max: 921600" class="BarGraphBar-label">82,097</div> + </div> + </li> + </ul> + <div style="--count: 3" class="BarGraphKey"> + <a + href="https://github.com/oven-sh/bun/blob/9c7eb75a9ac845d92bfdfd6cc574dc8f39bde293/bench/websocket-server/chat-server.bun.js#L1" + target="_blank" + class="BarGraphKeyItem" + aria-label="Bun.serve() benchmark source" + ><div class="BarGraphKeyItem-label">Bun.serve()</div> + <div class="BarGraphKeyItem-value">v0.2.1</div> + <div class="BarGraphKeyItem-viewSource">View source</div></a + ><a + href="https://github.com/oven-sh/bun/blob/9c7eb75a9ac845d92bfdfd6cc574dc8f39bde293/bench/websocket-server/chat-server.node.mjs#L1" + target="_blank" + class="BarGraphKeyItem" + aria-label="ws (Node.js) benchmark source" + ><div class="BarGraphKeyItem-label">ws (Node.js)</div> + <div class="BarGraphKeyItem-value">node v18.10.0</div> + <div class="BarGraphKeyItem-viewSource">View source</div></a + ><a + href="https://github.com/oven-sh/bun/blob/9c7eb75a9ac845d92bfdfd6cc574dc8f39bde293/bench/websocket-server/chat-server.deno.mjs#L1" + target="_blank" + class="BarGraphKeyItem" + aria-label="Deno.serve() benchmark source" + ><div class="BarGraphKeyItem-label">Deno.serve()</div> + <div class="BarGraphKeyItem-value">v1.26.2</div> + <div class="BarGraphKeyItem-viewSource">View source</div></a > -</div> -</div> -<div role="tabpanel" tabindex="-1" id="sqlite-tab-content" aria-labelledby="tab-sqlite" class="BarGraph--sqlite BarGraph BarGraph--horizontal BarGraph--dark"> -<h2 class="BarGraph-heading">Load a huge table</h2> -<p class="BarGraph-subheading">Average queries per second</p> -<ul style="--count: 3" class="BarGraphList"> -<li class="BarGraphItem BarGraphItem--bun" style="--amount: 70.32; --max: 88"> -<div class="visually-hidden"> -bun: 70.32 queries per second -</div> -<div style="--amount: 70.32; --max: 88" class="BarGraphBar" aria-hidden="true"> -<div style="--amount: 70.32; --max: 88" class="BarGraphBar-label"> -70.32 -</div> -</div> -</li> -<li class="BarGraphItem BarGraphItem--deno" style="--amount: 36.54; --max: 88"> -<div class="visually-hidden"> -deno: 36.54 queries per second -</div> -<div style="--amount: 36.54; --max: 88" class="BarGraphBar" aria-hidden="true"> -<div style="--amount: 36.54; --max: 88" class="BarGraphBar-label"> -36.54 -</div> -</div> -</li> -<li class="BarGraphItem BarGraphItem--better-sqlite3" style="--amount: 23.28; --max: 88"> -<div class="visually-hidden"> -better-sqlite3: 23.28 queries per second -</div> -<div style="--amount: 23.28; --max: 88" class="BarGraphBar" aria-hidden="true"> -<div style="--amount: 23.28; --max: 88" class="BarGraphBar-label"> - 23.28 -</div> -</div> -</li> -</ul> -<div style="--count: 3" class="BarGraphKey"> -<a href="https://github.com/oven-sh/bun/blob/b0a7f8df926e91d3b2f0b3b8833ddaf55073f30e/bench/sqlite/bun.js#L9" target="_blank" class="BarGraphKeyItem" aria-label="bun:sqlite benchmark source"><div class="BarGraphKeyItem-label">bun:sqlite</div> -<div class="BarGraphKeyItem-value">v0.2.0</div> -<div class="BarGraphKeyItem-viewSource">View source</div></a - ><a href="https://github.com/oven-sh/bun/blob/6223030360c121e272aad98c7d1c14a009c5fc1c/bench/sqlite/deno.js#L9" target="_blank" class="BarGraphKeyItem" aria-label="deno (x/sqlite3) benchmark source"><div class="BarGraphKeyItem-label">deno (x/sqlite3)</div> -<div class="BarGraphKeyItem-value">v1.26.1</div> -<div class="BarGraphKeyItem-viewSource">View source</div></a - ><a href="https://github.com/oven-sh/bun/blob/e55d6eed2bf9a5db30250fdd8b9be063dc949054/bench/sqlite/node.mjs" target="_blank" class="BarGraphKeyItem" aria-label="better-sqlite3 benchmark source"><div class="BarGraphKeyItem-label">better-sqlite3</div> -<div class="BarGraphKeyItem-value">node v18.2.0</div> -<div class="BarGraphKeyItem-viewSource">View source</div></a + </div> + </div> + <div + role="tabpanel" + tabindex="-1" + id="sqlite-tab-content" + aria-labelledby="tab-sqlite" + class="BarGraph--sqlite BarGraph BarGraph--horizontal BarGraph--dark" + > + <h2 class="BarGraph-heading">Load a huge table</h2> + <p class="BarGraph-subheading">Average queries per second</p> + <ul style="--count: 3" class="BarGraphList"> + <li class="BarGraphItem BarGraphItem--bun" style="--amount: 70.32; --max: 88"> + <div class="visually-hidden">bun: 70.32 queries per second</div> + <div style="--amount: 70.32; --max: 88" class="BarGraphBar" aria-hidden="true"> + <div style="--amount: 70.32; --max: 88" class="BarGraphBar-label">70.32</div> + </div> + </li> + <li class="BarGraphItem BarGraphItem--deno" style="--amount: 36.54; --max: 88"> + <div class="visually-hidden">deno: 36.54 queries per second</div> + <div style="--amount: 36.54; --max: 88" class="BarGraphBar" aria-hidden="true"> + <div style="--amount: 36.54; --max: 88" class="BarGraphBar-label">36.54</div> + </div> + </li> + <li class="BarGraphItem BarGraphItem--better-sqlite3" style="--amount: 23.28; --max: 88"> + <div class="visually-hidden">better-sqlite3: 23.28 queries per second</div> + <div style="--amount: 23.28; --max: 88" class="BarGraphBar" aria-hidden="true"> + <div style="--amount: 23.28; --max: 88" class="BarGraphBar-label">23.28</div> + </div> + </li> + </ul> + <div style="--count: 3" class="BarGraphKey"> + <a + href="https://github.com/oven-sh/bun/blob/b0a7f8df926e91d3b2f0b3b8833ddaf55073f30e/bench/sqlite/bun.js#L9" + target="_blank" + class="BarGraphKeyItem" + aria-label="bun:sqlite benchmark source" + ><div class="BarGraphKeyItem-label">bun:sqlite</div> + <div class="BarGraphKeyItem-value">v0.2.0</div> + <div class="BarGraphKeyItem-viewSource">View source</div></a + ><a + href="https://github.com/oven-sh/bun/blob/6223030360c121e272aad98c7d1c14a009c5fc1c/bench/sqlite/deno.js#L9" + target="_blank" + class="BarGraphKeyItem" + aria-label="deno (x/sqlite3) benchmark source" + ><div class="BarGraphKeyItem-label">deno (x/sqlite3)</div> + <div class="BarGraphKeyItem-value">v1.26.1</div> + <div class="BarGraphKeyItem-viewSource">View source</div></a + ><a + href="https://github.com/oven-sh/bun/blob/e55d6eed2bf9a5db30250fdd8b9be063dc949054/bench/sqlite/node.mjs" + target="_blank" + class="BarGraphKeyItem" + aria-label="better-sqlite3 benchmark source" + ><div class="BarGraphKeyItem-label">better-sqlite3</div> + <div class="BarGraphKeyItem-value">node v18.2.0</div> + <div class="BarGraphKeyItem-viewSource">View source</div></a > -</div> -</div> -</div> -</div> -<div class="InstallBox InstallBox--mobile"> -<div class="InstallBox-label"> -<div class="InstallBox-label-heading"> -Install Bun CLI -<!-- -->0.2.1<!-- --> -(beta) -</div> -<div class="InstallBox-label-subtitle"> -macOS x64 & Silicon, Linux x64, Windows Subsystem for Linux -</div> -</div> -<div class="InstallBox-code-box"> -<div class="InstallBox-curl"> -curl https://bun.sh/install | bash -</div> -<button class="InstallBox-copy" aria-label="Copy installation script"> -copy -</button> -</div> -<a class="InstallBox-view-source-link" target="_blank" href="https://bun.sh/install">Show script source</a - > -</div> -</main> -</div> -<section id="explain-section"> -<div id="explain"> -<h2>Tell me more about Bun</h2> -<p> -Bun is a modern JavaScript runtime like Node or Deno. It was built -from scratch to focus on three main things: -</p> -<ul> -<li>Start fast (it has the edge in mind).</li> -<li> -New levels of performance (extending JavaScriptCore, the engine). -</li> -<li> -Being a great and complete tool (bundler, transpiler, package -manager). -</li> -</ul> -<p> -Bun is designed as a drop-in replacement for your current JavaScript -& TypeScript apps or scripts — on your local computer, server or -on the edge. Bun natively implements hundreds of Node.js and Web APIs, -including ~90% of<!-- --> -<a href="https://nodejs.org/api/n-api.html" target="_blank">Node-API</a - > -<!-- -->functions (native modules), fs, path, Buffer and more. -</p> -<p> -The goal of Bun is to run most of the world's JavaScript outside -of browsers, bringing performance and complexity enhancements to your -future infrastructure, as well as developer productivity through -better, simpler tooling. - </p> -<h2>Batteries included</h2> -<ul id="batteries"> -<li> -Web APIs like<!-- --> -<a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/API/fetch" class="Tag Tag--WebAPI">fetch</a + </div> + </div> + </div> + </div> + <div class="InstallBox InstallBox--mobile"> + <div class="InstallBox-label"> + <div class="InstallBox-label-heading"> + Install Bun CLI + <!-- -->0.2.1<!-- --> + (beta) + </div> + <div class="InstallBox-label-subtitle">macOS x64 & Silicon, Linux x64, Windows Subsystem for Linux</div> + </div> + <div class="InstallBox-code-box"> + <div class="InstallBox-curl">curl https://bun.sh/install | bash</div> + <button class="InstallBox-copy" aria-label="Copy installation script">copy</button> + </div> + <a class="InstallBox-view-source-link" target="_blank" href="https://bun.sh/install">Show script source</a> + </div> + </main> + </div> + <section id="explain-section"> + <div id="explain"> + <h2>Tell me more about Bun</h2> + <p> + Bun is a modern JavaScript runtime like Node or Deno. It was built from scratch to focus on three main things: + </p> + <ul> + <li>Start fast (it has the edge in mind).</li> + <li>New levels of performance (extending JavaScriptCore, the engine).</li> + <li>Being a great and complete tool (bundler, transpiler, package manager).</li> + </ul> + <p> + Bun is designed as a drop-in replacement for your current JavaScript & TypeScript apps or scripts — on + your local computer, server or on the edge. Bun natively implements hundreds of Node.js and Web APIs, + including ~90% of<!-- --> + <a href="https://nodejs.org/api/n-api.html" target="_blank">Node-API</a> + <!-- -->functions (native modules), fs, path, Buffer and more. + </p> + <p> + The goal of Bun is to run most of the world's JavaScript outside of browsers, bringing performance and + complexity enhancements to your future infrastructure, as well as developer productivity through better, + simpler tooling. + </p> + <h2>Batteries included</h2> + <ul id="batteries"> + <li> + Web APIs like<!-- --> + <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/API/fetch" class="Tag Tag--WebAPI" + >fetch</a >,<!-- --> -<a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/API/WebSocket" class="Tag Tag--WebAPI">WebSocket</a + <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/API/WebSocket" class="Tag Tag--WebAPI" + >WebSocket</a >, and<!-- --> -<a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream" class="Tag Tag--WebAPI">ReadableStream</a - > -<!-- -->are built-in -</li> -<li> -<span target="_blank" class="Tag Tag--NodeJS">node_modules</span> -bun implements Node.js' module resolution algorithm, so you can -use npm packages in Bun. ESM and CommonJS are supported, but Bun -internally uses ESM -</li> -<li> -In Bun, every file is transpiled.<!-- --> -<span target="_blank" class="Tag Tag--TypeScript">TypeScript</span> -& <span target="_blank" class="Tag Tag--React">JSX</span> just -work -</li> -<li> -Bun supports <code>"paths"</code>, -<code>"jsxImportSource"</code>and more from -<span target="_blank" class="Tag Tag--TypeScript">tsconfig.json</span - > -files -</li> -<li> -<span target="_blank" class="Tag Tag--Bun">Bun.Transpiler</span> -Bun's JSX & TypeScript transpiler is available as an API in -Bun -</li> -<li> -use the fastest system calls available with -<span target="_blank" class="Tag Tag--Bun">Bun.write</span> -<!-- -->to write, copy, pipe, send and clone files -</li> -<li> -Bun automatically loads environment variables from -<span target="_blank" class="Tag Tag--Bun">.env</span> -<!-- -->files. No more<!-- --> -<code class="mono">require("dotenv").config()</code> -</li> -<li> -Bun ships with a fast SQLite3 client built-in<!-- --> -<span target="_blank" class="Tag Tag--Bun">bun:sqlite</span> -</li> -<li> -<a target="_blank" href="https://github.com/oven-sh/bun/issues/158" class="Tag Tag--NodeJS">Node-API</a + <a + target="_blank" + href="https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream" + class="Tag Tag--WebAPI" + >ReadableStream</a > -<!-- -->Bun implements most of<!-- --> -<a href="https://nodejs.org/api/n-api.html#node-api" target="_blank">Node-API (N-API)</a - >. Many Node.js native modules just work -</li> -<li> -<span target="_blank" class="Tag Tag--Bun">bun:ffi</span> call -native code from JavaScript with Bun's low-overhead foreign -function interface -</li> -<li> -<span target="_blank" class="Tag Tag--NodeJS">node:fs</span> -<span target="_blank" class="Tag Tag--NodeJS">node:path</span> Bun -natively supports a growing list of Node.js core modules along with -globals like Buffer and process -</li> -</ul> -<h2>How does Bun work?</h2> -<p> -Bun uses the<!-- --> -<a href="https://github.com/WebKit/WebKit/tree/main/Source/JavaScriptCore">JavaScriptCore</a - > -<!-- -->engine, which tends<!-- --> -<a target="blank" href="https://twitter.com/jarredsumner/status/1499225725492076544">to start</a - > -<!-- -->and perform a little faster than more traditional choices like -V8. Bun is written in<!-- --> -<a href="https://ziglang.org/"><svg xmlns="http://www.w3.org/2000/svg" height="1.2rem" class="Zig" viewBox="0 0 400 140"> -<title>Zig</title> -<g fill="#F7A41D"> -<g> -<polygon points="46,22 28,44 19,30"></polygon> -<polygon points="46,22 33,33 28,44 22,44 22,95 31,95 20,100 12,117 0,117 0,22" shape-rendering="crispEdges"></polygon> -<polygon points="31,95 12,117 4,106"></polygon> -</g> -<g> -<polygon points="56,22 62,36 37,44"></polygon> -<polygon points="56,22 111,22 111,44 37,44 56,32" shape-rendering="crispEdges"></polygon> -<polygon points="116,95 97,117 90,104"></polygon> -<polygon points="116,95 100,104 97,117 42,117 42,95" shape-rendering="crispEdges"></polygon> -<polygon points="150,0 52,117 3,140 101,22"></polygon> -</g> -<g> -<polygon points="141,22 140,40 122,45"></polygon> -<polygon points="153,22 153,117 106,117 120,105 125,95 131,95 131,45 122,45 132,36 141,22" shape-rendering="crispEdges"></polygon> -<polygon points="125,95 130,110 106,117"></polygon> -</g> -</g> -<g fill="#121212"> -<g> -<polygon points="260,22 260,37 229,40 177,40 177,22" shape-rendering="crispEdges"></polygon> -<polygon points="260,37 207,99 207,103 176,103 229,40 229,37"></polygon> -<polygon points="261,99 261,117 176,117 176,103 206,99" shape-rendering="crispEdges"></polygon> -</g> -<rect x="272" y="22" shape-rendering="crispEdges" width="22" height="95"></rect> -<g> -<polygon points="394,67 394,106 376,106 376,81 360,70 346,67" shape-rendering="crispEdges"></polygon> -<polygon points="360,68 376,81 346,67"></polygon> -<path d="M394,106c-10.2,7.3-24,12-37.7,12c-29,0-51.1-20.8-51.1-48.3c0-27.3,22.5-48.1,52-48.1 + <!-- -->are built-in + </li> + <li> + <span target="_blank" class="Tag Tag--NodeJS">node_modules</span> + bun implements Node.js' module resolution algorithm, so you can use npm packages in Bun. ESM and + CommonJS are supported, but Bun internally uses ESM + </li> + <li> + In Bun, every file is transpiled.<!-- --> + <span target="_blank" class="Tag Tag--TypeScript">TypeScript</span> + & <span target="_blank" class="Tag Tag--React">JSX</span> just work + </li> + <li> + Bun supports <code>"paths"</code>, <code>"jsxImportSource"</code>and more from + <span target="_blank" class="Tag Tag--TypeScript">tsconfig.json</span> + files + </li> + <li> + <span target="_blank" class="Tag Tag--Bun">Bun.Transpiler</span> + Bun's JSX & TypeScript transpiler is available as an API in Bun + </li> + <li> + use the fastest system calls available with + <span target="_blank" class="Tag Tag--Bun">Bun.write</span> + <!-- -->to write, copy, pipe, send and clone files + </li> + <li> + Bun automatically loads environment variables from + <span target="_blank" class="Tag Tag--Bun">.env</span> + <!-- -->files. No more<!-- --> + <code class="mono">require("dotenv").config()</code> + </li> + <li> + Bun ships with a fast SQLite3 client built-in<!-- --> + <span target="_blank" class="Tag Tag--Bun">bun:sqlite</span> + </li> + <li> + <a target="_blank" href="https://github.com/oven-sh/bun/issues/158" class="Tag Tag--NodeJS">Node-API</a> + <!-- -->Bun implements most of<!-- --> + <a href="https://nodejs.org/api/n-api.html#node-api" target="_blank">Node-API (N-API)</a>. Many Node.js + native modules just work + </li> + <li> + <span target="_blank" class="Tag Tag--Bun">bun:ffi</span> call native code from JavaScript with Bun's + low-overhead foreign function interface + </li> + <li> + <span target="_blank" class="Tag Tag--NodeJS">node:fs</span> + <span target="_blank" class="Tag Tag--NodeJS">node:path</span> Bun natively supports a growing list of + Node.js core modules along with globals like Buffer and process + </li> + </ul> + <h2>How does Bun work?</h2> + <p> + Bun uses the<!-- --> + <a href="https://github.com/WebKit/WebKit/tree/main/Source/JavaScriptCore">JavaScriptCore</a> + <!-- -->engine, which tends<!-- --> + <a target="blank" href="https://twitter.com/jarredsumner/status/1499225725492076544">to start</a> + <!-- -->and perform a little faster than more traditional choices like V8. Bun is written in<!-- --> + <a href="https://ziglang.org/" + ><svg xmlns="http://www.w3.org/2000/svg" height="1.2rem" class="Zig" viewBox="0 0 400 140"> + <title>Zig</title> + <g fill="#F7A41D"> + <g> + <polygon points="46,22 28,44 19,30"></polygon> + <polygon + points="46,22 33,33 28,44 22,44 22,95 31,95 20,100 12,117 0,117 0,22" + shape-rendering="crispEdges" + ></polygon> + <polygon points="31,95 12,117 4,106"></polygon> + </g> + <g> + <polygon points="56,22 62,36 37,44"></polygon> + <polygon points="56,22 111,22 111,44 37,44 56,32" shape-rendering="crispEdges"></polygon> + <polygon points="116,95 97,117 90,104"></polygon> + <polygon points="116,95 100,104 97,117 42,117 42,95" shape-rendering="crispEdges"></polygon> + <polygon points="150,0 52,117 3,140 101,22"></polygon> + </g> + <g> + <polygon points="141,22 140,40 122,45"></polygon> + <polygon + points="153,22 153,117 106,117 120,105 125,95 131,95 131,45 122,45 132,36 141,22" + shape-rendering="crispEdges" + ></polygon> + <polygon points="125,95 130,110 106,117"></polygon> + </g> + </g> + <g fill="#121212"> + <g> + <polygon points="260,22 260,37 229,40 177,40 177,22" shape-rendering="crispEdges"></polygon> + <polygon points="260,37 207,99 207,103 176,103 229,40 229,37"></polygon> + <polygon points="261,99 261,117 176,117 176,103 206,99" shape-rendering="crispEdges"></polygon> + </g> + <rect x="272" y="22" shape-rendering="crispEdges" width="22" height="95"></rect> + <g> + <polygon points="394,67 394,106 376,106 376,81 360,70 346,67" shape-rendering="crispEdges"></polygon> + <polygon points="360,68 376,81 346,67"></polygon> + <path + d="M394,106c-10.2,7.3-24,12-37.7,12c-29,0-51.1-20.8-51.1-48.3c0-27.3,22.5-48.1,52-48.1 c14.3,0,29.2,5.5,38.9,14l-13,15c-7.1-6.3-16.8-10-25.9-10c-17,0-30.2,12.9-30.2,29.5c0,16.8,13.3,29.6,30.3,29.6 - c5.7,0,12.8-2.3,19-5.5L394,106z"></path> -</g> -</g></svg></a - >, a low-level programming language with manual memory management.<br /><br />Most -of Bun is written from scratch including the JSX/TypeScript -transpiler, npm client, bundler, SQLite client, HTTP client, WebSocket -client and more. -</p> -<h2>Why is Bun fast?</h2> -<p> -An enormous amount of time spent profiling, benchmarking and -optimizing things. The answer is different for every part of Bun, but -one general theme:<!-- --> -<a href="https://ziglang.org/"><svg xmlns="http://www.w3.org/2000/svg" height="1.2rem" class="Zig" viewBox="0 0 400 140"> -<title>Zig</title> -<g fill="#F7A41D"> -<g> -<polygon points="46,22 28,44 19,30"></polygon> -<polygon points="46,22 33,33 28,44 22,44 22,95 31,95 20,100 12,117 0,117 0,22" shape-rendering="crispEdges"></polygon> -<polygon points="31,95 12,117 4,106"></polygon> -</g> -<g> -<polygon points="56,22 62,36 37,44"></polygon> -<polygon points="56,22 111,22 111,44 37,44 56,32" shape-rendering="crispEdges"></polygon> -<polygon points="116,95 97,117 90,104"></polygon> -<polygon points="116,95 100,104 97,117 42,117 42,95" shape-rendering="crispEdges"></polygon> -<polygon points="150,0 52,117 3,140 101,22"></polygon> -</g> -<g> -<polygon points="141,22 140,40 122,45"></polygon> -<polygon points="153,22 153,117 106,117 120,105 125,95 131,95 131,45 122,45 132,36 141,22" shape-rendering="crispEdges"></polygon> -<polygon points="125,95 130,110 106,117"></polygon> -</g> -</g> -<g fill="#121212"> -<g> -<polygon points="260,22 260,37 229,40 177,40 177,22" shape-rendering="crispEdges"></polygon> -<polygon points="260,37 207,99 207,103 176,103 229,40 229,37"></polygon> -<polygon points="261,99 261,117 176,117 176,103 206,99" shape-rendering="crispEdges"></polygon> -</g> -<rect x="272" y="22" shape-rendering="crispEdges" width="22" height="95"></rect> -<g> -<polygon points="394,67 394,106 376,106 376,81 360,70 346,67" shape-rendering="crispEdges"></polygon> -<polygon points="360,68 376,81 346,67"></polygon> -<path d="M394,106c-10.2,7.3-24,12-37.7,12c-29,0-51.1-20.8-51.1-48.3c0-27.3,22.5-48.1,52-48.1 + c5.7,0,12.8-2.3,19-5.5L394,106z" + ></path> + </g> + </g></svg></a + >, a low-level programming language with manual memory management.<br /><br />Most of Bun is written from + scratch including the JSX/TypeScript transpiler, npm client, bundler, SQLite client, HTTP client, WebSocket + client and more. + </p> + <h2>Why is Bun fast?</h2> + <p> + An enormous amount of time spent profiling, benchmarking and optimizing things. The answer is different for + every part of Bun, but one general theme:<!-- --> + <a href="https://ziglang.org/" + ><svg xmlns="http://www.w3.org/2000/svg" height="1.2rem" class="Zig" viewBox="0 0 400 140"> + <title>Zig</title> + <g fill="#F7A41D"> + <g> + <polygon points="46,22 28,44 19,30"></polygon> + <polygon + points="46,22 33,33 28,44 22,44 22,95 31,95 20,100 12,117 0,117 0,22" + shape-rendering="crispEdges" + ></polygon> + <polygon points="31,95 12,117 4,106"></polygon> + </g> + <g> + <polygon points="56,22 62,36 37,44"></polygon> + <polygon points="56,22 111,22 111,44 37,44 56,32" shape-rendering="crispEdges"></polygon> + <polygon points="116,95 97,117 90,104"></polygon> + <polygon points="116,95 100,104 97,117 42,117 42,95" shape-rendering="crispEdges"></polygon> + <polygon points="150,0 52,117 3,140 101,22"></polygon> + </g> + <g> + <polygon points="141,22 140,40 122,45"></polygon> + <polygon + points="153,22 153,117 106,117 120,105 125,95 131,95 131,45 122,45 132,36 141,22" + shape-rendering="crispEdges" + ></polygon> + <polygon points="125,95 130,110 106,117"></polygon> + </g> + </g> + <g fill="#121212"> + <g> + <polygon points="260,22 260,37 229,40 177,40 177,22" shape-rendering="crispEdges"></polygon> + <polygon points="260,37 207,99 207,103 176,103 229,40 229,37"></polygon> + <polygon points="261,99 261,117 176,117 176,103 206,99" shape-rendering="crispEdges"></polygon> + </g> + <rect x="272" y="22" shape-rendering="crispEdges" width="22" height="95"></rect> + <g> + <polygon points="394,67 394,106 376,106 376,81 360,70 346,67" shape-rendering="crispEdges"></polygon> + <polygon points="360,68 376,81 346,67"></polygon> + <path + d="M394,106c-10.2,7.3-24,12-37.7,12c-29,0-51.1-20.8-51.1-48.3c0-27.3,22.5-48.1,52-48.1 c14.3,0,29.2,5.5,38.9,14l-13,15c-7.1-6.3-16.8-10-25.9-10c-17,0-30.2,12.9-30.2,29.5c0,16.8,13.3,29.6,30.3,29.6 - c5.7,0,12.8-2.3,19-5.5L394,106z"></path> -</g> -</g></svg></a - >'s low-level control over memory and lack of hidden control flow -makes it much simpler to write fast software.<!-- --> -<a href="https://github.com/sponsors/ziglang">Sponsor the Zig Software Foundation</a - >. -</p> -<h2>Getting started</h2> -<p> -To install Bun, run this<!-- --> -<a target="_blank" href="https://bun.sh/install">install script</a> -<!-- -->in your terminal. It downloads Bun from GitHub. -</p> -<div class="CodeBlock"> -<pre class="shiki" style="background-color: #282a36"><code><span class="line"><span style="color: #F8F8F2">curl https://bun.sh/install </span><span style="color: #FF79C6">|</span><span style="color: #F8F8F2"> bash</span></span></code></pre> -</div> -<p> -<!-- -->Bun's HTTP server is built on web standards like<!-- --> -<a class="Identifier" href="https://developer.mozilla.org/en-US/docs/Web/API/Request">Request</a - > -<!-- -->and<!-- --> -<a class="Identifier" href="https://developer.mozilla.org/en-US/docs/Web/API/Response">Response</a - > -</p> -<div class="CodeBlock"> -<pre class="shiki" style="background-color: #282a36"><code><span class="line"><span style="color: #6272A4">// http.js</span></span> + c5.7,0,12.8-2.3,19-5.5L394,106z" + ></path> + </g> + </g></svg></a + >'s low-level control over memory and lack of hidden control flow makes it much simpler to write fast + software.<!-- --> + <a href="https://github.com/sponsors/ziglang">Sponsor the Zig Software Foundation</a>. + </p> + <h2>Getting started</h2> + <p> + To install Bun, run this<!-- --> + <a target="_blank" href="https://bun.sh/install">install script</a> + <!-- -->in your terminal. It downloads Bun from GitHub. + </p> + <div class="CodeBlock"> + <pre + class="shiki" + style="background-color: #282a36" + ><code><span class="line"><span style="color: #F8F8F2">curl https://bun.sh/install </span><span style="color: #FF79C6">|</span><span style="color: #F8F8F2"> bash</span></span></code></pre> + </div> + <p> + <!-- -->Bun's HTTP server is built on web standards like<!-- --> + <a class="Identifier" href="https://developer.mozilla.org/en-US/docs/Web/API/Request">Request</a> + <!-- -->and<!-- --> + <a class="Identifier" href="https://developer.mozilla.org/en-US/docs/Web/API/Response">Response</a> + </p> + <div class="CodeBlock"> + <pre + class="shiki" + style="background-color: #282a36" + ><code><span class="line"><span style="color: #6272A4">// http.js</span></span> <span class="line"><span style="color: #FF79C6">export</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">default</span><span style="color: #F8F8F2"> {</span></span> <span class="line"><span style="color: #F8F8F2"> port</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">3000</span><span style="color: #F8F8F2">,</span></span> <span class="line"><span style="color: #F8F8F2"> </span><span style="color: #50FA7B">fetch</span><span style="color: #F8F8F2">(</span><span style="color: #FFB86C; font-style: italic">request</span><span style="color: #F8F8F2">) {</span></span> <span class="line"><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">return</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6; font-weight: bold">new</span><span style="color: #F8F8F2"> </span><span style="color: #50FA7B">Response</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Welcome to Bun!</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">);</span></span> <span class="line"><span style="color: #F8F8F2"> },</span></span> <span class="line"><span style="color: #F8F8F2">};</span></span></code></pre> -</div> -<p>Run it with Bun:</p> -<div class="CodeBlock"> -<pre class="shiki" style="background-color: #282a36"><code><span class="line"><span style="color: #F8F8F2">bun run http.js</span></span></code></pre> -</div> -<p> -Then open<!-- --> -<a target="_blank" href="http://localhost:3000">http://localhost:3000</a - > -<!-- -->in your browser.<br /><br />See<!-- --> -<a href="https://github.com/oven-sh/bun/tree/main/examples">more examples</a - > -<!-- -->and check out<!-- --> -<a href="https://github.com/oven-sh/bun#Reference">the docs</a>. If -you have any questions or want help, join<!-- --> -<a href="https://bun.sh/discord">Bun's Discord</a>. -</p> -<h2>Bun CLI</h2> -<div class="Group"> -<span target="_blank" class="Tag Tag--Command">bun run</span> -<p> -The same command for running JavaScript & TypeScript files with -bun's JavaScript runtime also runs package.json<!-- --> -<code class="mono">"scripts"</code>. -</p> -<strong>Replace <code class="mono">npm run</code> with<!-- --> -<code class="mono">bun run</code> and save 160ms on every -run.</strong + </div> + <p>Run it with Bun:</p> + <div class="CodeBlock"> + <pre + class="shiki" + style="background-color: #282a36" + ><code><span class="line"><span style="color: #F8F8F2">bun run http.js</span></span></code></pre> + </div> + <p> + Then open<!-- --> + <a target="_blank" href="http://localhost:3000">http://localhost:3000</a> + <!-- -->in your browser.<br /><br />See<!-- --> + <a href="https://github.com/oven-sh/bun/tree/main/examples">more examples</a> + <!-- -->and check out<!-- --> + <a href="https://github.com/oven-sh/bun#Reference">the docs</a>. If you have any questions or want help, join<!-- --> + <a href="https://bun.sh/discord">Bun's Discord</a>. + </p> + <h2>Bun CLI</h2> + <div class="Group"> + <span target="_blank" class="Tag Tag--Command">bun run</span> + <p> + The same command for running JavaScript & TypeScript files with bun's JavaScript runtime also runs + package.json<!-- --> + <code class="mono">"scripts"</code>. + </p> + <strong + >Replace <code class="mono">npm run</code> with<!-- --> + <code class="mono">bun run</code> and save 160ms on every run.</strong ><br /> -<div> -Bun runs package.json scripts<!-- --> -<a href="https://twitter.com/jarredsumner/status/1454218996983623685" target="_blank" class="PerformanceClaim">30x faster than <code class="mono">npm run</code></a + <div> + Bun runs package.json scripts<!-- --> + <a + href="https://twitter.com/jarredsumner/status/1454218996983623685" + target="_blank" + class="PerformanceClaim" + >30x faster than <code class="mono">npm run</code></a > -</div> -</div> -<div class="Group"> -<span target="_blank" class="Tag Tag--Command">bun install</span> -<p> -<code classsName="mono">bun install</code> is an npm-compatible -package manager. You probably will be surprised by how much faster -copying files can get. -</p> -<strong>Replace <code class="mono">yarn</code> with<!-- --> -<code class="mono">bun install</code> and get 20x faster package -installs.</strong + </div> + </div> + <div class="Group"> + <span target="_blank" class="Tag Tag--Command">bun install</span> + <p> + <code classsName="mono">bun install</code> is an npm-compatible package manager. You probably will be + surprised by how much faster copying files can get. + </p> + <strong + >Replace <code class="mono">yarn</code> with<!-- --> + <code class="mono">bun install</code> and get 20x faster package installs.</strong ><br /> -<div> -<code class="mono">bun install</code> uses the fastest system calls -available to copy files. -</div> -</div> -<div class="Group"> -<span target="_blank" class="Tag Tag--Command">bun wiptest</span> -<p> -A Jest-like test runner for JavaScript & TypeScript projects -built-in to Bun. -</p> -<div class="Label"> -<a href="https://twitter.com/jarredsumner/status/1542824445810642946" target="_blank" class="PerformanceClaim">You've never seen a JavaScript test runner this fast</a + <div><code class="mono">bun install</code> uses the fastest system calls available to copy files.</div> + </div> + <div class="Group"> + <span target="_blank" class="Tag Tag--Command">bun wiptest</span> + <p>A Jest-like test runner for JavaScript & TypeScript projects built-in to Bun.</p> + <div class="Label"> + <a + href="https://twitter.com/jarredsumner/status/1542824445810642946" + target="_blank" + class="PerformanceClaim" + >You've never seen a JavaScript test runner this fast</a > -<!-- -->(or incomplete). -</div> -</div> -<h2>What is the license?</h2> -<p>MIT License, excluding dependencies which have various licenses.</p> -<h2>How do I see the source code?</h2> -<p>Bun is on <a href="https://github.com/oven-sh/bun">GitHub</a>.</p> -</div> -</section> -<section id="explain-section"><div id="explain"></div></section> -<script> - [...document.querySelectorAll(".Tab")].map((el) => { + <!-- -->(or incomplete). + </div> + </div> + <h2>What is the license?</h2> + <p>MIT License, excluding dependencies which have various licenses.</p> + <h2>How do I see the source code?</h2> + <p>Bun is on <a href="https://github.com/oven-sh/bun">GitHub</a>.</p> + </div> + </section> + <section id="explain-section"><div id="explain"></div></section> + <script> + [...document.querySelectorAll(".Tab")].map(el => { el.addEventListener("click", function (e) { var tab = e.srcElement.getAttribute("data-tab"); - [...document.querySelectorAll(".Tab")].map((el) => { + [...document.querySelectorAll(".Tab")].map(el => { var active = el.getAttribute("data-tab") === tab; el.setAttribute("tabindex", active ? 0 : -1); el.setAttribute("aria-selected", active); }); - [...document.querySelectorAll(".BarGraph")].map((el) => { + [...document.querySelectorAll(".BarGraph")].map(el => { var active = el.id === tab + "-tab-content"; el.setAttribute("tabindex", active ? 0 : -1); }); - document - .querySelector(".Graphs") - .setAttribute("class", "Graphs Graphs--active-" + tab); + document.querySelector(".Graphs").setAttribute("class", "Graphs Graphs--active-" + tab); }); - el.addEventListener("keydown", (e) => { + el.addEventListener("keydown", e => { var tabs = [...document.querySelectorAll(".Tab")]; - var activeTabEl = document.querySelector( - ".Tab[aria-selected='true']" - ); + var activeTabEl = document.querySelector(".Tab[aria-selected='true']"); var activeTabIndex = tabs.indexOf(activeTabEl); if (e.key === "ArrowRight" || e.key === "ArrowDown") { e.preventDefault(); @@ -1380,16 +1415,14 @@ built-in to Bun. }); for (const el of document.querySelectorAll(".InstallBox-copy")) { - el.addEventListener("click", async (e) => { - await navigator.clipboard.writeText( - "curl https://bun.sh/install | bash" - ); + el.addEventListener("click", async e => { + await navigator.clipboard.writeText("curl https://bun.sh/install | bash"); }); } </script> -<div class="Built"> -Built with Bun -<!-- -->0.2.1 -</div> -</body> + <div class="Built"> + Built with Bun + <!-- -->0.2.1 + </div> + </body> </html> |