diff options
84 files changed, 623 insertions, 475 deletions
@@ -429,6 +429,8 @@ prepare-types: cd /tmp && tsc /tmp/bun-types.d.ts release-types: + # can be removed when/if "bun publish" is implemented + @npm --version >/dev/null 2>&1 || (echo -e "ERROR: npm is required."; exit 1) cd packages/bun-types && npm publish format: @@ -511,7 +513,7 @@ require: @if [ $(CLANG_VERSION) -lt "13" ]; then echo -e "ERROR: clang version >=13 required, found: $(CLANG_VERSION). Install with:\n\n $(POSIX_PKG_MANAGER) install llvm@13"; exit 1; fi @cmake --version >/dev/null 2>&1 || (echo -e "ERROR: cmake is required."; exit 1) @esbuild --version >/dev/null 2>&1 || (echo -e "ERROR: esbuild is required."; exit 1) - @npm --version >/dev/null 2>&1 || (echo -e "ERROR: npm is required."; exit 1) + @$(NPM_CLIENT) --version >/dev/null 2>&1 || (echo -e "ERROR: NPM client (bun or npm) is required."; exit 1) @go version >/dev/null 2>&1 || (echo -e "ERROR: go is required."; exit 1) @which aclocal > /dev/null || (echo -e "ERROR: automake is required. Install with:\n\n $(POSIX_PKG_MANAGER) install automake"; exit 1) @which $(LIBTOOL) > /dev/null || (echo -e "ERROR: libtool is required. Install with:\n\n $(POSIX_PKG_MANAGER) install libtool"; exit 1) @@ -914,6 +914,8 @@ If you get this error while bun is initializing, You probably need to wrap the b # cd sde-external* # mkdir /usr/local/bin -p # cp sde64 /usr/local/bin/sde +# cp -r intel64 /usr/local/bin/ +# cp -r misc /usr/local/bin/ ``` 2. Add alias to bashrc ``` Binary files differdiff --git a/package.json b/package.json index e565372e5..ab0f50e5f 100644 --- a/package.json +++ b/package.json @@ -17,4 +17,4 @@ "typescript": "4.6.3" }, "version": "0.0.0" -} +}
\ No newline at end of file diff --git a/packages/bun-landing/index.css b/packages/bun-landing/index.css index 78b440edc..d8cd2798b 100644 --- a/packages/bun-landing/index.css +++ b/packages/bun-landing/index.css @@ -440,7 +440,7 @@ header { .BarGraphItem--bun .BarGraphBar { background-color: rgb(249, 241, 225); box-shadow: inset 1px 1px 3px rgb(204, 198, 187); - background-image: url("/logo.png"); + background-image: url("/logo.svg"); background-repeat: no-repeat; background-size: 56px 48.8px; background-position: 6px 20%; diff --git a/packages/bun-landing/page.tsx b/packages/bun-landing/page.tsx index d3f4cd867..6204edd51 100644 --- a/packages/bun-landing/page.tsx +++ b/packages/bun-landing/page.tsx @@ -224,6 +224,19 @@ export default ({ inlineCSS }) => ( 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="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" /> <title>Bun is a fast all-in-one JavaScript runtime</title> {inlineCSS ? ( @@ -241,7 +254,7 @@ export default ({ inlineCSS }) => ( <div id="header-wrap"> <header> <a href="/" id="logo-link" aria-label="home"> - <img height="61px" src="/logo.png" srcSet="/logo.png 1x, /logo@2x.png 2x" alt="Bun logo" id="logo" /> + <img height="61px" src="/logo.svg" alt="Bun logo" id="logo" /> <img height="31.65px" src="/Bun.png" @@ -616,7 +629,7 @@ export default ({ inlineCSS }) => ( but one general theme:{" "} <a href="https://ziglang.org/"> <Zig></Zig> - </a>{" "} + </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"> diff --git a/packages/bun-landing/public/favicon.ico b/packages/bun-landing/public/favicon.ico Binary files differnew file mode 100644 index 000000000..5b9f93874 --- /dev/null +++ b/packages/bun-landing/public/favicon.ico diff --git a/packages/bun-landing/public/index.css b/packages/bun-landing/public/index.css index 6c2a6a9d7..bc28c45f0 100644 --- a/packages/bun-landing/public/index.css +++ b/packages/bun-landing/public/index.css @@ -17,9 +17,11 @@ --vertical-padding: 4rem; --line-height: 1.4; } + * { box-sizing: border-box; } + head, body, :root { @@ -37,14 +39,17 @@ a { text-decoration: none; transition: transform 0.1s linear; } + a:visited { color: inherit; } + a:hover { text-decoration: underline; transform: scale(1.06, 1.06); transform-origin: middle center; } + #header-wrap, #pitch { background-color: var(--black); @@ -58,6 +63,7 @@ a:hover { gap: 24px; align-items: center; } + main { width: auto; @@ -65,6 +71,7 @@ main { max-width: var(--max-width); display: grid; grid-template-columns: auto auto; + overflow-y: hidden; } main, @@ -95,6 +102,7 @@ header { .subtitle { font-size: 1.2rem; } + nav { white-space: nowrap; display: flex; @@ -139,6 +147,7 @@ header { cursor: pointer; transform: scale(1.06); } + #HeaderInstallButton { transition: transform 0.1s linear; background: #00a6e1; @@ -226,15 +235,12 @@ header { align-items: center; border: 1px solid var(--orange); margin-top: 1rem; - display: grid; + display: flex; + justify-content: space-between; align-content: center; white-space: nowrap; margin-bottom: 1rem; -} - -#code-box { font-family: var(--monospace-font); - position: relative; } #curl:hover { @@ -244,7 +250,7 @@ header { #curl::before { display: block; - content: "$"; + content: "$" / ""; color: var(--orange); pointer-events: none; width: 1ch; @@ -267,21 +273,18 @@ header { } #code-box-copy { - position: absolute; - right: 16px; - top: 0; - bottom: 0; height: 100%; - display: flex; align-items: center; - z-index: 5; - color: var(--orange-light); transition: transform 0.05s linear; transition-property: color, transform; transform-origin: center center; cursor: pointer; + background: transparent; + border: none; + font-size: inherit; + font-family: inherit; } #code-box-copy:hover { @@ -302,6 +305,8 @@ header { align-items: center; width: min-content; white-space: nowrap; + list-style-type: none; + padding: 0; } .Tab { @@ -311,15 +316,25 @@ header { padding-bottom: 8px; border-bottom: 1px solid #ccc; cursor: pointer; + padding: 0; +} + +.TabButton { + background: transparent; + border: none; padding: 16px 16px; + color: inherit; + font-size: inherit; + font-family: inherit; + cursor: inherit; } -.Tab[data-tab="react"]:hover, -.Graphs--active-react .Tab[data-tab="react"], -.Tab[data-tab="sqlite"]:hover, -.Graphs--active-sqlite .Tab[data-tab="sqlite"], -.Tab[data-tab="ffi"]:hover, -.Graphs--active-ffi .Tab[data-tab="ffi"] { +.TabButton[data-tab="react"]:hover, +.Graphs--active-react .TabButton[data-tab="react"], +.TabButton[data-tab="sqlite"]:hover, +.Graphs--active-sqlite .TabButton[data-tab="sqlite"], +.TabButton[data-tab="ffi"]:hover, +.Graphs--active-ffi .TabButton[data-tab="ffi"] { border-bottom-color: aquamarine; background-color: rgba(130, 216, 247, 0.1); border-right-color: aquamarine; @@ -335,12 +350,16 @@ header { .BarGraph-heading { font-weight: 500; font-size: 1.5rem; + margin: 0; } .BarGraphList { flex: 1; position: relative; + list-style-type: none; + padding: 0; } + .BarGraph, .ActiveTab, .Graphs { @@ -350,6 +369,7 @@ header { .BarGraph-subheading { font-size: 0.9rem; color: rgb(135, 134, 134); + margin: 0; } .BarGraphList { @@ -385,30 +405,27 @@ header { .BarGraphBar { margin: 0 auto; - width: var(--primary); height: var(--opposite); - background-color: rgb(93, 89, 134); - transform-origin: bottom center; - transform: scaleY(var(--level)); position: relative; + height: calc(200px * var(--level)); } .BarGraphItem { border-right: 1px dashed var(--dark-border); border-top: 1px dashed var(--dark-border); border-bottom: 1px dashed var(--dark-border); + min-height: 200px; + display: flex; + flex-direction: column; + justify-content: flex-end; } .BarGraphItem--deno { border-right-color: transparent; } -.BarGraph--horizontal .BarGraphBar { - min-height: 200px; -} - .BarGraph--vertical .BarGraphBar { max-width: 90%; } @@ -419,8 +436,9 @@ header { font-family: var(--monospace-font); width: 100%; text-align: center; - position: relative; + display: flex; + justify-content: center; } .CardContent { @@ -434,14 +452,13 @@ header { } .BarGraph--horizontal .BarGraphBar-label { - transform: scaleY(var(--inverse)); - top: calc(-20px * var(--inverse)); + top: -22px; } .BarGraphItem--bun .BarGraphBar { background-color: rgb(249, 241, 225); box-shadow: inset 1px 1px 3px rgb(204, 198, 187); - background-image: url("/logo.png"); + background-image: url("/logo.svg"); background-repeat: no-repeat; background-size: 56px 48.8px; background-position: 6px 20%; @@ -460,10 +477,8 @@ header { .BarGraph--vertical .BarGraphBar { height: var(--primary); width: var(--opposite); - transform: scaleX(var(--level)); transform-origin: bottom left; - max-height: 40px; margin-top: 1rem; margin-bottom: 1rem; @@ -484,13 +499,13 @@ header { } .BarGraphKeyItem-value { - color: #666; + color: #7a7a7a; margin-top: 0.5rem; } .BarGraphKeyItem-viewSource { margin-top: 0.5rem; - color: #666; + color: #7a7a7a; text-transform: lowercase; font-weight: thin; font-size: 0.8rem; @@ -520,7 +535,7 @@ header { } .DemphasizedLabel { - color: #666; + color: #7a7a7a; font-weight: 300; } @@ -535,8 +550,6 @@ header { display: grid; } -#explain-section { -} #explain ul { font-size: 1.2rem; } @@ -572,7 +585,7 @@ header { } .Tag--Command:before { - content: "❯"; + content: "❯" / ""; color: rgba(255, 255, 255, 0.35); margin-top: auto; margin-bottom: auto; @@ -603,22 +616,18 @@ header { .Tag--React:before { color: rgba(130, 216, 247, 0.5); - content: "<"; + content: "<" / ""; } .Tag--React:after { color: rgba(130, 216, 247, 0.5); - content: ">"; + content: ">" / ""; } .Tag--Bun { --background: #ff17ff; } -ul, -li { -} - .mono { font-family: var(--monospace-font); border-radius: 6px; @@ -817,9 +826,6 @@ li { gap: 2rem; } - .Tabs { - } - .tagline, .subtitle, .BarGraph-heading, @@ -852,16 +858,17 @@ li { margin: 0; gap: 0rem; width: 100%; + border-top: 1px solid rgba(200, 200, 200, 0.1); } .Tab { width: 100%; - padding-top: 16px; - padding-bottom: 16px; + border-bottom-color: #333; } - .Tab { - border-bottom-color: #333; + .TabButton { + padding-top: 16px; + padding-bottom: 16px; } #pitch-content { @@ -873,10 +880,6 @@ li { .Graphs--active-ffi .Tab[data-tab="ffi"] { background-color: rgba(100, 100, 100, 0.1); } - - .Tabs { - border-top: 1px solid rgba(200, 200, 200, 0.1); - } } #explain p > code { @@ -926,3 +929,13 @@ li { img { object-fit: contain; } + +.visually-hidden { + clip: rect(0 0 0 0); + clip-path: inset(50%); + height: 1px; + overflow: hidden; + position: absolute; + white-space: nowrap; + width: 1px; +} diff --git a/packages/bun-landing/public/index.html b/packages/bun-landing/public/index.html index 27b3863c7..1fe7d08aa 100644 --- a/packages/bun-landing/public/index.html +++ b/packages/bun-landing/public/index.html @@ -1,6 +1,12 @@ <!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"/><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="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."/><title>Bun is a fast all-in-one JavaScript runtime</title><style>:root { + + 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"/><title>Bun is a fast all-in-one JavaScript runtime</title><style>:root { --black: #0b0a08; --blue: #00a6e1; --orange: #f89b4b; @@ -19,9 +25,11 @@ --vertical-padding: 4rem; --line-height: 1.4; } + * { box-sizing: border-box; } + head, body, :root { @@ -39,14 +47,17 @@ a { text-decoration: none; transition: transform 0.1s linear; } + a:visited { color: inherit; } + a:hover { text-decoration: underline; transform: scale(1.06, 1.06); transform-origin: middle center; } + #header-wrap, #pitch { background-color: var(--black); @@ -60,6 +71,7 @@ a:hover { gap: 24px; align-items: center; } + main { width: auto; @@ -67,6 +79,7 @@ main { max-width: var(--max-width); display: grid; grid-template-columns: auto auto; + overflow-y: hidden; } main, @@ -97,6 +110,7 @@ header { .subtitle { font-size: 1.2rem; } + nav { white-space: nowrap; display: flex; @@ -141,6 +155,7 @@ header { cursor: pointer; transform: scale(1.06); } + #HeaderInstallButton { transition: transform 0.1s linear; background: #00a6e1; @@ -228,15 +243,12 @@ header { align-items: center; border: 1px solid var(--orange); margin-top: 1rem; - display: grid; + display: flex; + justify-content: space-between; align-content: center; white-space: nowrap; margin-bottom: 1rem; -} - -#code-box { font-family: var(--monospace-font); - position: relative; } #curl:hover { @@ -246,7 +258,7 @@ header { #curl::before { display: block; - content: "$"; + content: "$" / ""; color: var(--orange); pointer-events: none; width: 1ch; @@ -269,21 +281,18 @@ header { } #code-box-copy { - position: absolute; - right: 16px; - top: 0; - bottom: 0; height: 100%; - display: flex; align-items: center; - z-index: 5; - color: var(--orange-light); transition: transform 0.05s linear; transition-property: color, transform; transform-origin: center center; cursor: pointer; + background: transparent; + border: none; + font-size: inherit; + font-family: inherit; } #code-box-copy:hover { @@ -304,6 +313,8 @@ header { align-items: center; width: min-content; white-space: nowrap; + list-style-type: none; + padding: 0; } .Tab { @@ -313,15 +324,25 @@ header { padding-bottom: 8px; border-bottom: 1px solid #ccc; cursor: pointer; + padding: 0; +} + +.TabButton { + background: transparent; + border: none; padding: 16px 16px; + color: inherit; + font-size: inherit; + font-family: inherit; + cursor: inherit; } -.Tab[data-tab="react"]:hover, -.Graphs--active-react .Tab[data-tab="react"], -.Tab[data-tab="sqlite"]:hover, -.Graphs--active-sqlite .Tab[data-tab="sqlite"], -.Tab[data-tab="ffi"]:hover, -.Graphs--active-ffi .Tab[data-tab="ffi"] { +.TabButton[data-tab="react"]:hover, +.Graphs--active-react .TabButton[data-tab="react"], +.TabButton[data-tab="sqlite"]:hover, +.Graphs--active-sqlite .TabButton[data-tab="sqlite"], +.TabButton[data-tab="ffi"]:hover, +.Graphs--active-ffi .TabButton[data-tab="ffi"] { border-bottom-color: aquamarine; background-color: rgba(130, 216, 247, 0.1); border-right-color: aquamarine; @@ -337,12 +358,16 @@ header { .BarGraph-heading { font-weight: 500; font-size: 1.5rem; + margin: 0; } .BarGraphList { flex: 1; position: relative; + list-style-type: none; + padding: 0; } + .BarGraph, .ActiveTab, .Graphs { @@ -352,6 +377,7 @@ header { .BarGraph-subheading { font-size: 0.9rem; color: rgb(135, 134, 134); + margin: 0; } .BarGraphList { @@ -387,30 +413,27 @@ header { .BarGraphBar { margin: 0 auto; - width: var(--primary); height: var(--opposite); - background-color: rgb(93, 89, 134); - transform-origin: bottom center; - transform: scaleY(var(--level)); position: relative; + height: calc(200px * var(--level)); } .BarGraphItem { border-right: 1px dashed var(--dark-border); border-top: 1px dashed var(--dark-border); border-bottom: 1px dashed var(--dark-border); + min-height: 200px; + display: flex; + flex-direction: column; + justify-content: flex-end; } .BarGraphItem--deno { border-right-color: transparent; } -.BarGraph--horizontal .BarGraphBar { - min-height: 200px; -} - .BarGraph--vertical .BarGraphBar { max-width: 90%; } @@ -421,8 +444,9 @@ header { font-family: var(--monospace-font); width: 100%; text-align: center; - position: relative; + display: flex; + justify-content: center; } .CardContent { @@ -436,14 +460,13 @@ header { } .BarGraph--horizontal .BarGraphBar-label { - transform: scaleY(var(--inverse)); - top: calc(-20px * var(--inverse)); + top: -22px; } .BarGraphItem--bun .BarGraphBar { background-color: rgb(249, 241, 225); box-shadow: inset 1px 1px 3px rgb(204, 198, 187); - background-image: url("/logo.png"); + background-image: url("/logo.svg"); background-repeat: no-repeat; background-size: 56px 48.8px; background-position: 6px 20%; @@ -462,10 +485,8 @@ header { .BarGraph--vertical .BarGraphBar { height: var(--primary); width: var(--opposite); - transform: scaleX(var(--level)); transform-origin: bottom left; - max-height: 40px; margin-top: 1rem; margin-bottom: 1rem; @@ -486,13 +507,13 @@ header { } .BarGraphKeyItem-value { - color: #666; + color: #7a7a7a; margin-top: 0.5rem; } .BarGraphKeyItem-viewSource { margin-top: 0.5rem; - color: #666; + color: #7a7a7a; text-transform: lowercase; font-weight: thin; font-size: 0.8rem; @@ -522,7 +543,7 @@ header { } .DemphasizedLabel { - color: #666; + color: #7a7a7a; font-weight: 300; } @@ -537,8 +558,6 @@ header { display: grid; } -#explain-section { -} #explain ul { font-size: 1.2rem; } @@ -574,7 +593,7 @@ header { } .Tag--Command:before { - content: "❯"; + content: "❯" / ""; color: rgba(255, 255, 255, 0.35); margin-top: auto; margin-bottom: auto; @@ -605,22 +624,18 @@ header { .Tag--React:before { color: rgba(130, 216, 247, 0.5); - content: "<"; + content: "<" / ""; } .Tag--React:after { color: rgba(130, 216, 247, 0.5); - content: ">"; + content: ">" / ""; } .Tag--Bun { --background: #ff17ff; } -ul, -li { -} - .mono { font-family: var(--monospace-font); border-radius: 6px; @@ -819,9 +834,6 @@ li { gap: 2rem; } - .Tabs { - } - .tagline, .subtitle, .BarGraph-heading, @@ -854,16 +866,17 @@ li { margin: 0; gap: 0rem; width: 100%; + border-top: 1px solid rgba(200, 200, 200, 0.1); } .Tab { width: 100%; - padding-top: 16px; - padding-bottom: 16px; + border-bottom-color: #333; } - .Tab { - border-bottom-color: #333; + .TabButton { + padding-top: 16px; + padding-bottom: 16px; } #pitch-content { @@ -875,10 +888,6 @@ li { .Graphs--active-ffi .Tab[data-tab="ffi"] { background-color: rgba(100, 100, 100, 0.1); } - - .Tabs { - border-top: 1px solid rgba(200, 200, 200, 0.1); - } } #explain p > code { @@ -928,24 +937,128 @@ li { img { object-fit: contain; } -</style></head><body><div id="header-wrap"><header><a href="/" id="logo-link"><img height="61px" src="/logo@2x.png" alt="Bun" id="logo"/><img height="31.65px" src="/Bun@2x.png" alt="Bun" id="logo-text"/></a><nav class="Navigation"><li><a class="NavText" href="https://github.com/Jarred-Sumner/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/Jarred-Sumner/bun">GitHub</a></li></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" id="install"><div id="install-label"><div class="unselectable" id="install-label-heading">Install Bun CLI v0.1.0 (beta)</div><div class="unselectable" id="install-label-subtitle">macOS x64 & Silicon, Linux x64, Windows Subsystem for Linux</div></div><div id="code-box"><div id="curl">curl https://bun.sh/install | bash</div><div class="unselectable" id="code-box-copy">copy</div></div><a class="unselectable" id="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"><div data-tab="react" class="Tab">Bun.serve</div><div data-tab="sqlite" class="Tab">bun:sqlite</div><div data-tab="ffi" class="Tab">bun:ffi</div></div><div id="active-tab" class="ActiveTab"><div class="BarGraph BarGraph--react BarGraph--horizontal BarGraph--dark"><div class="BarGraph-heading">Server-side rendering React</div><div title="oha -z 5s" class="BarGraph-subheading">HTTP requests per second (Linux AMD64)</div><div style="--count:3" class="BarGraphList"><div class="BarGraphItem BarGraphItem--bun" style="--amount:48936;--max:61170"><div style="--amount:48936;--max:61170" title="48936 requests per second" class="BarGraphBar"><div style="--amount:48936;--max:61170" class="BarGraphBar-label">48,936</div></div></div><div class="BarGraphItem BarGraphItem--node" style="--amount:16288;--max:61170"><div style="--amount:16288;--max:61170" title="16288 requests per second" class="BarGraphBar"><div style="--amount:16288;--max:61170" class="BarGraphBar-label">16,288</div></div></div><div class="BarGraphItem BarGraphItem--deno" style="--amount:12289;--max:61170"><div style="--amount:12289;--max:61170" title="12289 requests per second" class="BarGraphBar"><div style="--amount:12289;--max:61170" class="BarGraphBar-label">12,289</div></div></div></div><div style="--count:3" class="BarGraphKey"><a href="https://github.com/Jarred-Sumner/bun/bench/react-hello-world.jsx" target="_blank" class="BarGraphKeyItem"><div class="BarGraphKeyItem-label">bun</div><div class="BarGraphKeyItem-value">v0.1.0</div><div class="BarGraphKeyItem-viewSource">View source</div></a><a href="https://github.com/Jarred-Sumner/bun/bench/react-hello-world.deno.jsx" target="_blank" class="BarGraphKeyItem"><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/Jarred-Sumner/bun/bench/react-hello-world.node.jsx" target="_blank" class="BarGraphKeyItem"><div class="BarGraphKeyItem-label">deno</div><div class="BarGraphKeyItem-value">v1.23.2</div><div class="BarGraphKeyItem-viewSource">View source</div></a></div></div><div class="BarGraph--sqlite BarGraph BarGraph--horizontal BarGraph--dark"><div class="BarGraph-heading">Load a huge table</div><div class="BarGraph-subheading">Average queries per second</div><div style="--count:3" class="BarGraphList"><div class="BarGraphItem BarGraphItem--bun" style="--amount:60.24;--max:76"><div style="--amount:60.24;--max:76" title="60.24 queries per second" class="BarGraphBar"><div style="--amount:60.24;--max:76" class="BarGraphBar-label">60.24</div></div></div><div class="BarGraphItem BarGraphItem--better-sqlite3" style="--amount:23.28;--max:76"><div style="--amount:23.28;--max:76" title="23.28 queries per second" class="BarGraphBar"><div style="--amount:23.28;--max:76" class="BarGraphBar-label">23.28</div></div></div><div class="BarGraphItem BarGraphItem--deno" style="--amount:9.55;--max:76"><div style="--amount:9.55;--max:76" title="9.55 queries per second" class="BarGraphBar"><div style="--amount:9.55;--max:76" class="BarGraphBar-label">9.55</div></div></div></div><div style="--count:3" class="BarGraphKey"><a href="https://github.com/Jarred-Sumner/bun/blob/main/bench/sqlite/query.js" target="_blank" class="BarGraphKeyItem"><div class="BarGraphKeyItem-label">bun:sqlite</div><div class="BarGraphKeyItem-value">v0.1.0</div><div class="BarGraphKeyItem-viewSource">View source</div></a><a href="https://github.com/Jarred-Sumner/bun/blob/main/bench/sqlite/query.node.mjs" target="_blank" class="BarGraphKeyItem"><div class="BarGraphKeyItem-label">better-sqlite3</div><div class="BarGraphKeyItem-value">node v18.2.0</div><div class="BarGraphKeyItem-viewSource">View source</div></a><a href="https://github.com/Jarred-Sumner/bun/blob/main/bench/sqlite/query.deno.js" target="_blank" class="BarGraphKeyItem"><div class="BarGraphKeyItem-label">deno (x/sqlite)</div><div class="BarGraphKeyItem-value">v1.23.2</div><div class="BarGraphKeyItem-viewSource">View source</div></a></div></div><div class="BarGraph BarGraph--ffi BarGraph--horizontal BarGraph--dark"><div class="BarGraph-heading">How fast can it get?</div><div class="BarGraph-subheading">Operations per second</div><div style="--count:3" class="BarGraphList"><div class="BarGraphItem BarGraphItem--bun" style="--amount:115473441.00;--max:144341802"><div style="--amount:115473441.00;--max:144341802" title="115473441.00 operations per second" class="BarGraphBar"><div style="--amount:115473441.00;--max:144341802" class="BarGraphBar-label">115,473,441</div></div></div><div class="BarGraphItem BarGraphItem--Node-API" style="--amount:43478261.00;--max:144341802"><div style="--amount:43478261.00;--max:144341802" title="43478261.00 operations per second" class="BarGraphBar"><div style="--amount:43478261.00;--max:144341802" class="BarGraphBar-label">43,478,261</div></div></div><div class="BarGraphItem BarGraphItem--deno" style="--amount:2891761.00;--max:144341802"><div style="--amount:2891761.00;--max:144341802" title="2891761.00 oeprations per iteration" class="BarGraphBar"><div style="--amount:2891761.00;--max:144341802" class="BarGraphBar-label">2,891,761</div></div></div></div><div style="--count:3" class="BarGraphKey"><a href="https://github.com/Jarred-Sumner/bun/blob/f5527c976e20cb60b977cc1b21df079f3e388cc9/bench/ffi/plus100/add3.bun.js" target="_blank" class="BarGraphKeyItem"><div class="BarGraphKeyItem-label">bun:ffi</div><div class="BarGraphKeyItem-value">v0.1.0</div><div class="BarGraphKeyItem-viewSource">View source</div></a><a href="https://github.com/Jarred-Sumner/bun/blob/f5527c976e20cb60b977cc1b21df079f3e388cc9/bench/ffi/plus100/add3.napi.mjs" target="_blank" class="BarGraphKeyItem"><div class="BarGraphKeyItem-label">node (napi)</div><div class="BarGraphKeyItem-value">node v18.2.0</div><div class="BarGraphKeyItem-viewSource">View source</div></a><a href="https://github.com/Jarred-Sumner/bun/blob/f5527c976e20cb60b977cc1b21df079f3e388cc9/bench/ffi/plus100/add3.deno.js" target="_blank" class="BarGraphKeyItem"><div class="BarGraphKeyItem-label">deno (ffi)</div><div class="BarGraphKeyItem-value">v1.23.2</div><div class="BarGraphKeyItem-viewSource">View source</div></a></div></div></div></div><div class="InstallBox InstallBox--mobile" id="install"><div id="install-label"><div class="unselectable" id="install-label-heading">Install Bun CLI v0.1.0 (beta)</div><div class="unselectable" id="install-label-subtitle">macOS x64 & Silicon, Linux x64, Windows Subsystem for Linux</div></div><div id="code-box"><div id="curl">curl https://bun.sh/install | bash</div><div class="unselectable" id="code-box-copy">copy</div></div><a class="unselectable" id="view-source-link" target="_blank" href="https://bun.sh/install">Show script source</a></div></main></div><section id="explain-section"><div id="explain"><h1>Tell me more about Bun</h1><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 worlds JavaScript outside of browsers, bringing performance and complexity enhancements to your future infrastructure, as well as developer productivity through better, simpler tooling.</p><h1>Batteries included</h1><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>, and<!-- --> <!-- --><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream" class="Tag Tag--WebAPI">ReadableStream</a> <!-- -->are builtin<!-- --></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.js. ESM and CommonJS are supported, but Bun internally uses ESM.<!-- --></li><li>In bun.js, 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 class="">"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.js<!-- --></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.js automatically loads environment variables from<!-- --> <!-- --><span target="_blank" class="Tag Tag--Bun">.env</span> files. No more<!-- --> <!-- --><code class="mono">require("dotenv").load()</code></li><li>bun ships with a fast SQLite3 client builtin <!-- --><span target="_blank" class="Tag Tag--Bun">bun:sqlite</span></li><li><a target="_blank" href="https://github.com/Jarred-Sumner/bun/issues/158" class="Tag Tag--NodeJS">Node-API</a> <!-- -->bun.js 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.js natively supports a growing list of Node.js core modules along with globals like Buffer and process.<!-- --></li></ul><h1>How does Bun work?</h1><p>Bun.js 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"><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 + +.visually-hidden { + clip: rect(0 0 0 0); + clip-path: inset(50%); + height: 1px; + overflow: hidden; + position: absolute; + white-space: nowrap; + width: 1px; +} +</style></head><body><div id="header-wrap"><header><a href="/" id="logo-link" aria-label="home"><img height="61px" src="/logo.svg" alt="Bun logo" id="logo"/><img height="31.65px" src="/Bun.png" srcSet="/Bun.png 1x, /Bun@2x.png 2x" alt="Bun" id="logo-text"/></a><nav class="Navigation"><li><a class="NavText" href="https://github.com/Jarred-Sumner/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/Jarred-Sumner/bun">GitHub</a></li></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" id="install"><div id="install-label"><div class="unselectable" id="install-label-heading">Install Bun CLI v0.1.0 (beta)</div><div class="unselectable" id="install-label-subtitle">macOS x64 & Silicon, Linux x64, Windows Subsystem for Linux</div></div><div id="code-box"><div id="curl">curl https://bun.sh/install | bash</div><button class="unselectable" id="code-box-copy" aria-label="Copy installation script">copy</button></div><a class="unselectable" id="view-source-link" target="_blank" href="https://bun.sh/install">Show script source</a></div></div><div class="Graphs Graphs--active-react"><ul class="Tabs" role="tablist"><li class="Tab"><button data-tab="react" id="tab-react" aria-controls="react-tab-content" class="TabButton" role="tab" aria-selected="true" tabindex="0">Bun.serve</button></li><li class="Tab"><button data-tab="sqlite" id="tab-sqlite" aria-controls="sqlite-tab-content" class="TabButton" role="tab" tabindex="-1">bun:sqlite</button></li><li class="Tab"><button data-tab="ffi" id="tab-ffi" aria-controls="ffi-tab-content" class="TabButton" role="tab" tabindex="-1">bun:ffi</button></li></ul><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 AMD64)</p><ul style="--count:3" class="BarGraphList"><li class="BarGraphItem BarGraphItem--bun" style="--amount:48936;--max:61170"><div class="visually-hidden">bun: 48,936 requests per second</div><div style="--amount:48936;--max:61170" class="BarGraphBar" aria-hidden="true"><div style="--amount:48936;--max:61170" class="BarGraphBar-label">48,936</div></div></li><li class="BarGraphItem BarGraphItem--node" style="--amount:16288;--max:61170"><div class="visually-hidden">node: 16,288 requests per second</div><div style="--amount:16288;--max:61170" class="BarGraphBar" aria-hidden="true"><div style="--amount:16288;--max:61170" class="BarGraphBar-label">16,288</div></div></li><li class="BarGraphItem BarGraphItem--deno" style="--amount:15786;--max:61170"><div class="visually-hidden">deno: 15,786 requests per second</div><div style="--amount:15786;--max:61170" class="BarGraphBar" aria-hidden="true"><div style="--amount:15786;--max:61170" class="BarGraphBar-label">15,786</div></div></li></ul><div style="--count:3" class="BarGraphKey"><a href="https://github.com/Jarred-Sumner/bun/bench/react-hello-world.jsx" target="_blank" class="BarGraphKeyItem" aria-label="bun benchmark source"><div class="BarGraphKeyItem-label">bun</div><div class="BarGraphKeyItem-value">v0.1.0</div><div class="BarGraphKeyItem-viewSource">View source</div></a><a href="https://github.com/Jarred-Sumner/bun/bench/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/Jarred-Sumner/bun/bench/react-hello-world.deno.jsx" target="_blank" class="BarGraphKeyItem" aria-label="deno benchmark source"><div class="BarGraphKeyItem-label">deno</div><div class="BarGraphKeyItem-value">v1.23.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:60.24;--max:76"><div class="visually-hidden">bun: 60.24 queries per second</div><div style="--amount:60.24;--max:76" class="BarGraphBar" aria-hidden="true"><div style="--amount:60.24;--max:76" class="BarGraphBar-label">60.24</div></div></li><li class="BarGraphItem BarGraphItem--better-sqlite3" style="--amount:23.28;--max:76"><div class="visually-hidden">better-sqlite3: 23.28 queries per second</div><div style="--amount:23.28;--max:76" class="BarGraphBar" aria-hidden="true"><div style="--amount:23.28;--max:76" class="BarGraphBar-label">23.28</div></div></li><li class="BarGraphItem BarGraphItem--deno" style="--amount:9.55;--max:76"><div class="visually-hidden">deno: 9.55 queries per second</div><div style="--amount:9.55;--max:76" class="BarGraphBar" aria-hidden="true"><div style="--amount:9.55;--max:76" class="BarGraphBar-label">9.55</div></div></li></ul><div style="--count:3" class="BarGraphKey"><a href="https://github.com/Jarred-Sumner/bun/blob/main/bench/sqlite/query.js" target="_blank" class="BarGraphKeyItem" aria-label="bun:sqlite benchmark source"><div class="BarGraphKeyItem-label">bun:sqlite</div><div class="BarGraphKeyItem-value">v0.1.0</div><div class="BarGraphKeyItem-viewSource">View source</div></a><a href="https://github.com/Jarred-Sumner/bun/blob/main/bench/sqlite/query.better-sqlite3.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><a href="https://github.com/Jarred-Sumner/bun/blob/main/bench/sqlite/query.deno.js" target="_blank" class="BarGraphKeyItem" aria-label="deno (x/sqlite) benchmark source"><div class="BarGraphKeyItem-label">deno (x/sqlite)</div><div class="BarGraphKeyItem-value">v1.23.2</div><div class="BarGraphKeyItem-viewSource">View source</div></a></div></div><div role="tabpanel" tabindex="-1" id="ffi-tab-content" aria-labelledby="tab-ffi" class="BarGraph BarGraph--ffi BarGraph--horizontal BarGraph--dark"><h2 class="BarGraph-heading">How fast can it get?</h2><p class="BarGraph-subheading">Operations per second</p><ul style="--count:3" class="BarGraphList"><li class="BarGraphItem BarGraphItem--bun" style="--amount:115473441.00;--max:144341802"><div class="visually-hidden">bun: 115,473,441 operations per second</div><div style="--amount:115473441.00;--max:144341802" class="BarGraphBar" aria-hidden="true"><div style="--amount:115473441.00;--max:144341802" class="BarGraphBar-label">115,473,441</div></div></li><li class="BarGraphItem BarGraphItem--Node-API" style="--amount:43478261.00;--max:144341802"><div class="visually-hidden">Node-API: 43,478,261 operations per second</div><div style="--amount:43478261.00;--max:144341802" class="BarGraphBar" aria-hidden="true"><div style="--amount:43478261.00;--max:144341802" class="BarGraphBar-label">43,478,261</div></div></li><li class="BarGraphItem BarGraphItem--deno" style="--amount:2891761.00;--max:144341802"><div class="visually-hidden">deno: 2,891,761 operations per iteration</div><div style="--amount:2891761.00;--max:144341802" class="BarGraphBar" aria-hidden="true"><div style="--amount:2891761.00;--max:144341802" class="BarGraphBar-label">2,891,761</div></div></li></ul><div style="--count:3" class="BarGraphKey"><a href="https://github.com/Jarred-Sumner/bun/blob/f5527c976e20cb60b977cc1b21df079f3e388cc9/bench/ffi/plus100/add3.bun.js" target="_blank" class="BarGraphKeyItem" aria-label="bun:ffi benchmark source"><div class="BarGraphKeyItem-label">bun:ffi</div><div class="BarGraphKeyItem-value">v0.1.0</div><div class="BarGraphKeyItem-viewSource">View source</div></a><a href="https://github.com/Jarred-Sumner/bun/blob/f5527c976e20cb60b977cc1b21df079f3e388cc9/bench/ffi/plus100/add3.napi.mjs" target="_blank" class="BarGraphKeyItem" aria-label="node (napi) benchmark source"><div class="BarGraphKeyItem-label">node (napi)</div><div class="BarGraphKeyItem-value">node v18.2.0</div><div class="BarGraphKeyItem-viewSource">View source</div></a><a href="https://github.com/Jarred-Sumner/bun/blob/f5527c976e20cb60b977cc1b21df079f3e388cc9/bench/ffi/plus100/add3.deno.js" target="_blank" class="BarGraphKeyItem" aria-label="deno (ffi) benchmark source"><div class="BarGraphKeyItem-label">deno (ffi)</div><div class="BarGraphKeyItem-value">v1.23.2</div><div class="BarGraphKeyItem-viewSource">View source</div></a></div></div></div></div><div class="InstallBox InstallBox--mobile" id="install"><div id="install-label"><div class="unselectable" id="install-label-heading">Install Bun CLI v0.1.0 (beta)</div><div class="unselectable" id="install-label-subtitle">macOS x64 & Silicon, Linux x64, Windows Subsystem for Linux</div></div><div id="code-box"><div id="curl">curl https://bun.sh/install | bash</div><button class="unselectable" id="code-box-copy" aria-label="Copy installation script">copy</button></div><a class="unselectable" id="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 worlds 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>, and<!-- --> <!-- --><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream" class="Tag Tag--WebAPI">ReadableStream</a> <!-- -->are builtin<!-- --></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.js. ESM and CommonJS are supported, but Bun internally uses ESM.<!-- --></li><li>In bun.js, 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 class="">"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.js<!-- --></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.js automatically loads environment variables from<!-- --> <!-- --><span target="_blank" class="Tag Tag--Bun">.env</span> files. No more<!-- --> <!-- --><code class="mono">require("dotenv").load()</code></li><li>bun ships with a fast SQLite3 client builtin <!-- --><span target="_blank" class="Tag Tag--Bun">bun:sqlite</span></li><li><a target="_blank" href="https://github.com/Jarred-Sumner/bun/issues/158" class="Tag Tag--NodeJS">Node-API</a> <!-- -->bun.js 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.js 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.js 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><h1>Why is Bun fast?</h1><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"><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><h1>Getting started</h1><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> <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> <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> <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> <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> <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/Jarred-Sumner/bun/tree/main/examples">more examples</a> <!-- -->and check out <!-- --><a href="https://github.com/Jarred-Sumner/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><h1>Bun CLI</h1><div title="npm takes 160ms to run a script that does nothing" 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> <!-- --></div><div title="JavaScript package managers are not using the fastest system calls" class="Group"><span target="_blank" class="Tag Tag--Command">bun install</span><p>bun install 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>bun install 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 builtin 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><h1>What is the license?</h1><p>MIT License, excluding dependencies which have various licenses.</p><h1>How do I see the source code?</h1><p>Bun is on <!-- --><a href="https://github.com/Jarred-Sumner/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.querySelector(".Graphs").setAttribute("class", "Graphs Graphs--active-" + tab); -})); +<span class="line"></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/Jarred-Sumner/bun/tree/main/examples">more examples</a> <!-- -->and check out <!-- --><a href="https://github.com/Jarred-Sumner/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> <!-- --></div><div class="Group"><span target="_blank" class="Tag Tag--Command">bun install</span><p>bun install 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>bun install 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 builtin 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/Jarred-Sumner/bun">GitHub</a></p></div></section><section id="explain-section"><div id="explain"></div></section><script> + +[...document.querySelectorAll(".TabButton")].map(el => { + + el.addEventListener("click", function(e) { + + var tab = e.srcElement.getAttribute("data-tab"); + + [...document.querySelectorAll(".TabButton")].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 => { + + var active = el.id === tab + "-tab-content"; + + el.setAttribute("tabindex", active ? 0 : -1); + + }); + + document.querySelector(".Graphs").setAttribute("class", "Graphs Graphs--active-" + tab); + + }); + + + + el.addEventListener("keydown", e => { + + var tabs = [...document.querySelectorAll(".TabButton")]; + + var activeTabEl = document.querySelector(".TabButton[aria-selected='true']"); + + var activeTabIndex = tabs.indexOf(activeTabEl); + + if (e.key === 'ArrowRight' || e.key === 'ArrowDown') { + + e.preventDefault(); + + activeTabIndex = (activeTabIndex + 1) % tabs.length; + + tabs[activeTabIndex].click(); + + tabs[activeTabIndex].focus(); + + } + + if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') { + + e.preventDefault(); + + activeTabIndex = (activeTabIndex + tabs.length - 1) % tabs.length; + + tabs[activeTabIndex].click(); + + tabs[activeTabIndex].focus(); + + } + + if (e.key === 'Home') { + + e.preventDefault(); + + tabs[0].click(); + + tabs[0].focus(); + + } + + if (e.key === 'End') { + + e.preventDefault(); + + tabs[tabs.length - 1].click(); + + tabs[tabs.length - 1].focus(); + + } + + }); + +}); + + document.querySelector("#code-box-copy").addEventListener("click", async e => { + var el = document.querySelector("#code-box"); + await navigator.clipboard.writeText("curl https://bun.sh/install | bash"); + }); - </script><div class="Built">Built with Bun <!-- -->v0.1.1<!-- --></div></body></html>
\ No newline at end of file + + </script><div class="Built">Built with Bun <!-- -->v0.1.2<!-- --></div></body></html>
\ No newline at end of file diff --git a/packages/bun-landing/public/logo-square.png b/packages/bun-landing/public/logo-square.png Binary files differnew file mode 100644 index 000000000..fedd94ab9 --- /dev/null +++ b/packages/bun-landing/public/logo-square.png diff --git a/packages/bun-landing/public/logo-square@16px.png b/packages/bun-landing/public/logo-square@16px.png Binary files differnew file mode 100644 index 000000000..90dede13a --- /dev/null +++ b/packages/bun-landing/public/logo-square@16px.png diff --git a/packages/bun-landing/public/logo-square@32px.png b/packages/bun-landing/public/logo-square@32px.png Binary files differnew file mode 100644 index 000000000..33bfb9f23 --- /dev/null +++ b/packages/bun-landing/public/logo-square@32px.png diff --git a/packages/bun-landing/public/logo.svg b/packages/bun-landing/public/logo.svg new file mode 100644 index 000000000..7ef15001d --- /dev/null +++ b/packages/bun-landing/public/logo.svg @@ -0,0 +1 @@ +<svg id="Bun" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 70"><title>Bun Logo</title><path id="Shadow" d="M71.09,20.74c-.16-.17-.33-.34-.5-.5s-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5-.33-.34-.5-.5A26.46,26.46,0,0,1,75.5,35.7c0,16.57-16.82,30.05-37.5,30.05-11.58,0-21.94-4.23-28.83-10.86l.5.5.5.5.5.5.5.5.5.5.5.5.5.5C19.55,65.3,30.14,69.75,42,69.75c20.68,0,37.5-13.48,37.5-30C79.5,32.69,76.46,26,71.09,20.74Z"/><g id="Body"><path id="Background" d="M73,35.7c0,15.21-15.67,27.54-35,27.54S3,50.91,3,35.7C3,26.27,9,17.94,18.22,13S33.18,3,38,3s8.94,4.13,19.78,10C67,17.94,73,26.27,73,35.7Z" style="fill:#fbf0df"/><path id="Bottom_Shadow" data-name="Bottom Shadow" d="M73,35.7a21.67,21.67,0,0,0-.8-5.78c-2.73,33.3-43.35,34.9-59.32,24.94A40,40,0,0,0,38,63.24C57.3,63.24,73,50.89,73,35.7Z" style="fill:#f6dece"/><path id="Light_Shine" data-name="Light Shine" d="M24.53,11.17C29,8.49,34.94,3.46,40.78,3.45A9.29,9.29,0,0,0,38,3c-2.42,0-5,1.25-8.25,3.13-1.13.66-2.3,1.39-3.54,2.15-2.33,1.44-5,3.07-8,4.7C8.69,18.13,3,26.62,3,35.7c0,.4,0,.8,0,1.19C9.06,15.48,20.07,13.85,24.53,11.17Z" style="fill:#fffefc"/><path id="Top" d="M35.12,5.53A16.41,16.41,0,0,1,29.49,18c-.28.25-.06.73.3.59,3.37-1.31,7.92-5.23,6-13.14C35.71,5,35.12,5.12,35.12,5.53Zm2.27,0A16.24,16.24,0,0,1,39,19c-.12.35.31.65.55.36C41.74,16.56,43.65,11,37.93,5,37.64,4.74,37.19,5.14,37.39,5.49Zm2.76-.17A16.42,16.42,0,0,1,47,17.12a.33.33,0,0,0,.65.11c.92-3.49.4-9.44-7.17-12.53C40.08,4.54,39.82,5.08,40.15,5.32ZM21.69,15.76a16.94,16.94,0,0,0,10.47-9c.18-.36.75-.22.66.18-1.73,8-7.52,9.67-11.12,9.45C21.32,16.4,21.33,15.87,21.69,15.76Z" style="fill:#ccbea7;fill-rule:evenodd"/><path id="Outline" d="M38,65.75C17.32,65.75.5,52.27.5,35.7c0-10,6.18-19.33,16.53-24.92,3-1.6,5.57-3.21,7.86-4.62,1.26-.78,2.45-1.51,3.6-2.19C32,1.89,35,.5,38,.5s5.62,1.2,8.9,3.14c1,.57,2,1.19,3.07,1.87,2.49,1.54,5.3,3.28,9,5.27C69.32,16.37,75.5,25.69,75.5,35.7,75.5,52.27,58.68,65.75,38,65.75ZM38,3c-2.42,0-5,1.25-8.25,3.13-1.13.66-2.3,1.39-3.54,2.15-2.33,1.44-5,3.07-8,4.7C8.69,18.13,3,26.62,3,35.7,3,50.89,18.7,63.25,38,63.25S73,50.89,73,35.7C73,26.62,67.31,18.13,57.78,13,54,11,51.05,9.12,48.66,7.64c-1.09-.67-2.09-1.29-3-1.84C42.63,4,40.42,3,38,3Z"/></g><g id="Mouth"><g id="Background-2" data-name="Background"><path d="M45.05,43a8.93,8.93,0,0,1-2.92,4.71,6.81,6.81,0,0,1-4,1.88A6.84,6.84,0,0,1,34,47.71,8.93,8.93,0,0,1,31.12,43a.72.72,0,0,1,.8-.81H44.26A.72.72,0,0,1,45.05,43Z" style="fill:#b71422"/></g><g id="Tongue"><path id="Background-3" data-name="Background" d="M34,47.79a6.91,6.91,0,0,0,4.12,1.9,6.91,6.91,0,0,0,4.11-1.9,10.63,10.63,0,0,0,1-1.07,6.83,6.83,0,0,0-4.9-2.31,6.15,6.15,0,0,0-5,2.78C33.56,47.4,33.76,47.6,34,47.79Z" style="fill:#ff6164"/><path id="Outline-2" data-name="Outline" d="M34.16,47a5.36,5.36,0,0,1,4.19-2.08,6,6,0,0,1,4,1.69c.23-.25.45-.51.66-.77a7,7,0,0,0-4.71-1.93,6.36,6.36,0,0,0-4.89,2.36A9.53,9.53,0,0,0,34.16,47Z"/></g><path id="Outline-3" data-name="Outline" d="M38.09,50.19a7.42,7.42,0,0,1-4.45-2,9.52,9.52,0,0,1-3.11-5.05,1.2,1.2,0,0,1,.26-1,1.41,1.41,0,0,1,1.13-.51H44.26a1.44,1.44,0,0,1,1.13.51,1.19,1.19,0,0,1,.25,1h0a9.52,9.52,0,0,1-3.11,5.05A7.42,7.42,0,0,1,38.09,50.19Zm-6.17-7.4c-.16,0-.2.07-.21.09a8.29,8.29,0,0,0,2.73,4.37A6.23,6.23,0,0,0,38.09,49a6.28,6.28,0,0,0,3.65-1.73,8.3,8.3,0,0,0,2.72-4.37.21.21,0,0,0-.2-.09Z"/></g><g id="Face"><ellipse id="Right_Blush" data-name="Right Blush" cx="53.22" cy="40.18" rx="5.85" ry="3.44" style="fill:#febbd0"/><ellipse id="Left_Bluch" data-name="Left Bluch" cx="22.95" cy="40.18" rx="5.85" ry="3.44" style="fill:#febbd0"/><path id="Eyes" d="M25.7,38.8a5.51,5.51,0,1,0-5.5-5.51A5.51,5.51,0,0,0,25.7,38.8Zm24.77,0A5.51,5.51,0,1,0,45,33.29,5.5,5.5,0,0,0,50.47,38.8Z" style="fill-rule:evenodd"/><path id="Iris" d="M24,33.64a2.07,2.07,0,1,0-2.06-2.07A2.07,2.07,0,0,0,24,33.64Zm24.77,0a2.07,2.07,0,1,0-2.06-2.07A2.07,2.07,0,0,0,48.75,33.64Z" style="fill:#fff;fill-rule:evenodd"/></g></svg>
\ No newline at end of file diff --git a/packages/bun-landing/public/manifest.json b/packages/bun-landing/public/manifest.json new file mode 100644 index 000000000..9d78a2d26 --- /dev/null +++ b/packages/bun-landing/public/manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Bun", + "icons": [ + { + "src": "/logo-square.png", + "sizes": "256x256", + "type": "image/png" + } + ], + "theme_color": "#fbf0df", + "background_color": "#fbf0df", + "start_url": "/", + "display": "minimal-ui" +} diff --git a/packages/bun-landing/ssr.tsx b/packages/bun-landing/ssr.tsx index 3ff8adac9..e62dc3c2d 100644 --- a/packages/bun-landing/ssr.tsx +++ b/packages/bun-landing/ssr.tsx @@ -6,7 +6,7 @@ import liveReload from "bun-livereload"; import { join } from "path"; async function fetch(req: Request) { - if (req.url.endsWith("favicon.ico")) { + if (req.url.endsWith("robots.txt")) { return new Response("", { status: 404 }); } diff --git a/src/bun.js/bindings/exports.zig b/src/bun.js/bindings/exports.zig index aff961154..9d4db4309 100644 --- a/src/bun.js/bindings/exports.zig +++ b/src/bun.js/bindings/exports.zig @@ -29,6 +29,8 @@ const JSPrivateDataPtr = @import("../base.zig").JSPrivateDataPtr; const Backtrace = @import("../../deps/backtrace.zig"); const JSPrinter = @import("../../js_printer.zig"); const JSLexer = @import("../../js_lexer.zig"); +const typeBaseName = @import("../../meta.zig").typeBaseName; + pub const ZigGlobalObject = extern struct { pub const shim = Shimmer("Zig", "GlobalObject", @This()); bytes: shim.Bytes, @@ -40,7 +42,7 @@ pub const ZigGlobalObject = extern struct { pub fn create(class_ref: [*]CAPI.JSClassRef, count: i32, console: *anyopaque) *JSGlobalObject { var global = shim.cppFn("create", .{ class_ref, count, console }); - Backtrace.reloadHandlers(); + Backtrace.reloadHandlers() catch unreachable; return global; } @@ -194,7 +196,7 @@ pub fn Errorable(comptime Type: type) type { return extern struct { result: Result, success: bool, - pub const name = "Errorable" ++ @typeName(Type); + pub const name = "Errorable" ++ typeBaseName(@typeName(Type)); pub const Result = extern union { value: Type, @@ -1615,7 +1617,7 @@ pub const ZigConsoleClient = struct { writer.print(comptime Output.prettyFmt("<r><yellow>{s}n<r>", enable_ansi_colors), .{out_str}); }, .Double => { - writer.print(comptime Output.prettyFmt("<r><yellow>{d}n<r>", enable_ansi_colors), .{value.asNumber()}); + writer.print(comptime Output.prettyFmt("<r><yellow>{d}<r>", enable_ansi_colors), .{value.asNumber()}); }, .Undefined => { writer.print(comptime Output.prettyFmt("<r><d>undefined<r>", enable_ansi_colors), .{}); diff --git a/src/bun.js/bindings/header-gen.zig b/src/bun.js/bindings/header-gen.zig index c11241233..ab93fad47 100644 --- a/src/bun.js/bindings/header-gen.zig +++ b/src/bun.js/bindings/header-gen.zig @@ -7,6 +7,7 @@ const EnumMeta = std.builtin.TypeInfo.Enum; const UnionMeta = std.builtin.TypeInfo.Union; const warn = std.debug.warn; const StaticExport = @import("./static_export.zig"); +const typeBaseName = @import("../../meta.zig").typeBaseName; const TypeNameMap = std.StringHashMap([]const u8); @@ -156,7 +157,7 @@ pub const C_Generator = struct { switch (@typeInfo(ArgType)) { .Enum => { - self.write(comptime std.fmt.comptimePrint(" {s}{d}", .{ @typeName(ArgType), i })); + self.write(comptime std.fmt.comptimePrint(" {s}{d}", .{ typeBaseName(@typeName(ArgType)), i })); }, else => { @@ -202,7 +203,7 @@ pub const C_Generator = struct { // } else { const ArgType = arg.arg_type.?; if (@typeInfo(ArgType) == .Enum) { - self.write(comptime std.fmt.comptimePrint(" {s}{d}", .{ @typeName(ArgType), i })); + self.write(comptime std.fmt.comptimePrint(" {s}{d}", .{ typeBaseName(@typeName(ArgType)), i })); } else { self.write(comptime std.fmt.comptimePrint(" arg{d}", .{i})); } @@ -419,7 +420,7 @@ pub const C_Generator = struct { self.writeType(Enum.tag_type); }, else => { - return self.write(@typeName(T)); + return self.write(comptime typeBaseName(@typeName(T))); }, } } @@ -472,7 +473,7 @@ pub fn getCStruct(comptime T: type) ?NamedStruct { if (std.mem.eql(u8, decl.name, "Type")) { switch (decl.data) { .Type => { - return NamedStruct{ .Type = T, .name = @typeName(T) }; + return NamedStruct{ .Type = T, .name = comptime typeBaseName(@typeName(T)) }; }, else => {}, } diff --git a/src/bun.js/bindings/headers-cpp.h b/src/bun.js/bindings/headers-cpp.h index b7bb32042..a299530c3 100644 --- a/src/bun.js/bindings/headers-cpp.h +++ b/src/bun.js/bindings/headers-cpp.h @@ -1,4 +1,4 @@ -//-- AUTOGENERATED FILE -- 1656747036 +//-- AUTOGENERATED FILE -- 1657353886 // clang-format off #pragma once diff --git a/src/bun.js/bindings/headers.h b/src/bun.js/bindings/headers.h index 1877339b1..091a75896 100644 --- a/src/bun.js/bindings/headers.h +++ b/src/bun.js/bindings/headers.h @@ -1,5 +1,5 @@ // clang-format off -//-- AUTOGENERATED FILE -- 1656747036 +//-- AUTOGENERATED FILE -- 1657353886 #pragma once #include <stddef.h> diff --git a/src/bun.js/event_loop.zig b/src/bun.js/event_loop.zig index df6af2748..f5ed49eb7 100644 --- a/src/bun.js/event_loop.zig +++ b/src/bun.js/event_loop.zig @@ -10,6 +10,7 @@ const Fetch = JSC.WebCore.Fetch; const WebCore = JSC.WebCore; const Bun = JSC.API.Bun; const TaggedPointerUnion = @import("../tagged_pointer.zig").TaggedPointerUnion; +const typeBaseName = @import("../meta.zig").typeBaseName; const CopyFilePromiseTask = WebCore.Blob.Store.CopyFile.CopyFilePromiseTask; const AsyncTransformTask = @import("./api/transpiler.zig").TransformTask.AsyncTransformTask; const BunTimerTimeoutTask = Bun.Timer.Timeout.TimeoutTask; @@ -335,7 +336,7 @@ pub const EventLoop = struct { finished += 1; vm_.active_tasks -|= 1; }, - @field(Task.Tag, @typeName(JSC.napi.napi_async_work)) => { + @field(Task.Tag, typeBaseName(@typeName(JSC.napi.napi_async_work))) => { var transform_task: *JSC.napi.napi_async_work = task.get(JSC.napi.napi_async_work).?; transform_task.*.runFromJS(); finished += 1; @@ -361,13 +362,13 @@ pub const EventLoop = struct { finished += 1; vm_.active_tasks -|= 1; }, - @field(Task.Tag, @typeName(AnyTask)) => { + @field(Task.Tag, typeBaseName(@typeName(AnyTask))) => { var any: *AnyTask = task.get(AnyTask).?; any.run(); finished += 1; vm_.active_tasks -|= 1; }, - @field(Task.Tag, @typeName(CppTask)) => { + @field(Task.Tag, typeBaseName(@typeName(CppTask))) => { var any: *CppTask = task.get(CppTask).?; any.run(global); finished += 1; diff --git a/src/deps/backtrace.zig b/src/deps/backtrace.zig index 3a5bc7a49..47293d1cf 100644 --- a/src/deps/backtrace.zig +++ b/src/deps/backtrace.zig @@ -94,17 +94,21 @@ pub inline fn print() void { _ = backtrace_full(state, 2, full_callback, null, null); } +fn setup_sigactions(act: ?*const os.Sigaction) !void { + try os.sigaction(os.SIG.ABRT, act, null); + try os.sigaction(os.SIG.BUS, act, null); + try os.sigaction(os.SIG.FPE, act, null); + try os.sigaction(os.SIG.ILL, act, null); + try os.sigaction(os.SIG.SEGV, act, null); + try os.sigaction(os.SIG.TRAP, act, null); +} + const builtin = @import("builtin"); const ErrorCallback = fn (sig: i32, addr: usize) void; var on_error: ?ErrorCallback = null; noinline fn sigaction_handler(sig: i32, info: *const std.os.siginfo_t, _: ?*const anyopaque) callconv(.C) void { // Prevent recursive calls - os.sigaction(os.SIG.ABRT, null, null); - os.sigaction(os.SIG.BUS, null, null); - os.sigaction(os.SIG.FPE, null, null); - os.sigaction(os.SIG.ILL, null, null); - os.sigaction(os.SIG.SEGV, null, null); - os.sigaction(os.SIG.TRAP, null, null); + setup_sigactions(null) catch unreachable; const addr = switch (comptime builtin.target.os.tag) { .linux => @ptrToInt(info.fields.sigfault.addr), @@ -117,13 +121,8 @@ noinline fn sigaction_handler(sig: i32, info: *const std.os.siginfo_t, _: ?*cons if (on_error) |handle| handle(sig, addr); } -pub fn reloadHandlers() void { - os.sigaction(os.SIG.ABRT, null, null); - os.sigaction(os.SIG.BUS, null, null); - os.sigaction(os.SIG.FPE, null, null); - os.sigaction(os.SIG.ILL, null, null); - os.sigaction(os.SIG.SEGV, null, null); - os.sigaction(os.SIG.TRAP, null, null); +pub fn reloadHandlers() !void { + try setup_sigactions(null); var act = os.Sigaction{ .handler = .{ .sigaction = sigaction_handler }, @@ -131,15 +130,10 @@ pub fn reloadHandlers() void { .flags = (os.SA.SIGINFO | os.SA.RESTART | os.SA.RESETHAND), }; - os.sigaction(os.SIG.ABRT, &act, null); - os.sigaction(os.SIG.BUS, &act, null); - os.sigaction(os.SIG.FPE, &act, null); - os.sigaction(os.SIG.ILL, &act, null); - os.sigaction(os.SIG.SEGV, &act, null); - os.sigaction(os.SIG.TRAP, &act, null); + try setup_sigactions(&act); } const os = std.os; -pub fn start(ctx: ?*anyopaque, callback_: PrintCallback, onError: ErrorCallback) void { +pub fn start(ctx: ?*anyopaque, callback_: PrintCallback, onError: ErrorCallback) !void { callback_ctx = ctx; callback = callback_; on_error = onError; @@ -150,10 +144,5 @@ pub fn start(ctx: ?*anyopaque, callback_: PrintCallback, onError: ErrorCallback) .flags = (os.SA.SIGINFO | os.SA.RESTART | os.SA.RESETHAND), }; - os.sigaction(os.SIG.ABRT, &act, null); - os.sigaction(os.SIG.BUS, &act, null); - os.sigaction(os.SIG.FPE, &act, null); - os.sigaction(os.SIG.ILL, &act, null); - os.sigaction(os.SIG.SEGV, &act, null); - os.sigaction(os.SIG.TRAP, &act, null); + try setup_sigactions(&act); } diff --git a/src/favicon.png b/src/favicon.png Binary files differindex 074beae19..46009fba5 100644 --- a/src/favicon.png +++ b/src/favicon.png diff --git a/src/http.zig b/src/http.zig index e619e1517..8aa41ca2b 100644 --- a/src/http.zig +++ b/src/http.zig @@ -128,7 +128,7 @@ pub const RequestContext = struct { pub var fallback_only = false; const default_favicon = @embedFile("favicon.png"); - const default_favicon_shasum = "07877ad4cdfe472cc70759d1f237d358ae1f6a9b"; + const default_favicon_shasum = "68d5047bec9a8cd56e2e8999d74cad7ba448dce9"; pub fn sendFavicon(ctx: *RequestContext) !void { ctx.appendHeader("Content-Type", MimeType.byExtension("png").value); ctx.appendHeader("ETag", default_favicon_shasum); diff --git a/src/main.zig b/src/main.zig index fdd93e4a7..c40d9f71a 100644 --- a/src/main.zig +++ b/src/main.zig @@ -39,7 +39,7 @@ pub fn PLCrashReportHandler() void { pub var start_time: i128 = 0; pub fn main() void { if (comptime Environment.isRelease) - CrashReporter.start(null, Report.CrashReportWriter.printFrame, Report.handleCrash); + CrashReporter.start(null, Report.CrashReportWriter.printFrame, Report.handleCrash) catch unreachable; start_time = std.time.nanoTimestamp(); diff --git a/src/meta.zig b/src/meta.zig index afc502d58..c104e378d 100644 --- a/src/meta.zig +++ b/src/meta.zig @@ -10,3 +10,17 @@ pub fn ReturnOfType(comptime Type: type) type { const typeinfo: std.builtin.TypeInfo.Fn = @typeInfo(Type); return typeinfo.return_type orelse void; } + +// partially emulates behaviour of @typeName in previous Zig versions, +// converting "some.namespace.MyType" to "MyType" +pub fn typeBaseName(comptime fullname: []const u8) []const u8 { + + // leave type name like "namespace.WrapperType(namespace.MyType)" as it is + const baseidx = comptime std.mem.indexOf(u8, fullname, "("); + if (baseidx != null) return fullname; + + const idx = comptime std.mem.lastIndexOf(u8, fullname, "."); + + const name = if (idx == null) fullname else fullname[(idx.? + 1)..]; + return comptime std.fmt.comptimePrint("{s}", .{name}); +} diff --git a/src/tagged_pointer.zig b/src/tagged_pointer.zig index 0b51dc36c..9e6fe1646 100644 --- a/src/tagged_pointer.zig +++ b/src/tagged_pointer.zig @@ -9,6 +9,7 @@ const MutableString = bun.MutableString; const stringZ = bun.stringZ; const default_allocator = bun.default_allocator; const C = bun.C; +const typeBaseName = @import("./meta.zig").typeBaseName; const TagSize = u15; const AddressableSize = u49; @@ -58,7 +59,7 @@ pub fn TaggedPointerUnion(comptime Types: anytype) type { inline for (Types) |field, i| { enumFields[i] = .{ - .name = @typeName(field), + .name = comptime typeBaseName(@typeName(field)), .value = 1024 - i, }; } @@ -79,7 +80,7 @@ pub fn TaggedPointerUnion(comptime Types: anytype) type { inline for (Fields) |field, i| { enumFields[i] = .{ - .name = @typeName(field.default_value.?), + .name = comptime typeBaseName(@typeName(field.default_value.?)), .value = 1024 - i, }; } @@ -102,8 +103,9 @@ pub fn TaggedPointerUnion(comptime Types: anytype) type { const This = @This(); fn assert_type(comptime Type: type) void { - if (!comptime @hasField(Tag, @typeName(Type))) { - @compileError("TaggedPointerUnion does not have " ++ @typeName(Type) ++ "."); + var name = comptime typeBaseName(@typeName(Type)); + if (!comptime @hasField(Tag, name)) { + @compileError("TaggedPointerUnion does not have " ++ name ++ "."); } } pub inline fn get(this: This, comptime Type: anytype) ?*Type { @@ -124,7 +126,7 @@ pub fn TaggedPointerUnion(comptime Types: anytype) type { pub inline fn is(this: This, comptime Type: type) bool { comptime assert_type(Type); - return this.repr.data == comptime @enumToInt(@field(Tag, @typeName(Type))); + return this.repr.data == comptime @enumToInt(@field(Tag, typeBaseName(@typeName(Type)))); } pub inline fn isValidPtr(_ptr: ?*anyopaque) bool { @@ -134,9 +136,9 @@ pub fn TaggedPointerUnion(comptime Types: anytype) type { pub inline fn isValid(this: This) bool { return switch (this.repr.data) { @enumToInt( - @field(Tag, @typeName(Types[Types.len - 1])), + @field(Tag, typeBaseName(@typeName(Types[Types.len - 1]))), )...@enumToInt( - @field(Tag, @typeName(Types[0])), + @field(Tag, typeBaseName(@typeName(Types[0]))), ) => true, else => false, }; @@ -152,9 +154,10 @@ pub fn TaggedPointerUnion(comptime Types: anytype) type { pub inline fn init(_ptr: anytype) This { const Type = std.meta.Child(@TypeOf(_ptr)); + const name = comptime typeBaseName(@typeName(Type)); // there will be a compiler error if the passed in type doesn't exist in the enum - return This{ .repr = TaggedPointer.init(_ptr, @enumToInt(@field(Tag, @typeName(Type)))) }; + return This{ .repr = TaggedPointer.init(_ptr, @enumToInt(@field(Tag, name))) }; } }; } diff --git a/test/apps/bun-create-next.sh b/test/apps/bun-create-next.sh index 4f19e535d..110351d97 100644 --- a/test/apps/bun-create-next.sh +++ b/test/apps/bun-create-next.sh @@ -4,21 +4,20 @@ set -euo pipefail # The important part of this test: make sure that bun.js successfully loads # The most likely reason for this test to fail is that something broke in the JavaScriptCore <> bun integration -killall -9 $(basename $BUN_BIN) || echo "" +killall -9 "$(basename "$BUN_BIN")" || echo "" -rm -rf /tmp/next-app -mkdir -p /tmp/next-app -$BUN_BIN create next /tmp/next-app +DIR=$(mktemp -d -t next-app) +$BUN_BIN create next "$DIR" if (($?)); then echo "bun create failed" exit 1 fi -echo "hi!" >/tmp/next-app/public/file.txt -echo "export default 'string';" >/tmp/next-app/file.js +echo "hi!" >"$DIR/public/file.txt" +echo "export default 'string';" >"$DIR/file.js" -cd /tmp/next-app +cd "$DIR" BUN_CRASH_WITHOUT_JIT=1 $BUN_BIN dev --port 8087 & sleep 0.1 curl --fail -Ss http://localhost:8087/ @@ -28,7 +27,7 @@ if [[ "$(curl --fail -sS http://localhost:8087/file.txt)" != "hi!" ]]; then echo "" echo "" echo "ERR: Expected 'hi!', got '$(curl --fail -sS http://localhost:8087/file.txt)'" - killall -9 $(basename $BUN_BIN) || echo "" + killall -9 "$(basename "$BUN_BIN")" || echo "" exit 1 fi @@ -37,12 +36,12 @@ if [[ "$(curl --fail -sS http://localhost:8087/file.js)" != *"string"* ]]; then echo "" echo "" echo "ERR: Expected file to contain string got '$(curl --fail -sS http://localhost:8087/file.js)'" - killall -9 $(basename $BUN_BIN) || echo "" + killall -9 "$(basename "$BUN_BIN")" || echo "" exit 1 fi # very simple HMR test -echo "export default 'string';" >/tmp/next-app/file2.js +echo "export default 'string';" >"$DIR/file2.js" sleep 0.1 if [[ "$(curl --fail -sS http://localhost:8087/file2.js)" != *"string"* ]]; then @@ -50,8 +49,8 @@ if [[ "$(curl --fail -sS http://localhost:8087/file2.js)" != *"string"* ]]; then echo "" echo "" echo "ERR: Expected file to contain string got '$(curl --fail -sS http://localhost:8087/file2.js)'" - killall -9 $(basename $BUN_BIN) || echo "" + killall -9 "$(basename "$BUN_BIN")" || echo "" exit 1 fi -killall -9 $(basename $BUN_BIN) || echo "" +killall -9 "$(basename "$BUN_BIN")" || echo "" diff --git a/test/apps/bun-create-react.sh b/test/apps/bun-create-react.sh index 41552dee5..e903b3f65 100644 --- a/test/apps/bun-create-react.sh +++ b/test/apps/bun-create-react.sh @@ -1,19 +1,20 @@ #!/bin/bash -killall -9 $(basename $BUN_BIN) || echo "" +set -euo pipefail -rm -rf /tmp/react-app -mkdir -p /tmp/react-app -$BUN_BIN create react /tmp/react-app +killall -9 "$(basename "$BUN_BIN")" || echo "" + +DIR=$(mktemp -d -t react-app) +$BUN_BIN create react "$DIR" if (($?)); then echo "bun create failed" exit 1 fi -cd /tmp/react-app +cd "$DIR" BUN_CRASH_WITHOUT_JIT=1 $BUN_BIN dev --port 8087 & sleep 0.005 -curl --fail http://localhost:8087/ && curl --fail http://localhost:8087/src/index.jsx && killall -9 $(basename $BUN_BIN) && echo "✅ bun create react passed." +curl --fail http://localhost:8087/ && curl --fail http://localhost:8087/src/index.jsx && killall -9 "$(basename "$BUN_BIN")" && echo "✅ bun create react passed." exit $? diff --git a/test/apps/bun-dev-index-html.sh b/test/apps/bun-dev-index-html.sh index 01d99b71a..2cabb798b 100644 --- a/test/apps/bun-dev-index-html.sh +++ b/test/apps/bun-dev-index-html.sh @@ -2,9 +2,9 @@ set -euo pipefail -killall -9 $(basename $BUN_BIN) || echo "" +killall -9 "$(basename "$BUN_BIN")" || echo "" -dir=$(mktemp -d --suffix=bun-dev-check) +DIR=$(mktemp -d -t bun-dev-check) index_content="<html><body>index.html</body></html>" bacon_content="<html><body>bacon.html</body></html>" @@ -14,13 +14,13 @@ css_not_transpiled_content="@import url(/index.js); @import url(/i-dont-exist.cs css_is_transpiled_import="*{background-color:red;}" css_is_transpiled="@import url(./css_is_transpiled_import.css);" -echo $index_content >"$dir/index.html" -echo $js_content >"$dir/index.js" -echo $bacon_content >"$dir/bacon.html" -echo $static_content >"$dir/static.txt" -echo $css_not_transpiled_content >"$dir/css_not_transpiled_content.css" +echo $index_content >"$DIR/index.html" +echo $js_content >"$DIR/index.js" +echo $bacon_content >"$DIR/bacon.html" +echo $static_content >"$DIR/static.txt" +echo $css_not_transpiled_content >"$DIR/css_not_transpiled_content.css" -cd $dir +cd "$DIR" $BUN_BIN dev --port 8087 & sleep 0.005 @@ -65,5 +65,5 @@ if [[ "$(curl --fail -sS http://localhost:8087/bacon.html)" != "$bacon_content" exit 1 fi -killall -9 $(basename $BUN_BIN) || echo "" +killall -9 "$(basename "$BUN_BIN")" || echo "" echo "✅ bun dev index html check passed." diff --git a/test/apps/bun-dev.sh b/test/apps/bun-dev.sh index fd2447e93..485edd69a 100644 --- a/test/apps/bun-dev.sh +++ b/test/apps/bun-dev.sh @@ -2,21 +2,21 @@ set -euo pipefail -killall -9 $(basename $BUN_BIN) || echo "" +killall -9 "$(basename "$BUN_BIN")" || echo "" -dir=$(mktemp -d --suffix=bun-dev-check) +DIR=$(mktemp -d -t bun-dev-check) index_content="<html><body>index.html</body></html>" bacon_content="<html><body>bacon.html</body></html>" js_content="console.log('hi')" -mkdir -p $dir/public +mkdir -p "$DIR/public" -echo $index_content >"$dir/public/index.html" -echo $js_content >"$dir/index.js" -echo $bacon_content >"$dir/public/bacon.html" +echo $index_content >"$DIR/public/index.html" +echo $js_content >"$DIR/index.js" +echo $bacon_content >"$DIR/public/bacon.html" -cd $dir +cd "$DIR" $BUN_BIN dev --port 8087 & sleep 0.005 diff --git a/test/apps/bun-install-lockfile-status.sh b/test/apps/bun-install-lockfile-status.sh index b23b4fc3c..de8a4a8f2 100644 --- a/test/apps/bun-install-lockfile-status.sh +++ b/test/apps/bun-install-lockfile-status.sh @@ -2,11 +2,11 @@ set -euo pipefail -killall -9 $(basename $BUN_BIN) || echo "" +killall -9 "$(basename "$BUN_BIN")" || echo "" -dir=$(mktemp -d --suffix=bun-lockfile) +DIR=$(mktemp -d -t bun-lockfile) -cd $dir +cd "$DIR" $BUN_BIN add react diff --git a/test/apps/bun-install-utf8.sh b/test/apps/bun-install-utf8.sh index 66783cb50..263eade6a 100644 --- a/test/apps/bun-install-utf8.sh +++ b/test/apps/bun-install-utf8.sh @@ -2,11 +2,11 @@ set -euo pipefail -killall -9 $(basename $BUN_BIN) || echo "" +killall -9 "$(basename "$BUN_BIN")" || echo "" -dir=$(mktemp -d --suffix=bun-ADD) +DIR=$(mktemp -d -t bun-ADD) -cd $dir +cd "$DIR" # https://github.com/Jarred-Sumner/bun/issues/115 echo '{ "author": "Arnaud Barré (https://github.com/ArnaudBarre)" }' >package.json diff --git a/test/apps/bun-install.sh b/test/apps/bun-install.sh index dd4083e33..adc69fec3 100644 --- a/test/apps/bun-install.sh +++ b/test/apps/bun-install.sh @@ -2,9 +2,9 @@ set -euo pipefail -dir=$(mktemp -d --suffix=bun-install-test-1) +DIR=$(mktemp -d -t bun-install-test-1) -cd $dir +cd "$DIR" ${NPM_CLIENT:-$(which bun)} add react react-dom @types/react @babel/parser esbuild echo "console.log(typeof require(\"react\").createElement);" >index.js @@ -47,7 +47,7 @@ fi ${NPM_CLIENT:-$(which bun)} remove react-dom if [ -d "node_modules/react-dom" ]; then - echo "ERR: react-dom module still exists in $dir" + echo "ERR: react-dom module still exists in $DIR" exit 1 fi @@ -68,14 +68,14 @@ if echo "$yarn_dot_lock" | grep -q "@types/react"; then fi if echo "$yarn_dot_lock" | grep -q "@types/react"; then - echo "ERR: @types/react module still exists in $dir" + echo "ERR: @types/react module still exists in $DIR" exit 1 fi ${NPM_CLIENT:-$(which bun)} remove react if [ -d "node_modules/react" ]; then - echo "ERR: react module still exists in $dir" + echo "ERR: react module still exists in $DIR" exit 1 fi diff --git a/test/apps/bun-run-check.sh b/test/apps/bun-run-check.sh index dca1db6ae..decfb2896 100644 --- a/test/apps/bun-run-check.sh +++ b/test/apps/bun-run-check.sh @@ -1,6 +1,8 @@ #!/bin/bash -(killall -9 $(basename $BUN_BIN) || echo "") >/dev/null 2>&1 +set -euo pipefail + +(killall -9 "$(basename "$BUN_BIN")" || echo "") >/dev/null 2>&1 # https://github.com/Jarred-Sumner/bun/issues/40 # Define a function (details aren't important) @@ -8,11 +10,10 @@ fn() { :; } # The important bit: export the function export -f fn -rm -rf /tmp/bun-run-check -mkdir -p /tmp/bun-run-check +DIR=$(mktemp -d -t bun-run-check) -cp ./bun-run-check-package.json /tmp/bun-run-check/package.json -cd /tmp/bun-run-check +cp ./bun-run-check-package.json "$DIR/package.json" +cd "$DIR" $BUN_BIN run bash -- -c "" @@ -22,12 +23,12 @@ if (($?)); then fi # https://github.com/Jarred-Sumner/bun/issues/53 -rm -f /tmp/bun-run-out.expected.txt /tmp/bun-run-out.txt >/dev/null 2>&1 +rm -f "$DIR/bun-run-out.expected.txt" "$DIR/bun-run-out.txt" >/dev/null 2>&1 -$BUN_BIN run --silent argv -- foo bar baz >/tmp/bun-run-out.txt -npm run --silent argv -- foo bar baz >/tmp/bun-run-out.expected.txt +$BUN_BIN run --silent argv -- foo bar baz > "$DIR/bun-run-out.txt" +npm run --silent argv -- foo bar baz > "$DIR/bun-run-out.expected.txt" -cmp -s /tmp/bun-run-out.expected.txt /tmp/bun-run-out.txt +cmp -s "$DIR/bun-run-out.expected.txt" "$DIR/bun-run-out.txt" if (($?)); then echo "argv failed" exit 1 diff --git a/test/scripts/bun.lockb b/test/scripts/bun.lockb Binary files differindex 2d9937d57..4d944995a 100755 --- a/test/scripts/bun.lockb +++ b/test/scripts/bun.lockb diff --git a/test/scripts/package-lock.json b/test/scripts/package-lock.json index a41b9bd92..10abe53e4 100644 --- a/test/scripts/package-lock.json +++ b/test/scripts/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "puppeteer": "^10.2.0" + "puppeteer": "^10.4.0" } }, "node_modules/@types/node": { @@ -425,8 +425,10 @@ }, "node_modules/puppeteer": { "version": "10.4.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.4.0.tgz", + "integrity": "sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w==", + "deprecated": "Version no longer supported. Upgrade to @latest", "hasInstallScript": true, - "license": "Apache-2.0", "dependencies": { "debug": "4.3.1", "devtools-protocol": "0.0.901419", @@ -804,6 +806,8 @@ }, "puppeteer": { "version": "10.4.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.4.0.tgz", + "integrity": "sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w==", "requires": { "debug": "4.3.1", "devtools-protocol": "0.0.901419", diff --git a/test/scripts/package.json b/test/scripts/package.json index b4637138b..bc5c1db22 100644 --- a/test/scripts/package.json +++ b/test/scripts/package.json @@ -1,5 +1,5 @@ { "dependencies": { - "puppeteer": "^10.2.0" + "puppeteer": "^10.4.0" } } diff --git a/test/snapshots/array-args-with-default-values.hmr.js b/test/snapshots/array-args-with-default-values.hmr.js index 3c8997b54..421272052 100644 --- a/test/snapshots/array-args-with-default-values.hmr.js +++ b/test/snapshots/array-args-with-default-values.hmr.js @@ -8,7 +8,7 @@ __FastRefreshModule as FastHMR import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; -var hmr = new FastHMR(3474597122, "array-args-with-default-values.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(3022324119, "array-args-with-default-values.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { var lines; const data = () => lines.map(([a = null, b = null, c = null, d = null]) => ({ diff --git a/test/snapshots/bundled-entry-point.hmr.js b/test/snapshots/bundled-entry-point.hmr.js index b4fb5e46f..4440f8f36 100644 --- a/test/snapshots/bundled-entry-point.hmr.js +++ b/test/snapshots/bundled-entry-point.hmr.js @@ -1,18 +1,18 @@ import { __require as require -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __FastRefreshModule as FastHMR -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __FastRefreshRuntime as FastRefresh -} from "http://localhost:3000/bun:wrap"; -import * as $bbcd215f from "http://localhost:3000/node_modules/react/index.js"; -var hmr = new FastHMR(3012834585, "bundled-entry-point.js", FastRefresh), exports = hmr.exports; +} from "http://localhost:8080/bun:wrap"; +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var hmr = new FastHMR(2903293251, "bundled-entry-point.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { function test() { return testDone(import.meta.url); @@ -30,4 +30,4 @@ export { $$hmr_test as test }; -//# sourceMappingURL=http://localhost:3000/bundled-entry-point.js.map +//# sourceMappingURL=http://localhost:8080/bundled-entry-point.js.map diff --git a/test/snapshots/bundled-entry-point.js b/test/snapshots/bundled-entry-point.js index 51562933f..4f5a59894 100644 --- a/test/snapshots/bundled-entry-point.js +++ b/test/snapshots/bundled-entry-point.js @@ -1,11 +1,9 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; -import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; export function test() { return testDone(import.meta.url); - } - //# sourceMappingURL=http://localhost:8080/bundled-entry-point.js.map diff --git a/test/snapshots/caught-require.hmr.js b/test/snapshots/caught-require.hmr.js index 8a63f51a0..e1229ee3f 100644 --- a/test/snapshots/caught-require.hmr.js +++ b/test/snapshots/caught-require.hmr.js @@ -11,10 +11,12 @@ __FastRefreshModule as FastHMR import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; -var hmr = new FastHMR(2398506918, "caught-require.js", FastRefresh), exports = hmr.exports; +var this_package_should_not_exist_f335_0 = (() => ({})); +var this_package_should_not_exist_f335_1 = (() => ({})); +var hmr = new FastHMR(2167781, "caught-require.js", FastRefresh), exports = hmr.exports; await (hmr._load = async function() { try { - require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + require((() => { throw (new Error(`Cannot require module "this-package-should-not-exist"`)); } )()); } catch (exception) { } try { @@ -26,7 +28,7 @@ await (hmr._load = async function() { }); async function test() { try { - require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + require((() => { throw (new Error(`Cannot require module "this-package-should-not-exist"`)); } )()); } catch (exception) { } try { diff --git a/test/snapshots/caught-require.js b/test/snapshots/caught-require.js index 73608f8e3..7c356a21d 100644 --- a/test/snapshots/caught-require.js +++ b/test/snapshots/caught-require.js @@ -1,12 +1,12 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; +var this_package_should_not_exist_f335_0 = (() => ({})); +var this_package_should_not_exist_f335_1 = (() => ({})); try { - require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); - + require((() => { throw (new Error(`Cannot require module "this-package-should-not-exist"`)); } )()); } catch (exception) { } - try { await import("this-package-should-not-exist"); } catch (exception) { @@ -16,7 +16,7 @@ import("this-package-should-not-exist").then(() => { }); export async function test() { try { - require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + require((() => { throw (new Error(`Cannot require module "this-package-should-not-exist"`)); } )()); } catch (exception) { } try { diff --git a/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.js b/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.js index b74b8c2b7..3d98612c6 100644 --- a/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.js +++ b/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.js @@ -1,19 +1,19 @@ import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __FastRefreshModule as FastHMR -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __FastRefreshRuntime as FastRefresh -} from "http://localhost:3000/bun:wrap"; -import _login from "http://localhost:3000/_login.js"; -import _auth from "http://localhost:3000/_auth.js"; -import * as _loginReally from "http://localhost:3000/_login.js"; -import * as _loginReally2 from "http://localhost:3000/_login.js"; -import * as _authReally from "http://localhost:3000/_auth.js"; -var hmr = new FastHMR(3878252498, "cjs-transform-shouldnt-have-static-imports-in-cjs-function.js", FastRefresh), exports = hmr.exports; +} from "http://localhost:8080/bun:wrap"; +import _login from "http://localhost:8080/_login.js"; +import _auth from "http://localhost:8080/_auth.js"; +import * as _loginReally from "http://localhost:8080/_login.js"; +import * as _loginReally2 from "http://localhost:8080/_login.js"; +import * as _authReally from "http://localhost:8080/_auth.js"; +var hmr = new FastHMR(2970650542, "cjs-transform-shouldnt-have-static-imports-in-cjs-function.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { function test() { return testDone(import.meta.url); @@ -42,4 +42,4 @@ export { $$hmr_bar as bar }; -//# sourceMappingURL=http://localhost:3000/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js.map +//# sourceMappingURL=http://localhost:8080/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js.map diff --git a/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js b/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js index 1bd6883d8..77e4fc695 100644 --- a/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js +++ b/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js @@ -5,7 +5,6 @@ import * as _loginReally2 from "http://localhost:8080/_login.js"; import * as _authReally from "http://localhost:8080/_auth.js"; export { _login as login }; - export function test() { return testDone(import.meta.url); } diff --git a/test/snapshots/code-simplification-neql-define.hmr.js b/test/snapshots/code-simplification-neql-define.hmr.js index 6d521b01d..51111af01 100644 --- a/test/snapshots/code-simplification-neql-define.hmr.js +++ b/test/snapshots/code-simplification-neql-define.hmr.js @@ -8,7 +8,7 @@ __FastRefreshModule as FastHMR import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; -var hmr = new FastHMR(726376257, "code-simplification-neql-define.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(3365801599, "code-simplification-neql-define.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { var testFailed = false; const invariant = () => { diff --git a/test/snapshots/code-simplification-neql-define.js b/test/snapshots/code-simplification-neql-define.js index 6c0e684df..bf526597c 100644 --- a/test/snapshots/code-simplification-neql-define.js +++ b/test/snapshots/code-simplification-neql-define.js @@ -11,7 +11,7 @@ export var $f332019d = $$m({ var RelayQueryResponseCache = function() { var foo = function RelayQueryResponseCache(_ref) { var size = _ref.size, ttl = _ref.ttl; - !(size > 0) && invariant(false, "RelayQueryResponseCache: Expected the max cache size to be > 0, got " + "`%s`.", size); + !(size > 0) && invariant(false, "RelayQueryResponseCache: Expected the max cache size to be > 0, got `%s`.", size); !(ttl > 0) && invariant(false, "RelayQueryResponseCache: Expected the max ttl to be > 0, got `%s`.", ttl); }; foo({ size: 100, ttl: 3600 }); diff --git a/test/snapshots/custom-emotion-jsx/file.hmr.jsx b/test/snapshots/custom-emotion-jsx/file.hmr.jsx index d26b0a16d..d16266fd1 100644 --- a/test/snapshots/custom-emotion-jsx/file.hmr.jsx +++ b/test/snapshots/custom-emotion-jsx/file.hmr.jsx @@ -11,12 +11,12 @@ __require as require import { __FastRefreshModule as FastHMR } from "http://localhost:8080/bun:wrap"; -import * as $72625799 from "http://localhost:8080/node_modules/@emotion/react/jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js"; -var JSX = require($72625799); +import * as $5bf278c5 from "http://localhost:8080/node_modules/@emotion/react/jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.cjs.js"; +var JSX = require($5bf278c5); var jsx = require(JSX).jsxDEV; -import * as $5b3cea55 from "http://localhost:8080/node_modules/react-dom/index.js"; -var ReactDOM = require($5b3cea55); -var hmr = new FastHMR(2497996991, "custom-emotion-jsx/file.jsx", FastRefresh), exports = hmr.exports; +import * as $d2dc5006 from "http://localhost:8080/node_modules/react-dom/index.js"; +var ReactDOM = require($d2dc5006); +var hmr = new FastHMR(1769322314, "custom-emotion-jsx/file.jsx", FastRefresh), exports = hmr.exports; (hmr._load = function() { var Foo = () => jsx("div", { css: { content: '"it worked!"' } diff --git a/test/snapshots/custom-emotion-jsx/file.jsx b/test/snapshots/custom-emotion-jsx/file.jsx index 466cd4697..bef09a0c3 100644 --- a/test/snapshots/custom-emotion-jsx/file.jsx +++ b/test/snapshots/custom-emotion-jsx/file.jsx @@ -1,16 +1,14 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; -import * as $72625799 from "http://localhost:8080/node_modules/@emotion/react/jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js"; -var JSX = require($72625799); +import * as $5bf278c5 from "http://localhost:8080/node_modules/@emotion/react/jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.cjs.js"; +var JSX = require($5bf278c5); var jsx = require(JSX).jsxDEV; - -import * as $5b3cea55 from "http://localhost:8080/node_modules/react-dom/index.js"; -var ReactDOM = require($5b3cea55); +import * as $d2dc5006 from "http://localhost:8080/node_modules/react-dom/index.js"; +var ReactDOM = require($d2dc5006); export const Foo = () => jsx("div", { css: { content: '"it worked!"' } }, undefined, false, undefined, this); - export function test() { const element = document.createElement("div"); element.id = "custom-emotion-jsx"; diff --git a/test/snapshots/export-default-module-hot.hmr.js b/test/snapshots/export-default-module-hot.hmr.js index 3dadccd28..a1b5a69a2 100644 --- a/test/snapshots/export-default-module-hot.hmr.js +++ b/test/snapshots/export-default-module-hot.hmr.js @@ -8,7 +8,7 @@ __FastRefreshModule as FastHMR import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; -var hmr = new FastHMR(2909748314, "export-default-module-hot.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(2744655916, "export-default-module-hot.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { var export_default_module_hot_default = typeof module !== "undefined" && module.id; function test() { diff --git a/test/snapshots/export.hmr.js b/test/snapshots/export.hmr.js index 73d6db2d4..2ec5e1a80 100644 --- a/test/snapshots/export.hmr.js +++ b/test/snapshots/export.hmr.js @@ -1,16 +1,16 @@ import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __FastRefreshModule as FastHMR -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __FastRefreshRuntime as FastRefresh -} from "http://localhost:3000/bun:wrap"; -import what from "http://localhost:3000/_auth.js"; -import * as where from "http://localhost:3000/_auth.js"; -var hmr = new FastHMR(1879780259, "export.js", FastRefresh), exports = hmr.exports; +} from "http://localhost:8080/bun:wrap"; +import what from "http://localhost:8080/_auth.js"; +import * as where from "http://localhost:8080/_auth.js"; +var hmr = new FastHMR(2026450590, "export.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { var yoyoyo = "yoyoyo"; function hey() { @@ -70,9 +70,9 @@ export { $$hmr_booop as booop, $$hmr_test as test }; -export { default as auth } from "http://localhost:3000/_auth.js"; -export { default as login } from "http://localhost:3000/_login.js"; -export * from "http://localhost:3000/_bacon.js"; -export { } from "http://localhost:3000/_bacon.js"; +export { default as auth } from "http://localhost:8080/_auth.js"; +export { default as login } from "http://localhost:8080/_login.js"; +export * from "http://localhost:8080/_bacon.js"; +export { } from "http://localhost:8080/_bacon.js"; -//# sourceMappingURL=http://localhost:3000/export.js.map +//# sourceMappingURL=http://localhost:8080/export.js.map diff --git a/test/snapshots/export.js b/test/snapshots/export.js index 986d3b45f..84fe5b8e9 100644 --- a/test/snapshots/export.js +++ b/test/snapshots/export.js @@ -1,6 +1,5 @@ import what from "http://localhost:8080/_auth.js"; export { default as auth } from "http://localhost:8080/_auth.js"; - export { default as login } from "http://localhost:8080/_login.js"; export * from "http://localhost:8080/_bacon.js"; export let yoyoyo = "yoyoyo"; @@ -18,7 +17,6 @@ export { } from "http://localhost:8080/_bacon.js"; import * as where from "http://localhost:8080/_auth.js"; export { where }; - export { bar as booop }; export function test() { hey(); diff --git a/test/snapshots/forbid-in-is-correct.hmr.js b/test/snapshots/forbid-in-is-correct.hmr.js index ae3714d04..fc01825b5 100644 --- a/test/snapshots/forbid-in-is-correct.hmr.js +++ b/test/snapshots/forbid-in-is-correct.hmr.js @@ -8,7 +8,7 @@ __FastRefreshModule as FastHMR import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; -var hmr = new FastHMR(346837007, "forbid-in-is-correct.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(30801918, "forbid-in-is-correct.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { var foo = () => { var D = (i, r) => () => (r || i((r = { exports: {} }).exports, r), r.exports); diff --git a/test/snapshots/global-is-remapped-to-globalThis.hmr.js b/test/snapshots/global-is-remapped-to-globalThis.hmr.js index a0e28b60a..7db0c2ef9 100644 --- a/test/snapshots/global-is-remapped-to-globalThis.hmr.js +++ b/test/snapshots/global-is-remapped-to-globalThis.hmr.js @@ -1,14 +1,14 @@ import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __FastRefreshModule as FastHMR -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __FastRefreshRuntime as FastRefresh -} from "http://localhost:3000/bun:wrap"; -var hmr = new FastHMR(713665787, "global-is-remapped-to-globalThis.js", FastRefresh), exports = hmr.exports; +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(997256900, "global-is-remapped-to-globalThis.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { function test() { console.assert(globalThis === globalThis); @@ -27,4 +27,4 @@ export { $$hmr_test as test }; -//# sourceMappingURL=http://localhost:3000/global-is-remapped-to-globalThis.js.map +//# sourceMappingURL=http://localhost:8080/global-is-remapped-to-globalThis.js.map diff --git a/test/snapshots/jsx-entities.hmr.jsx b/test/snapshots/jsx-entities.hmr.jsx index 3bad6ca8d..cee60e53e 100644 --- a/test/snapshots/jsx-entities.hmr.jsx +++ b/test/snapshots/jsx-entities.hmr.jsx @@ -11,14 +11,14 @@ __require as require import { __FastRefreshModule as FastHMR } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); -import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; -var JSXClassic = require($bbcd215f); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var JSXClassic = require($45b81229); var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; -import * as $1f6f0e67 from "http://localhost:8080/node_modules/react-dom/server.browser.js"; -var ReactDOM = require($1f6f0e67); -var hmr = new FastHMR(817082122, "jsx-entities.jsx", FastRefresh), exports = hmr.exports; +import * as $72f3f54c from "http://localhost:8080/node_modules/react-dom/server.browser.js"; +var ReactDOM = require($72f3f54c); +var hmr = new FastHMR(2026553427, "jsx-entities.jsx", FastRefresh), exports = hmr.exports; (hmr._load = function() { const elements = { [ReactDOM.renderToString(jsx(JSXFrag, { diff --git a/test/snapshots/jsx-entities.jsx b/test/snapshots/jsx-entities.jsx index 9fd075bc6..e4f9a8745 100644 --- a/test/snapshots/jsx-entities.jsx +++ b/test/snapshots/jsx-entities.jsx @@ -1,14 +1,13 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); -import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; -var JSXClassic = require($bbcd215f); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var JSXClassic = require($45b81229); var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; - -import * as $1f6f0e67 from "http://localhost:8080/node_modules/react-dom/server.browser.js"; -var ReactDOM = require($1f6f0e67); +import * as $72f3f54c from "http://localhost:8080/node_modules/react-dom/server.browser.js"; +var ReactDOM = require($72f3f54c); const elements = { [ReactDOM.renderToString(jsx(JSXFrag, { children: '"' @@ -2751,7 +2750,6 @@ const elements = { children: "\u0294" }, undefined, false, undefined, this))]: 660 }; - export function test() { for (let rawKey in elements) { var key = rawKey; diff --git a/test/snapshots/jsx-spacing.hmr.jsx b/test/snapshots/jsx-spacing.hmr.jsx index 59287257b..b626bd920 100644 --- a/test/snapshots/jsx-spacing.hmr.jsx +++ b/test/snapshots/jsx-spacing.hmr.jsx @@ -11,12 +11,12 @@ __require as require import { __FastRefreshModule as FastHMR } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); var jsx = require(JSX).jsxDEV; -import * as $1f6f0e67 from "http://localhost:8080/node_modules/react-dom/server.browser.js"; -var ReactDOM = require($1f6f0e67); -var hmr = new FastHMR(3614189736, "jsx-spacing.jsx", FastRefresh), exports = hmr.exports; +import * as $72f3f54c from "http://localhost:8080/node_modules/react-dom/server.browser.js"; +var ReactDOM = require($72f3f54c); +var hmr = new FastHMR(1284217403, "jsx-spacing.jsx", FastRefresh), exports = hmr.exports; (hmr._load = function() { const ReturnDescriptionAsString = ({ description }) => description; function test() { diff --git a/test/snapshots/jsx-spacing.jsx b/test/snapshots/jsx-spacing.jsx index bfbcab92f..2d79ddee7 100644 --- a/test/snapshots/jsx-spacing.jsx +++ b/test/snapshots/jsx-spacing.jsx @@ -1,14 +1,12 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); var jsx = require(JSX).jsxDEV; - -import * as $1f6f0e67 from "http://localhost:8080/node_modules/react-dom/server.browser.js"; -var ReactDOM = require($1f6f0e67); +import * as $72f3f54c from "http://localhost:8080/node_modules/react-dom/server.browser.js"; +var ReactDOM = require($72f3f54c); const ReturnDescriptionAsString = ({ description }) => description; - export function test() { const _bun = ReactDOM.renderToString(jsx(ReturnDescriptionAsString, { description: `line1 diff --git a/test/snapshots/latin1-chars-in-regexp.hmr.js b/test/snapshots/latin1-chars-in-regexp.hmr.js index afd3b813e..88183696a 100644 --- a/test/snapshots/latin1-chars-in-regexp.hmr.js +++ b/test/snapshots/latin1-chars-in-regexp.hmr.js @@ -8,7 +8,7 @@ __FastRefreshModule as FastHMR import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; -var hmr = new FastHMR(1430071586, "latin1-chars-in-regexp.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(3684541220, "latin1-chars-in-regexp.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; var re_btou = new RegExp([ diff --git a/test/snapshots/lodash-regexp.hmr.js b/test/snapshots/lodash-regexp.hmr.js index e5d6b9130..896ad287a 100644 --- a/test/snapshots/lodash-regexp.hmr.js +++ b/test/snapshots/lodash-regexp.hmr.js @@ -1,19 +1,19 @@ import { __require as require -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __FastRefreshModule as FastHMR -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __FastRefreshRuntime as FastRefresh -} from "http://localhost:3000/bun:wrap"; -import * as $60f52dc2 from "http://localhost:3000/node_modules/lodash/lodash.js"; -var { shuffle} = require($60f52dc2); -var hmr = new FastHMR(2158065009, "lodash-regexp.js", FastRefresh), exports = hmr.exports; +} from "http://localhost:8080/bun:wrap"; +import * as $2f2e4966 from "http://localhost:8080/node_modules/lodash/lodash.js"; +var { shuffle} = require($2f2e4966); +var hmr = new FastHMR(639488503, "lodash-regexp.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { function test() { const foo = [1, 2, 3, 4, 6]; @@ -42,4 +42,4 @@ export { $$hmr_test as test }; -//# sourceMappingURL=http://localhost:3000/lodash-regexp.js.map +//# sourceMappingURL=http://localhost:8080/lodash-regexp.js.map diff --git a/test/snapshots/lodash-regexp.js b/test/snapshots/lodash-regexp.js index b1566fb6d..5f3950b6a 100644 --- a/test/snapshots/lodash-regexp.js +++ b/test/snapshots/lodash-regexp.js @@ -1,11 +1,10 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; -import * as $60f52dc2 from "http://localhost:8080/node_modules/lodash/lodash.js"; -var { shuffle} = require($60f52dc2); +import * as $2f2e4966 from "http://localhost:8080/node_modules/lodash/lodash.js"; +var { shuffle} = require($2f2e4966); export function test() { const foo = [1, 2, 3, 4, 6]; - const bar = shuffle(foo); console.assert(bar !== foo); console.assert(bar.length === foo.length); @@ -19,5 +18,4 @@ export function test() { return testDone(import.meta.url); } - //# sourceMappingURL=http://localhost:8080/lodash-regexp.js.map diff --git a/test/snapshots/multiple-imports.hmr.js b/test/snapshots/multiple-imports.hmr.js index 59d620c07..4e42537f0 100644 --- a/test/snapshots/multiple-imports.hmr.js +++ b/test/snapshots/multiple-imports.hmr.js @@ -1,24 +1,24 @@ import { __FastRefreshRuntime as FastRefresh -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __require as require -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __FastRefreshModule as FastHMR -} from "http://localhost:3000/bun:wrap"; -import * as $2f488e5b from "http://localhost:3000/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); -import * as $bbcd215f from "http://localhost:3000/node_modules/react/index.js"; -var JSXClassic = require($bbcd215f); +} from "http://localhost:8080/bun:wrap"; +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var JSXClassic = require($45b81229); var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; -var { default: React} = require($bbcd215f); -var { default: React2} = require($bbcd215f); -var hmr = new FastHMR(2165509932, "multiple-imports.js", FastRefresh), exports = hmr.exports; +var { default: React} = require($45b81229); +var { default: React2} = require($45b81229); +var hmr = new FastHMR(2063938930, "multiple-imports.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { const bacon = React; const bacon2 = jsx(JSXFrag, { @@ -44,4 +44,4 @@ export { $$hmr_test as test }; -//# sourceMappingURL=http://localhost:3000/multiple-imports.js.map +//# sourceMappingURL=http://localhost:8080/multiple-imports.js.map diff --git a/test/snapshots/multiple-imports.js b/test/snapshots/multiple-imports.js index af9396b46..e8717b572 100644 --- a/test/snapshots/multiple-imports.js +++ b/test/snapshots/multiple-imports.js @@ -1,16 +1,14 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); -import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; -var JSXClassic = require($bbcd215f); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var JSXClassic = require($45b81229); var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; - -var { default: React} = require($bbcd215f); -var { default: React2} = require($bbcd215f); +var { default: React} = require($45b81229); +var { default: React2} = require($45b81229); const bacon = React; - const bacon2 = jsx(JSXFrag, { children: "hello" }, undefined, false, undefined, this); diff --git a/test/snapshots/multiple-var.hmr.js b/test/snapshots/multiple-var.hmr.js index 3acb5b8d3..940dbddad 100644 --- a/test/snapshots/multiple-var.hmr.js +++ b/test/snapshots/multiple-var.hmr.js @@ -8,7 +8,7 @@ __FastRefreshModule as FastHMR import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; -var hmr = new FastHMR(2883558553, "multiple-var.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(1028067224, "multiple-var.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { var foo = true; globalThis.TRUE_BUT_WE_CANT_TREESHAKE_IT = true; diff --git a/test/snapshots/number-literal-bug.hmr.js b/test/snapshots/number-literal-bug.hmr.js index cdb63994d..18e3748fa 100644 --- a/test/snapshots/number-literal-bug.hmr.js +++ b/test/snapshots/number-literal-bug.hmr.js @@ -8,7 +8,7 @@ __FastRefreshModule as FastHMR import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; -var hmr = new FastHMR(583570002, "number-literal-bug.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(3925211795, "number-literal-bug.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { function test() { const precision = 10; diff --git a/test/snapshots/optional-chain-with-function.hmr.js b/test/snapshots/optional-chain-with-function.hmr.js index e9a89a827..96b06cfe0 100644 --- a/test/snapshots/optional-chain-with-function.hmr.js +++ b/test/snapshots/optional-chain-with-function.hmr.js @@ -8,7 +8,7 @@ __FastRefreshModule as FastHMR import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; -var hmr = new FastHMR(3608848620, "optional-chain-with-function.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(2063149784, "optional-chain-with-function.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { function test() { try { diff --git a/test/snapshots/package-json-exports/index.hmr.js b/test/snapshots/package-json-exports/index.hmr.js index 69efa5194..7220e2a6d 100644 --- a/test/snapshots/package-json-exports/index.hmr.js +++ b/test/snapshots/package-json-exports/index.hmr.js @@ -1,25 +1,25 @@ import { __require as require -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __FastRefreshModule as FastHMR -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __FastRefreshRuntime as FastRefresh -} from "http://localhost:3000/bun:wrap"; -import * as $4068f25b from "http://localhost:3000/package-json-exports/node_modules/inexact/browser/index.js"; -var InexactRoot = require($4068f25b); -import * as $d2a171d2 from "http://localhost:3000/package-json-exports/node_modules/inexact/browser/dir/file.js"; -var InexactFile = require($d2a171d2); -import * as $522c6d1f from "http://localhost:3000/package-json-exports/node_modules/inexact/browser/foo.js"; -var ExactFile = require($522c6d1f); -import * as $fce83cd7 from "http://localhost:3000/package-json-exports/node_modules/js-only-exports/browser/js-file.js"; -var JSFileExtensionOnly = require($fce83cd7); -var hmr = new FastHMR(1953708113, "package-json-exports/index.js", FastRefresh), exports = hmr.exports; +} from "http://localhost:8080/bun:wrap"; +import * as $147f6594 from "http://localhost:8080/package-json-exports/node_modules/inexact/browser/index.js"; +var InexactRoot = require($147f6594); +import * as $f9f33cd5 from "http://localhost:8080/package-json-exports/node_modules/inexact/browser/dir/file.js"; +var InexactFile = require($f9f33cd5); +import * as $efd1f056 from "http://localhost:8080/package-json-exports/node_modules/inexact/browser/foo.js"; +var ExactFile = require($efd1f056); +import * as $3e697ad7 from "http://localhost:8080/package-json-exports/node_modules/js-only-exports/browser/js-file.js"; +var JSFileExtensionOnly = require($3e697ad7); +var hmr = new FastHMR(2713515135, "package-json-exports/index.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { async function test() { console.assert(InexactRoot.target === "browser"); @@ -41,4 +41,4 @@ export { $$hmr_test as test }; -//# sourceMappingURL=http://localhost:3000/package-json-exports/index.js.map +//# sourceMappingURL=http://localhost:8080/package-json-exports/index.js.map diff --git a/test/snapshots/package-json-exports/index.js b/test/snapshots/package-json-exports/index.js index 3d41a7985..7d9ad8b60 100644 --- a/test/snapshots/package-json-exports/index.js +++ b/test/snapshots/package-json-exports/index.js @@ -1,22 +1,20 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; -import * as $4068f25b from "http://localhost:8080/package-json-exports/node_modules/inexact/browser/index.js"; -var InexactRoot = require($4068f25b); -import * as $d2a171d2 from "http://localhost:8080/package-json-exports/node_modules/inexact/browser/dir/file.js"; -var InexactFile = require($d2a171d2); -import * as $522c6d1f from "http://localhost:8080/package-json-exports/node_modules/inexact/browser/foo.js"; -var ExactFile = require($522c6d1f); -import * as $fce83cd7 from "http://localhost:8080/package-json-exports/node_modules/js-only-exports/browser/js-file.js"; -var JSFileExtensionOnly = require($fce83cd7); +import * as $147f6594 from "http://localhost:8080/package-json-exports/node_modules/inexact/browser/index.js"; +var InexactRoot = require($147f6594); +import * as $f9f33cd5 from "http://localhost:8080/package-json-exports/node_modules/inexact/browser/dir/file.js"; +var InexactFile = require($f9f33cd5); +import * as $efd1f056 from "http://localhost:8080/package-json-exports/node_modules/inexact/browser/foo.js"; +var ExactFile = require($efd1f056); +import * as $3e697ad7 from "http://localhost:8080/package-json-exports/node_modules/js-only-exports/browser/js-file.js"; +var JSFileExtensionOnly = require($3e697ad7); export async function test() { console.assert(InexactRoot.target === "browser"); - console.assert(InexactFile.target === "browser"); console.assert(ExactFile.target === "browser"); console.assert(JSFileExtensionOnly.isJS === true); return testDone(import.meta.url); } - //# sourceMappingURL=http://localhost:8080/package-json-exports/index.js.map diff --git a/test/snapshots/package-json-utf8.hmr.js b/test/snapshots/package-json-utf8.hmr.js index 5676d6477..ba753af0e 100644 --- a/test/snapshots/package-json-utf8.hmr.js +++ b/test/snapshots/package-json-utf8.hmr.js @@ -9,7 +9,7 @@ import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; import pkg from "http://localhost:8080/utf8-package-json.json"; -var hmr = new FastHMR(4111115104, "package-json-utf8.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(1703475520, "package-json-utf8.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { function test() { console.assert(!!pkg.author); diff --git a/test/snapshots/package-json-utf8.js b/test/snapshots/package-json-utf8.js index 8845090f0..b08c3804d 100644 --- a/test/snapshots/package-json-utf8.js +++ b/test/snapshots/package-json-utf8.js @@ -1,9 +1,7 @@ import pkg from "http://localhost:8080/utf8-package-json.json"; export function test() { console.assert(!!pkg.author); - return testDone(import.meta.url); } - //# sourceMappingURL=http://localhost:8080/package-json-utf8.js.map diff --git a/test/snapshots/react-context-value-func.hmr.tsx b/test/snapshots/react-context-value-func.hmr.tsx index 0c751a7a9..3a11b4342 100644 --- a/test/snapshots/react-context-value-func.hmr.tsx +++ b/test/snapshots/react-context-value-func.hmr.tsx @@ -11,12 +11,12 @@ __require as require import { __FastRefreshModule as FastHMR } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); var jsx = require(JSX).jsxDEV; -import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; -var { default: React} = require($bbcd215f); -var hmr = new FastHMR(3514348331, "react-context-value-func.tsx", FastRefresh), exports = hmr.exports; +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var { default: React} = require($45b81229); +var hmr = new FastHMR(2913325904, "react-context-value-func.tsx", FastRefresh), exports = hmr.exports; (hmr._load = function() { const Context = React.createContext({}); const ContextProvider = ({ children }) => { diff --git a/test/snapshots/react-context-value-func.tsx b/test/snapshots/react-context-value-func.tsx index 71b5e5f60..faafc591a 100644 --- a/test/snapshots/react-context-value-func.tsx +++ b/test/snapshots/react-context-value-func.tsx @@ -1,14 +1,12 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); var jsx = require(JSX).jsxDEV; - -import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; -var { default: React} = require($bbcd215f); +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var { default: React} = require($45b81229); const Context = React.createContext({}); - const ContextProvider = ({ children }) => { const [cb, setCB] = React.useState(function() { }); diff --git a/test/snapshots/spread_with_key.hmr.tsx b/test/snapshots/spread_with_key.hmr.tsx index 37cb57b34..befb56390 100644 --- a/test/snapshots/spread_with_key.hmr.tsx +++ b/test/snapshots/spread_with_key.hmr.tsx @@ -11,13 +11,13 @@ __require as require import { __FastRefreshModule as FastHMR } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); -import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; -var JSXClassic = require($bbcd215f); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var JSXClassic = require($45b81229); var jsx = require(JSX).jsxDEV, jsxEl = require(JSXClassic).createElement; -var { default: React} = require($bbcd215f); -var hmr = new FastHMR(2717584935, "spread_with_key.tsx", FastRefresh), exports = hmr.exports; +var { default: React} = require($45b81229); +var hmr = new FastHMR(1528600417, "spread_with_key.tsx", FastRefresh), exports = hmr.exports; (hmr._load = function() { function SpreadWithTheKey({ className }) { const rest = {}; diff --git a/test/snapshots/spread_with_key.tsx b/test/snapshots/spread_with_key.tsx index e096a76c8..266ec96ea 100644 --- a/test/snapshots/spread_with_key.tsx +++ b/test/snapshots/spread_with_key.tsx @@ -1,16 +1,14 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); -import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; -var JSXClassic = require($bbcd215f); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var JSXClassic = require($45b81229); var jsx = require(JSX).jsxDEV, jsxEl = require(JSXClassic).createElement; - -var { default: React} = require($bbcd215f); +var { default: React} = require($45b81229); export function SpreadWithTheKey({ className }) { const rest = {}; - return jsxEl("div", { className, ...rest, @@ -18,7 +16,6 @@ export function SpreadWithTheKey({ className }) { key: "spread-with-the-key" }, "Rendered component containing warning"); } - export function test() { console.assert(React.isValidElement(jsx(SpreadWithTheKey, { className: "foo" diff --git a/test/snapshots/string-escapes.hmr.js b/test/snapshots/string-escapes.hmr.js index 5847bdf97..61adda87e 100644 --- a/test/snapshots/string-escapes.hmr.js +++ b/test/snapshots/string-escapes.hmr.js @@ -1,22 +1,22 @@ import { __FastRefreshRuntime as FastRefresh -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __require as require -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __FastRefreshModule as FastHMR -} from "http://localhost:3000/bun:wrap"; -import * as $2f488e5b from "http://localhost:3000/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); -import * as $bbcd215f from "http://localhost:3000/node_modules/react/index.js"; -var JSXClassic = require($bbcd215f); +} from "http://localhost:8080/bun:wrap"; +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var JSXClassic = require($45b81229); var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; -var hmr = new FastHMR(2482749838, "string-escapes.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(3888655093, "string-escapes.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { var tab = "\t"; var f = ""; @@ -487,4 +487,4 @@ export { $$hmr_test as test }; -//# sourceMappingURL=http://localhost:3000/string-escapes.js.map +//# sourceMappingURL=http://localhost:8080/string-escapes.js.map diff --git a/test/snapshots/string-escapes.js b/test/snapshots/string-escapes.js index 9084bc362..82122d6a5 100644 --- a/test/snapshots/string-escapes.js +++ b/test/snapshots/string-escapes.js @@ -1,12 +1,11 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); -import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; -var JSXClassic = require($bbcd215f); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var JSXClassic = require($45b81229); var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; - var tab = "\t"; var f = ""; var f = "\u2087"; diff --git a/test/snapshots/styledcomponents-output.hmr.js b/test/snapshots/styledcomponents-output.hmr.js index b39adb87c..266a24ca1 100644 --- a/test/snapshots/styledcomponents-output.hmr.js +++ b/test/snapshots/styledcomponents-output.hmr.js @@ -11,16 +11,16 @@ __require as require import { __FastRefreshModule as FastHMR } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); var jsx = require(JSX).jsxDEV; -import * as $d4051a2e from "http://localhost:8080/node_modules/styled-components/dist/styled-components.browser.esm.js"; -var { default: styled} = require($d4051a2e); -import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; -var { default: React} = require($bbcd215f); -import * as $5b3cea55 from "http://localhost:8080/node_modules/react-dom/index.js"; -var { default: ReactDOM} = require($5b3cea55); -var hmr = new FastHMR(1290604342, "styledcomponents-output.js", FastRefresh), exports = hmr.exports; +import * as $1dd97690 from "http://localhost:8080/node_modules/styled-components/dist/styled-components.browser.esm.js"; +var { default: styled} = require($1dd97690); +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var { default: React} = require($45b81229); +import * as $d2dc5006 from "http://localhost:8080/node_modules/react-dom/index.js"; +var { default: ReactDOM} = require($d2dc5006); +var hmr = new FastHMR(1833563982, "styledcomponents-output.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { const ErrorScreenRoot = styled.div` font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, diff --git a/test/snapshots/styledcomponents-output.js b/test/snapshots/styledcomponents-output.js index f3a59d365..63bfc786d 100644 --- a/test/snapshots/styledcomponents-output.js +++ b/test/snapshots/styledcomponents-output.js @@ -1,16 +1,15 @@ import { __require as require } from "http://localhost:8080/bun:wrap"; -import * as $2f488e5b from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; -var JSX = require($2f488e5b); +import * as $1407d117 from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var JSX = require($1407d117); var jsx = require(JSX).jsxDEV; - -import * as $d4051a2e from "http://localhost:8080/node_modules/styled-components/dist/styled-components.browser.esm.js"; -var { default: styled} = require($d4051a2e); -import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; -var { default: React} = require($bbcd215f); -import * as $5b3cea55 from "http://localhost:8080/node_modules/react-dom/index.js"; -var { default: ReactDOM} = require($5b3cea55); +import * as $1dd97690 from "http://localhost:8080/node_modules/styled-components/dist/styled-components.browser.esm.js"; +var { default: styled} = require($1dd97690); +import * as $45b81229 from "http://localhost:8080/node_modules/react/index.js"; +var { default: React} = require($45b81229); +import * as $d2dc5006 from "http://localhost:8080/node_modules/react-dom/index.js"; +var { default: ReactDOM} = require($d2dc5006); const ErrorScreenRoot = styled.div` font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, sans-serif; @@ -39,7 +38,6 @@ const ErrorScreenRoot = styled.div` color: inherit; } `; - export function test() { if (typeof window !== "undefined") { const reactEl = document.createElement("div"); diff --git a/test/snapshots/template-literal.hmr.js b/test/snapshots/template-literal.hmr.js index 0baee2be1..6d9c7b8ca 100644 --- a/test/snapshots/template-literal.hmr.js +++ b/test/snapshots/template-literal.hmr.js @@ -8,7 +8,7 @@ __FastRefreshModule as FastHMR import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; -var hmr = new FastHMR(2201713056, "template-literal.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(929338545, "template-literal.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { const css = (templ) => templ.toString(); const fooNoBracesUTF8 = css` diff --git a/test/snapshots/ts-fallback-rewrite-works.hmr.js b/test/snapshots/ts-fallback-rewrite-works.hmr.js index 09f26c952..855c2d89f 100644 --- a/test/snapshots/ts-fallback-rewrite-works.hmr.js +++ b/test/snapshots/ts-fallback-rewrite-works.hmr.js @@ -1,11 +1,11 @@ import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __HMRModule as HMR -} from "http://localhost:3000/bun:wrap"; -var hmr = new HMR(421762902, "ts-fallback-rewrite-works.ts"), exports = hmr.exports; +} from "http://localhost:8080/bun:wrap"; +var hmr = new HMR(1227236257, "ts-fallback-rewrite-works.ts"), exports = hmr.exports; (hmr._load = function() { function test() { return testDone(import.meta.url); @@ -23,4 +23,4 @@ export { $$hmr_test as test }; -//# sourceMappingURL=http://localhost:3000/ts-fallback-rewrite-works.js.map +//# sourceMappingURL=http://localhost:8080/ts-fallback-rewrite-works.js.map diff --git a/test/snapshots/tsx-fallback-rewrite-works.hmr.js b/test/snapshots/tsx-fallback-rewrite-works.hmr.js index b33df25c4..20b6e7a21 100644 --- a/test/snapshots/tsx-fallback-rewrite-works.hmr.js +++ b/test/snapshots/tsx-fallback-rewrite-works.hmr.js @@ -1,14 +1,14 @@ import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __FastRefreshModule as FastHMR -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __FastRefreshRuntime as FastRefresh -} from "http://localhost:3000/bun:wrap"; -var hmr = new FastHMR(2117426367, "tsx-fallback-rewrite-works.tsx", FastRefresh), exports = hmr.exports; +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(360033594, "tsx-fallback-rewrite-works.tsx", FastRefresh), exports = hmr.exports; (hmr._load = function() { function test() { return testDone(import.meta.url); @@ -26,4 +26,4 @@ export { $$hmr_test as test }; -//# sourceMappingURL=http://localhost:3000/tsx-fallback-rewrite-works.js.map +//# sourceMappingURL=http://localhost:8080/tsx-fallback-rewrite-works.js.map diff --git a/test/snapshots/type-only-imports.hmr.ts b/test/snapshots/type-only-imports.hmr.ts index f732881b7..f4cb4c2b1 100644 --- a/test/snapshots/type-only-imports.hmr.ts +++ b/test/snapshots/type-only-imports.hmr.ts @@ -1,11 +1,11 @@ import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __HMRModule as HMR -} from "http://localhost:3000/bun:wrap"; -var hmr = new HMR(650094581, "type-only-imports.ts"), exports = hmr.exports; +} from "http://localhost:8080/bun:wrap"; +var hmr = new HMR(3679071858, "type-only-imports.ts"), exports = hmr.exports; (hmr._load = function() { var baconator = true; var SilentSymbolCollisionsAreOkayInTypeScript = true; @@ -33,4 +33,4 @@ export { $$hmr_test as test }; -//# sourceMappingURL=http://localhost:3000/type-only-imports.ts.map +//# sourceMappingURL=http://localhost:8080/type-only-imports.ts.map diff --git a/test/snapshots/unicode-identifiers.hmr.js b/test/snapshots/unicode-identifiers.hmr.js index be84e436e..af31ee68f 100644 --- a/test/snapshots/unicode-identifiers.hmr.js +++ b/test/snapshots/unicode-identifiers.hmr.js @@ -1,14 +1,14 @@ import { __HMRClient as Bun -} from "http://localhost:3000/bun:wrap"; -Bun.activate(true); +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); import { __FastRefreshModule as FastHMR -} from "http://localhost:3000/bun:wrap"; +} from "http://localhost:8080/bun:wrap"; import { __FastRefreshRuntime as FastRefresh -} from "http://localhost:3000/bun:wrap"; -var hmr = new FastHMR(1398361736, "unicode-identifiers.js", FastRefresh), exports = hmr.exports; +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(3104834253, "unicode-identifiers.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { var ε = 0.000001; var ε2 = ε * ε; @@ -38,4 +38,4 @@ export { $$hmr_test as test }; -//# sourceMappingURL=http://localhost:3000/unicode-identifiers.js.map +//# sourceMappingURL=http://localhost:8080/unicode-identifiers.js.map diff --git a/test/snapshots/void-shouldnt-delete-call-expressions.hmr.js b/test/snapshots/void-shouldnt-delete-call-expressions.hmr.js index f2a1dbf18..e1cef13fe 100644 --- a/test/snapshots/void-shouldnt-delete-call-expressions.hmr.js +++ b/test/snapshots/void-shouldnt-delete-call-expressions.hmr.js @@ -8,7 +8,7 @@ __FastRefreshModule as FastHMR import { __FastRefreshRuntime as FastRefresh } from "http://localhost:8080/bun:wrap"; -var hmr = new FastHMR(635901064, "void-shouldnt-delete-call-expressions.js", FastRefresh), exports = hmr.exports; +var hmr = new FastHMR(4057172107, "void-shouldnt-delete-call-expressions.js", FastRefresh), exports = hmr.exports; (hmr._load = function() { var was_called = false; function thisShouldBeCalled() { diff --git a/test/snippets/bun.lockb b/test/snippets/bun.lockb Binary files differindex 127db7b6d..cc2676be1 100755 --- a/test/snippets/bun.lockb +++ b/test/snippets/bun.lockb |
