diff options
Diffstat (limited to 'test')
326 files changed, 31832 insertions, 0 deletions
diff --git a/test/README.md b/test/README.md new file mode 100644 index 000000000..292d23cf2 --- /dev/null +++ b/test/README.md @@ -0,0 +1,138 @@ +# Tests in Bun + +Bun currently has four different kinds of tests + +To run the tests: + +```bash +make test-all +bun wiptest +``` + +### Browser tests + +Browser tests run end-to-end inside of Puppeteer and execute code transpiled by `bun dev`. These tests are in [./snippets](./snippets). + +The interface is: + +```js +// this function is called after import() +// if testDone() is never called, the test fails +export function test() { + return testDone(import.meta.url); +} +``` + +On success, it saves a snapshot to [./snapshots](./snapshots) which is checked into git. + +#### Adding a new test + +1. Create a new file in the `snippets` directory. +2. Append the filename to [./scripts/snippets.json](./scripts/snippets.json) +3. Run `bun dev` inside this folder in one terminal window +4. Run `make integration-test-dev` + +These tests are run twice. Once with HMR enabled and once with HMR disabled. HMR changes the output enough to warrant it's own special treatment. + +#### Running the tests + +To run the browser tests with HMR on a production build: + +```bash +make test-with-hmr +``` + +To run the browser tests without HMR on a production build: + +```bash +make test-with-no-hmr +``` + +To run the browser tests with HMR on a debug build: + +```bash +make test-dev-with-hmr +``` + +To run the browser tests without HMR on a debug build: + +```bash +make test-dev-no-hmr +``` + +To run the browser tests on whatever version of bun is running on port 3000: + +```bash +make integration-test-dev +``` + +These were the first tests bun started with + +### Runtime tests + +These tests are in [./bun.js](./bun.js) and are files which are either `.test.js` or `.test.ts` files. + +These test that the runtime behaves as expected. These also test the transpiler, both because test files are transpiled and directly by running the transpiler via `Bun.Transpiler`. + +#### Adding a new test + +1. Create a new file in [./bun.js](./bun.js/) with `.test` in the name. + +These test use `bun:test` as the import (though you can also import from `vitest` or jest and it will work). + +This will eventually be a public test runner for bun, but the reporter isn't very good yet and it doesn't run in parallel. + +The syntax intends for Jest compatibility. + +```ts +import { describe, expect, it } from "bun:test"; + +describe("Example", () => { + it("should work", () => { + expect(1).toBe(1); + }); +}); +``` + +#### Running the tests + +Run `bun wiptest ${part-of-file-name}` + +If you run the test in the top-level bun repo directory, it will take an extra couple seconds because `bun wiptest` will scan through all of WebKit recursively. Consider running it in the `bun.js` directory instead. + +### CLI tests + +These run the bash files in the `apps` directory. + +They check end-to-end that the CLI works as expected. + +```bash +# Install dependencies for running tests +# Does not run tests +make test-install + +# Check a Create React App created via `bun create react ./foo` returns HTML +make test-create-react + +# Check a Next.js app created via `bun create next ./foo` SSRs successfully +make test-create-next + +# Check that bun run works for the same CLI args passed to npm run +make test-bun-run + +# Check that "react" installed via bun install loads successfully +# and that deleting/adding updates the lockfile as expected +make test-bun-install + +# Check that serving public paths works correctly +# and that files which should be transpiled are transpiled and files which shouldn't be aren't +make test-bun-dev +``` + +### Zig tests + +These tests live in various `.zig` files throughout Bun's codebase, leveraging Zig's builtin `test` keyword. + +Currently, they're not run automatically nor is there a simple way to run all of them. + +This is an area bun needs to improve in. diff --git a/test/apps/bun-create-next.sh b/test/apps/bun-create-next.sh new file mode 100644 index 000000000..4f19e535d --- /dev/null +++ b/test/apps/bun-create-next.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +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 "" + +rm -rf /tmp/next-app +mkdir -p /tmp/next-app +$BUN_BIN create next /tmp/next-app + +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 + +cd /tmp/next-app +BUN_CRASH_WITHOUT_JIT=1 $BUN_BIN dev --port 8087 & +sleep 0.1 +curl --fail -Ss http://localhost:8087/ + +if [[ "$(curl --fail -sS http://localhost:8087/file.txt)" != "hi!" ]]; then + echo "" + echo "" + echo "" + echo "ERR: Expected 'hi!', got '$(curl --fail -sS http://localhost:8087/file.txt)'" + killall -9 $(basename $BUN_BIN) || echo "" + exit 1 +fi + +if [[ "$(curl --fail -sS http://localhost:8087/file.js)" != *"string"* ]]; then + echo "" + echo "" + echo "" + echo "ERR: Expected file to contain string got '$(curl --fail -sS http://localhost:8087/file.js)'" + killall -9 $(basename $BUN_BIN) || echo "" + exit 1 +fi + +# very simple HMR test +echo "export default 'string';" >/tmp/next-app/file2.js +sleep 0.1 + +if [[ "$(curl --fail -sS http://localhost:8087/file2.js)" != *"string"* ]]; then + echo "" + echo "" + echo "" + echo "ERR: Expected file to contain string got '$(curl --fail -sS http://localhost:8087/file2.js)'" + killall -9 $(basename $BUN_BIN) || echo "" + exit 1 +fi + +killall -9 $(basename $BUN_BIN) || echo "" diff --git a/test/apps/bun-create-react.sh b/test/apps/bun-create-react.sh new file mode 100644 index 000000000..2b986134c --- /dev/null +++ b/test/apps/bun-create-react.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +killall -9 $(basename $BUN_BIN) || echo "" + +rm -rf /tmp/react-app +mkdir -p /tmp/react-app +$BUN_BIN create react /tmp/react-app + + +if (($?)); then + echo "bun create failed" + exit 1 +fi + +cd /tmp/react-app +BUN_CRASH_WITHOUT_JIT=1 $BUN_BIN --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." +exit $? diff --git a/test/apps/bun-dev-index-html.sh b/test/apps/bun-dev-index-html.sh new file mode 100644 index 000000000..eef41f78b --- /dev/null +++ b/test/apps/bun-dev-index-html.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +set -euo pipefail + +killall -9 $(basename $BUN_BIN) || echo "" + +dir=$(mktemp -d --suffix=bun-dev-check) + +index_content="<html><body>index.html</body></html>" +bacon_content="<html><body>bacon.html</body></html>" +js_content="if(0) { var foo = 'TEST FAILED'; }" +static_content="PASS" +css_not_transpiled_content="@import url(/index.js); @import url(/i-dont-exist.css); @import url('/i-dont-exist.css'); @import url(\"/i-dont-exist.css\");" +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" + +cd $dir +$BUN_BIN --port 8087 & +sleep 0.005 + +if [[ "$(curl --fail -sS http://localhost:8087/)" != "$index_content" ]]; then + echo "ERR: Expected '$index_content', got '$(curl --fail -sS http://localhost:8087/)'" + exit 1 +fi + +if [[ "$(curl --fail -sS http://localhost:8087/index)" != "$index_content" ]]; then + echo "ERR: Expected '$index_content', got '$(curl --fail -sS http://localhost:8087/index)'" + exit 1 +fi + +if [[ "$(curl --fail -sS http://localhost:8087/static.txt)" != "PASS" ]]; then + echo "ERR: Expected static file, got '$(curl --fail -sS http://localhost:8087/static.txt)'" + exit 1 +fi + +# Check that the file is actually transpiled +if [[ "$(curl --fail -sS http://localhost:8087/index.js)" == *"TEST FAILED"* ]]; then + echo "ERR: Expected file to be transpiled, got '$(curl --fail -sS http://localhost:8087/index.js)'" + exit 1 +fi + +if [[ "$(curl --fail -sS http://localhost:8087/index.html)" != "$index_content" ]]; then + echo "ERR: Expected '$index_content', got '$(curl --fail -sS http://localhost:8087/index.html)'" + exit 1 +fi + +if [[ "$(curl --fail -sS http://localhost:8087/foo/foo)" != "$index_content" ]]; then + echo "ERR: Expected '$index_content', got '$(curl --fail -sS http://localhost:8087/index.html)'" + exit 1 +fi + +if [[ "$(curl --fail -sS http://localhost:8087/bacon)" != "$bacon_content" ]]; then + echo "ERR: Expected '$bacon_content', got '$(curl --fail -sS http://localhost:8087/bacon)'" + exit 1 +fi + +if [[ "$(curl --fail -sS http://localhost:8087/bacon.html)" != "$bacon_content" ]]; then + echo "ERR: Expected '$bacon_content', got '$(curl --fail -sS http://localhost:8087/bacon.html)'" + exit 1 +fi + +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 new file mode 100644 index 000000000..f2d76d028 --- /dev/null +++ b/test/apps/bun-dev.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +set -euo pipefail + +killall -9 $(basename $BUN_BIN) || echo "" + +dir=$(mktemp -d --suffix=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 + +echo $index_content >"$dir/public/index.html" +echo $js_content >"$dir/index.js" +echo $bacon_content >"$dir/public/bacon.html" + +cd $dir + +$BUN_BIN --port 8087 & +sleep 0.005 + +if [ "$(curl --fail -sS http://localhost:8087/)" != "$index_content" ]; then + echo "ERR: Expected '$index_content', got '$(curl --fail -sS http://localhost:8087/)'" + exit 1 +fi + +if [ "$(curl --fail -sS http://localhost:8087/index)" != "$index_content" ]; then + echo "ERR: Expected '$index_content', got '$(curl --fail -sS http://localhost:8087/index)'" + exit 1 +fi + +if [ "$(curl --fail -sS http://localhost:8087/index.html)" != "$index_content" ]; then + echo "ERR: Expected '$index_content', got '$(curl --fail -sS http://localhost:8087/index.html)'" + exit 1 +fi + +if [ "$(curl --fail -sS http://localhost:8087/foo/foo)" != "$index_content" ]; then + echo "ERR: Expected '$index_content', got '$(curl --fail -sS http://localhost:8087/index.html)'" + exit 1 +fi + +if [ "$(curl --fail -sS http://localhost:8087/bacon)" != "$bacon_content" ]; then + echo "ERR: Expected '$index_content', got '$(curl --fail -sS http://localhost:8087/bacon)'" + exit 1 +fi + +if [ "$(curl --fail -sS http://localhost:8087/bacon.html)" != "$bacon_content" ]; then + echo "ERR: Expected '$index_content', got '$(curl --fail -sS http://localhost:8087/bacon.html)'" + exit 1 +fi + +killall -9 $(basename $BUN_BIN) || echo "" +echo "β
bun dev index html check passed." diff --git a/test/apps/bun-install-lockfile-status.sh b/test/apps/bun-install-lockfile-status.sh new file mode 100644 index 000000000..b23b4fc3c --- /dev/null +++ b/test/apps/bun-install-lockfile-status.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +set -euo pipefail + +killall -9 $(basename $BUN_BIN) || echo "" + +dir=$(mktemp -d --suffix=bun-lockfile) + +cd $dir + +$BUN_BIN add react + +echo "node_modules" >.gitignore + +git init && git add . && git commit -am "Initial commit" + +$BUN_BIN install + +ORIG_LOCKFILE="$($BUN_BIN pm hash-string)" + +[[ -z $(git status --untracked-files=no --porcelain) ]] || { + echo "ERR: Expected empty git status, got '$(git status --untracked-files=no --porcelain)'" + exit 1 +} + +$BUN_BIN add react + +NEW_LOCKFILE="$($BUN_BIN pm hash-string)" + +diff <(echo "$ORIG_LOCKFILE") <(echo "$NEW_LOCKFILE") || { + echo "ERR: Expected lockfile to be unchanged, got '$NEW_LOCKFILE'" + exit 1 +} + +ORIG_HASH=$($BUN_BIN bun.lockb --hash) + +$BUN_BIN remove react +$BUN_BIN add react + +NEW_HASH=$($BUN_BIN bun.lockb --hash) + +diff <(echo "$ORIG_HASH") <(echo "$NEW_HASH") || { + echo "ERR: Expected hash to be unchanged, got '$NEW_HASH'" + exit 1 +} + +echo '{ "dependencies": { "react": "17.0.2", "react-dom": "17.0.2" } }' >package.json + +$BUN_BIN install + +echo "var {version} = JSON.parse(require(\"fs\").readFileSync('./node_modules/react-dom/package.json', 'utf8')); if (version !== '17.0.2') {throw new Error('Unexpected react-dom version');}; " >index.js +$BUN_BIN run ./index.js + +echo "var {version} = JSON.parse(require(\"fs\").readFileSync('./node_modules/react/package.json', 'utf8')); if (version !== '17.0.2') {throw new Error('Unexpected react version');}; " >index.js +$BUN_BIN run ./index.js + +# This is just making sure that the JS was executed +realpath -e node_modules/react-dom >/dev/null || { + echo "ERR: Expected react-dom to be installed" + exit 1 +} +realpath -e node_modules/react >/dev/null || { + echo "ERR: Expected react to be installed" + exit 1 +} diff --git a/test/apps/bun-install-utf8.sh b/test/apps/bun-install-utf8.sh new file mode 100644 index 000000000..66783cb50 --- /dev/null +++ b/test/apps/bun-install-utf8.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -euo pipefail + +killall -9 $(basename $BUN_BIN) || echo "" + +dir=$(mktemp -d --suffix=bun-ADD) + +cd $dir + +# https://github.com/Jarred-Sumner/bun/issues/115 +echo '{ "author": "Arnaud BarrΓ© (https://github.com/ArnaudBarre)" }' >package.json + +$BUN_BIN add react diff --git a/test/apps/bun-install.sh b/test/apps/bun-install.sh new file mode 100644 index 000000000..dd4083e33 --- /dev/null +++ b/test/apps/bun-install.sh @@ -0,0 +1,85 @@ +#!/bin/bash + +set -euo pipefail + +dir=$(mktemp -d --suffix=bun-install-test-1) + +cd $dir +${NPM_CLIENT:-$(which bun)} add react react-dom @types/react @babel/parser esbuild + +echo "console.log(typeof require(\"react\").createElement);" >index.js +chmod +x index.js + +JS_RUNTIME=${JS_RUNTIME:-"$(which bun)"} + +if [ "$JS_RUNTIME" == "node" ]; then + result="$(node ./index.js)" +fi + +if [ "$JS_RUNTIME" != "node" ]; then + result="$($JS_RUNTIME run ./index.js)" +fi + +echo "console.log(typeof require(\"react-dom\").render);" >index.js +chmod +x index.js + +JS_RUNTIME=${JS_RUNTIME:-"$(which bun)"} + +# If this fails to run, it means we didn't link @babel/parser correctly +realpath -e ./node_modules/.bin/parser + +# If this fails to run, it means we didn't link esbuild correctly +./node_modules/.bin/esbuild --version >/dev/null + +if [ "$JS_RUNTIME" == "node" ]; then + result="$(node ./index.js)" +fi + +if [ "$JS_RUNTIME" != "node" ]; then + result="$($JS_RUNTIME run ./index.js)" +fi + +if [ "$result" != "function" ]; then + echo "ERR: Expected 'function', got '$result'" + exit 1 +fi + +${NPM_CLIENT:-$(which bun)} remove react-dom + +if [ -d "node_modules/react-dom" ]; then + echo "ERR: react-dom module still exists in $dir" + exit 1 +fi + +yarn_dot_lock=$(${NPM_CLIENT:-$(which bun)} bun.lockb) + +if echo "$yarn_dot_lock" | grep -q "react-dom"; then + echo "ERR: react-dom module still exists in lockfile" + exit 1 +fi + +${NPM_CLIENT:-$(which bun)} remove @types/react + +yarn_dot_lock=$(${NPM_CLIENT:-$(which bun)} bun.lockb) + +if echo "$yarn_dot_lock" | grep -q "@types/react"; then + echo "ERR: @types/react module still exists in lockfile" + exit 1 +fi + +if echo "$yarn_dot_lock" | grep -q "@types/react"; then + 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" + exit 1 +fi + +if [ -d "bun.lockb" ]; then + echo "ERR: empty bun.lockb should be deleted" + exit 1 +fi diff --git a/test/apps/bun-run-check-package.json b/test/apps/bun-run-check-package.json new file mode 100644 index 000000000..b6eeda046 --- /dev/null +++ b/test/apps/bun-run-check-package.json @@ -0,0 +1,7 @@ +{ + "name": "check", + "scripts": { + "this-should-work": "echo \"β
bun run test passed!\"", + "argv": "node -e 'console.log(process.argv)'" + } +} diff --git a/test/apps/bun-run-check.sh b/test/apps/bun-run-check.sh new file mode 100644 index 000000000..dca1db6ae --- /dev/null +++ b/test/apps/bun-run-check.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +(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) +fn() { :; } +# The important bit: export the function +export -f fn + +rm -rf /tmp/bun-run-check +mkdir -p /tmp/bun-run-check + +cp ./bun-run-check-package.json /tmp/bun-run-check/package.json +cd /tmp/bun-run-check + +$BUN_BIN run bash -- -c "" + +if (($?)); then + echo "Bash exported functions are broken" + exit 1 +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 + +$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 + +cmp -s /tmp/bun-run-out.expected.txt /tmp/bun-run-out.txt +if (($?)); then + echo "argv failed" + exit 1 +fi + +$BUN_BIN run --silent this-should-work + +if (($?)); then + echo "this-should work failed" + exit 1 +fi + +exit 0 diff --git a/test/bun.js/atob.test.js b/test/bun.js/atob.test.js new file mode 100644 index 000000000..4945829e1 --- /dev/null +++ b/test/bun.js/atob.test.js @@ -0,0 +1,77 @@ +import { expect, it } from "bun:test"; + +function expectInvalidCharacters(val) { + try { + atob(val); + throw new Error("Expected error"); + } catch (error) { + expect(error.message).toBe("The string contains invalid characters."); + } +} + +it("atob", () => { + expect(atob("YQ==")).toBe("a"); + expect(atob("YWI=")).toBe("ab"); + expect(atob("YWJj")).toBe("abc"); + expect(atob("YWJjZA==")).toBe("abcd"); + expect(atob("YWJjZGU=")).toBe("abcde"); + expect(atob("YWJjZGVm")).toBe("abcdef"); + expect(atob("zzzz")).toBe("Γ<Γ³"); + expect(atob("")).toBe(""); + expect(atob(null)).toBe("ΒΓ©e"); + expect(atob("6ek=")).toBe("éé"); + expect(atob("6ek")).toBe("éé"); + expect(atob("gIE=")).toBe("ΒΒ"); + expect(atob("zz")).toBe("Γ"); + expect(atob("zzz")).toBe("Γ<"); + expect(atob("zzz=")).toBe("Γ<"); + expect(atob(" YQ==")).toBe("a"); + expect(atob("YQ==\u000a")).toBe("a"); + + try { + atob(); + } catch (error) { + expect(error.name).toBe("TypeError"); + } + expectInvalidCharacters(undefined); + expectInvalidCharacters(" abcd==="); + expectInvalidCharacters("abcd=== "); + expectInvalidCharacters("abcd ==="); + expectInvalidCharacters("ΡΠ΅ΡΡ"); + expectInvalidCharacters("z"); + expectInvalidCharacters("zzz=="); + expectInvalidCharacters("zzz==="); + expectInvalidCharacters("zzz===="); + expectInvalidCharacters("zzz====="); + expectInvalidCharacters("zzzzz"); + expectInvalidCharacters("z=zz"); + expectInvalidCharacters("="); + expectInvalidCharacters("=="); + expectInvalidCharacters("==="); + expectInvalidCharacters("===="); + expectInvalidCharacters("====="); +}); + +it("btoa", () => { + expect(btoa("a")).toBe("YQ=="); + expect(btoa("ab")).toBe("YWI="); + expect(btoa("abc")).toBe("YWJj"); + expect(btoa("abcd")).toBe("YWJjZA=="); + expect(btoa("abcde")).toBe("YWJjZGU="); + expect(btoa("abcdef")).toBe("YWJjZGVm"); + expect(typeof btoa).toBe("function"); + try { + btoa(); + throw new Error("Expected error"); + } catch (error) { + expect(error.name).toBe("TypeError"); + } + var window = "[object Window]"; + expect(btoa("")).toBe(""); + expect(btoa(null)).toBe("bnVsbA=="); + expect(btoa(undefined)).toBe("dW5kZWZpbmVk"); + expect(btoa(window)).toBe("W29iamVjdCBXaW5kb3dd"); + expect(btoa("éé")).toBe("6ek="); + expect(btoa("\u0080\u0081")).toBe("gIE="); + expect(btoa(Bun)).toBe(btoa("[object Bun]")); +}); diff --git a/test/bun.js/baz.js b/test/bun.js/baz.js new file mode 100644 index 000000000..5837bb3bb --- /dev/null +++ b/test/bun.js/baz.js @@ -0,0 +1,2 @@ +// this file is used in resolve.test.js +export default {}; diff --git a/test/bun.js/buffer.test.js b/test/bun.js/buffer.test.js new file mode 100644 index 000000000..6e9a3c6b4 --- /dev/null +++ b/test/bun.js/buffer.test.js @@ -0,0 +1,304 @@ +// import { describe, it, expect, beforeEach, afterEach } from "bun:test"; +// import { gc } from "./gc"; + +// beforeEach(() => gc()); +// afterEach(() => gc()); + +// it("buffer", () => { +// var buf = new Buffer(20); +// gc(); +// // if this fails or infinitely loops, it means there is a memory issue with the JSC::Structure object +// expect(Object.keys(buf).length > 0).toBe(true); +// gc(); +// expect(buf.write("hello world ")).toBe(12); +// expect(buf.write("hello world ", "utf8")).toBe(12); + +// gc(); +// expect(buf.toString("utf8", 0, "hello world ".length)).toBe("hello world "); +// gc(); +// expect(buf.toString("base64url", 0, "hello world ".length)).toBe( +// btoa("hello world ") +// ); +// gc(); +// expect(buf instanceof Uint8Array).toBe(true); +// gc(); +// expect(buf instanceof Buffer).toBe(true); +// gc(); +// expect(buf.slice() instanceof Uint8Array).toBe(true); +// gc(); +// expect(buf.slice(0, 1) instanceof Buffer).toBe(true); +// gc(); +// expect(buf.slice(0, 1) instanceof Uint8Array).toBe(true); +// gc(); +// expect(buf.slice(0, 1) instanceof Buffer).toBe(true); +// gc(); +// }); + +// it("Buffer", () => { +// var inputs = [ +// "hello world", +// "hello world".repeat(100), +// `π Get Emoji β All Emojis to βοΈ Copy and π Paste π`, +// ]; +// var good = inputs.map((a) => new TextEncoder().encode(a)); +// for (let i = 0; i < inputs.length; i++) { +// var input = inputs[i]; +// expect(new Buffer(input).toString("utf8")).toBe(inputs[i]); +// gc(); +// expect(Array.from(new Buffer(input)).join(",")).toBe(good[i].join(",")); +// gc(); +// expect(Buffer.byteLength(input)).toBe(good[i].length); +// gc(); +// expect(Buffer.from(input).byteLength).toBe(Buffer.byteLength(input)); +// } +// }); + +// it("Buffer.byteLength", () => { +// expect(Buffer.byteLength("ππππππ
ππ€£βΊοΈπππ")).toBe( +// new TextEncoder().encode("ππππππ
ππ€£βΊοΈπππ").byteLength +// ); +// }); + +// it("Buffer.isBuffer", () => { +// expect(Buffer.isBuffer(new Buffer(1))).toBe(true); +// gc(); +// expect(Buffer.isBuffer(new Buffer(0))).toBe(true); +// gc(); +// expect(Buffer.isBuffer(new Uint8Array(0))).toBe(false); +// gc(); +// expect(Buffer.isBuffer(new Uint8Array(1))).toBe(false); +// gc(); +// var a = new Uint8Array(1); +// gc(); +// expect(Buffer.isBuffer(a)).toBe(false); +// gc(); +// Buffer.toBuffer(a); +// gc(); +// expect(Buffer.isBuffer(a)).toBe(true); +// gc(); +// }); + +// it("Buffer.toBuffer throws", () => { +// const checks = [ +// [], +// {}, +// "foo", +// new Uint16Array(), +// new DataView(new Uint8Array(14).buffer), +// ]; +// for (let i = 0; i < checks.length; i++) { +// try { +// Buffer.toBuffer(checks[i]); +// expect(false).toBe(true); +// } catch (exception) { +// expect(exception.message).toBe("Expected Uint8Array"); +// } +// } +// expect(true).toBe(true); +// }); + +// it("Buffer.toBuffer works", () => { +// var array = new Uint8Array(20); +// expect(array instanceof Buffer).toBe(false); +// var buf = Buffer.toBuffer(array); +// expect(array instanceof Buffer).toBe(true); +// // if this fails or infinitely loops, it means there is a memory issue with the JSC::Structure object +// expect(Object.keys(buf).length > 0).toBe(true); + +// expect(buf.write("hello world ")).toBe(12); +// gc(); +// expect(buf.toString("utf8", 0, "hello world ".length)).toBe("hello world "); +// gc(); +// expect(buf.toString("base64url", 0, "hello world ".length)).toBe( +// btoa("hello world ") +// ); +// gc(); + +// expect(buf instanceof Uint8Array).toBe(true); +// expect(buf instanceof Buffer).toBe(true); +// expect(buf.slice() instanceof Uint8Array).toBe(true); +// expect(buf.slice(0, 1) instanceof Buffer).toBe(true); +// expect(buf.slice(0, 1) instanceof Uint8Array).toBe(true); +// expect(buf.slice(0, 1) instanceof Buffer).toBe(true); +// expect(new Buffer(buf) instanceof Buffer).toBe(true); +// expect(new Buffer(buf.buffer) instanceof Buffer).toBe(true); +// }); + +// it("writeInt", () => { +// var buf = new Buffer(1024); +// var data = new DataView(buf.buffer); +// buf.writeInt32BE(100); +// expect(data.getInt32(0, false)).toBe(100); +// buf.writeInt32BE(100); +// expect(data.getInt32(0, false)).toBe(100); +// var childBuf = buf.subarray(0, 4); +// expect(data.getInt32(0, false)).toBe(100); +// expect(childBuf.readInt32BE(0, false)).toBe(100); +// }); + +// it("Buffer.from", () => { +// expect(Buffer.from("hello world").toString("utf8")).toBe("hello world"); +// expect(Buffer.from("hello world", "ascii").toString("utf8")).toBe( +// "hello world" +// ); +// expect(Buffer.from("hello world", "latin1").toString("utf8")).toBe( +// "hello world" +// ); +// gc(); +// expect(Buffer.from([254]).join(",")).toBe("254"); +// expect(Buffer.from(123).join(",")).toBe(Uint8Array.from(123).join(",")); +// expect(Buffer.from({ length: 124 }).join(",")).toBe( +// Uint8Array.from({ length: 124 }).join(",") +// ); + +// expect(Buffer.from(new ArrayBuffer(1024), 0, 512).join(",")).toBe( +// new Uint8Array(512).join(",") +// ); + +// expect(Buffer.from(new Buffer(new ArrayBuffer(1024), 0, 512)).join(",")).toBe( +// new Uint8Array(512).join(",") +// ); +// gc(); +// }); + +// it("Buffer.equals", () => { +// var a = new Uint8Array(10); +// a[2] = 1; +// var b = new Uint8Array(10); +// b[2] = 1; +// Buffer.toBuffer(a); +// Buffer.toBuffer(b); +// expect(a.equals(b)).toBe(true); +// b[2] = 0; +// expect(a.equals(b)).toBe(false); +// }); + +// it("Buffer.compare", () => { +// var a = new Uint8Array(10); +// a[2] = 1; +// var b = new Uint8Array(10); +// b[2] = 1; +// Buffer.toBuffer(a); +// Buffer.toBuffer(b); +// expect(a.compare(b)).toBe(0); +// b[2] = 0; +// expect(a.compare(b)).toBe(1); +// expect(b.compare(a)).toBe(-1); +// }); + +// it("Buffer.copy", () => { +// var array1 = new Uint8Array(128); +// array1.fill(100); +// Buffer.toBuffer(array1); +// var array2 = new Uint8Array(128); +// array2.fill(200); +// Buffer.toBuffer(array2); +// var array3 = new Uint8Array(128); +// Buffer.toBuffer(array3); +// gc(); +// expect(array1.copy(array2)).toBe(128); +// expect(array1.join("")).toBe(array2.join("")); +// }); + +// it("Buffer.concat", () => { +// var array1 = new Uint8Array(128); +// array1.fill(100); +// var array2 = new Uint8Array(128); +// array2.fill(200); +// var array3 = new Uint8Array(128); +// array3.fill(300); +// gc(); +// expect(Buffer.concat([array1, array2, array3]).join("")).toBe( +// array1.join("") + array2.join("") + array3.join("") +// ); +// expect(Buffer.concat([array1, array2, array3], 222).length).toBe(222); +// expect( +// Buffer.concat([array1, array2, array3], 222).subarray(0, 128).join("") +// ).toBe("100".repeat(128)); +// expect( +// Buffer.concat([array1, array2, array3], 222).subarray(129, 222).join("") +// ).toBe("200".repeat(222 - 129)); +// }); + +// it("read", () => { +// var buf = new Buffer(1024); +// var data = new DataView(buf.buffer); +// function reset() { +// new Uint8Array(buf.buffer).fill(0); +// } +// data.setBigInt64(0, BigInt(1000), false); +// expect(buf.readBigInt64BE(0)).toBe(BigInt(1000)); +// reset(); + +// data.setBigInt64(0, BigInt(1000), false); +// expect(buf.readBigInt64LE(0)).toBe(BigInt(1000)); +// reset(); + +// data.setBigUint64(0, BigInt(1000), false); +// expect(buf.readBigUInt64BE(0)).toBe(BigInt(1000)); +// reset(); + +// data.setBigUint64(0, BigInt(1000), false); +// expect(buf.readBigUInt64LE(0)).toBe(BigInt(1000)); +// reset(); + +// data.setFloat64(0, 1000, false); +// expect(buf.readDoubleBE(0)).toBe(1000); +// reset(); + +// data.setFloat64(0, 1000, true); +// expect(buf.readDoubleLE(0)).toBe(1000); +// reset(); + +// data.setFloat32(0, 1000, false); +// expect(buf.readFloatBE(0)).toBe(1000); +// reset(); + +// data.setFloat32(0, 1000, true); +// expect(buf.readFloatLE(0)).toBe(1000); +// reset(); + +// data.setInt16(0, 1000, false); +// expect(buf.readInt16BE(0)).toBe(1000); +// reset(); + +// data.setInt16(0, 1000, true); +// expect(buf.readInt16LE(0)).toBe(1000); +// reset(); + +// data.setInt32(0, 1000, false); +// expect(buf.readInt32BE(0)).toBe(1000); +// reset(); + +// data.setInt32(0, 1000, true); +// expect(buf.readInt32LE(0)).toBe(1000); +// reset(); + +// data.setInt8(0, 100, false); +// expect(buf.readInt8(0)).toBe(100); +// reset(); + +// data.setUint16(0, 1000, false); +// expect(buf.readUInt16BE(0)).toBe(1000); +// reset(); + +// data.setUint16(0, 1000, true); +// expect(buf.readUInt16LE(0)).toBe(1000); +// reset(); + +// data.setUint32(0, 1000, false); +// expect(buf.readUInt32BE(0)).toBe(1000); +// reset(); + +// data.setUint32(0, 1000, true); +// expect(buf.readUInt32LE(0)).toBe(1000); +// reset(); + +// data.setUint8(0, 255, false); +// expect(buf.readUInt8(0)).toBe(255); +// reset(); + +// data.setUint8(0, 255, false); +// expect(buf.readUInt8(0)).toBe(255); +// reset(); +// }); diff --git a/test/bun.js/bun-jsc.test.js b/test/bun.js/bun-jsc.test.js new file mode 100644 index 000000000..8ee0decf2 --- /dev/null +++ b/test/bun.js/bun-jsc.test.js @@ -0,0 +1,98 @@ +import { describe, expect, it } from "bun:test"; +import { + describe as jscDescribe, + describeArray, + gcAndSweep, + fullGC, + edenGC, + heapSize, + heapStats, + memoryUsage, + getRandomSeed, + setRandomSeed, + isRope, + callerSourceOrigin, + noFTL, + noOSRExitFuzzing, + optimizeNextInvocation, + numberOfDFGCompiles, + releaseWeakRefs, + totalCompileTime, + reoptimizationRetryCount, + drainMicrotasks, + startRemoteDebugger, +} from "bun:jsc"; + +describe("bun:jsc", () => { + function count() { + var j = 0; + for (var i = 0; i < 999999; i++) { + j += i + 2; + } + + return j; + } + + it("describe", () => { + jscDescribe([]); + }); + it("describeArray", () => { + describeArray([1, 2, 3]); + }); + it("gcAndSweep", () => { + gcAndSweep(); + }); + it("fullGC", () => { + fullGC(); + }); + it("edenGC", () => { + edenGC(); + }); + it("heapSize", () => { + expect(heapSize() > 0).toBe(true); + }); + it("heapStats", () => { + heapStats(); + }); + it("memoryUsage", () => { + memoryUsage(); + }); + it("getRandomSeed", () => { + getRandomSeed(2); + }); + it("setRandomSeed", () => { + setRandomSeed(2); + }); + it("isRope", () => { + expect(isRope("a" + 123 + "b")).toBe(true); + expect(isRope("abcdefgh")).toBe(false); + }); + it("callerSourceOrigin", () => { + expect(callerSourceOrigin()).toBe(import.meta.url); + }); + it("noFTL", () => {}); + it("noOSRExitFuzzing", () => {}); + it("optimizeNextInvocation", () => { + count(); + optimizeNextInvocation(count); + count(); + }); + it("numberOfDFGCompiles", () => { + expect(numberOfDFGCompiles(count) > 0).toBe(true); + }); + it("releaseWeakRefs", () => { + releaseWeakRefs(); + }); + it("totalCompileTime", () => { + totalCompileTime(count); + }); + it("reoptimizationRetryCount", () => { + reoptimizationRetryCount(count); + }); + it("drainMicrotasks", () => { + drainMicrotasks(); + }); + it("startRemoteDebugger", () => { + startRemoteDebugger(""); + }); +}); diff --git a/test/bun.js/bun.lockb b/test/bun.js/bun.lockb Binary files differnew file mode 100755 index 000000000..cff7a8ddc --- /dev/null +++ b/test/bun.js/bun.lockb diff --git a/test/bun.js/bundled/always-bundled-module/always-bundled-module b/test/bun.js/bundled/always-bundled-module/always-bundled-module new file mode 120000 index 000000000..f9a91ac4d --- /dev/null +++ b/test/bun.js/bundled/always-bundled-module/always-bundled-module @@ -0,0 +1 @@ +node_modules/always-bundled-module
\ No newline at end of file diff --git a/test/bun.js/bundled/always-bundled-module/cjs.js b/test/bun.js/bundled/always-bundled-module/cjs.js new file mode 100644 index 000000000..087697589 --- /dev/null +++ b/test/bun.js/bundled/always-bundled-module/cjs.js @@ -0,0 +1,10 @@ +module.exports = { + default: 0xdeadbeef, + default() { + return "ok"; + }, + default: true, + ok() { + return true; + }, +}; diff --git a/test/bun.js/bundled/always-bundled-module/esm.js b/test/bun.js/bundled/always-bundled-module/esm.js new file mode 100644 index 000000000..28e702881 --- /dev/null +++ b/test/bun.js/bundled/always-bundled-module/esm.js @@ -0,0 +1,5 @@ +const __esModule = true; + +export const foo = () => __esModule; + +export { __esModule, foo as default }; diff --git a/test/bun.js/bundled/always-bundled-module/package.json b/test/bun.js/bundled/always-bundled-module/package.json new file mode 100644 index 000000000..5029c1695 --- /dev/null +++ b/test/bun.js/bundled/always-bundled-module/package.json @@ -0,0 +1,4 @@ +{ + "name": "always-bundled-module", + "version": "1.0.0" +} diff --git a/test/bun.js/bundled/entrypoint.ts b/test/bun.js/bundled/entrypoint.ts new file mode 100644 index 000000000..b9a17b538 --- /dev/null +++ b/test/bun.js/bundled/entrypoint.ts @@ -0,0 +1,13 @@ +import "i-am-bundled/cjs"; +import "i-am-bundled/esm"; +import "always-bundled-module/esm"; +import "always-bundled-module/cjs"; +import { foo } from "i-am-bundled/esm"; +import { foo as foo2 } from "always-bundled-module/esm"; +import cJS from "always-bundled-module/cjs"; + +foo(); +foo2(); +cJS(); + +export default cJS(); diff --git a/test/bun.js/bundled/package.json b/test/bun.js/bundled/package.json new file mode 100644 index 000000000..cce72af9c --- /dev/null +++ b/test/bun.js/bundled/package.json @@ -0,0 +1,12 @@ +{ + "name": "to-bundle", + "scripts": { + "prebundle": "rm -rf node_modules; cp -r to_bundle_node_modules node_modules; ln -s always-bundled-module node_modules/always-bundled-module", + "bundle": "${BUN_BIN:-$(which bun)} bun ./entrypoint.ts" + }, + "bun": { + "alwaysBundle": [ + "always-bundled-module" + ] + } +} diff --git a/test/bun.js/bundled/to_bundle_node_modules/i-am-bundled/cjs.js b/test/bun.js/bundled/to_bundle_node_modules/i-am-bundled/cjs.js new file mode 100644 index 000000000..087697589 --- /dev/null +++ b/test/bun.js/bundled/to_bundle_node_modules/i-am-bundled/cjs.js @@ -0,0 +1,10 @@ +module.exports = { + default: 0xdeadbeef, + default() { + return "ok"; + }, + default: true, + ok() { + return true; + }, +}; diff --git a/test/bun.js/bundled/to_bundle_node_modules/i-am-bundled/esm.js b/test/bun.js/bundled/to_bundle_node_modules/i-am-bundled/esm.js new file mode 100644 index 000000000..28e702881 --- /dev/null +++ b/test/bun.js/bundled/to_bundle_node_modules/i-am-bundled/esm.js @@ -0,0 +1,5 @@ +const __esModule = true; + +export const foo = () => __esModule; + +export { __esModule, foo as default }; diff --git a/test/bun.js/bundled/to_bundle_node_modules/i-am-bundled/package.json b/test/bun.js/bundled/to_bundle_node_modules/i-am-bundled/package.json new file mode 100644 index 000000000..661a80b2d --- /dev/null +++ b/test/bun.js/bundled/to_bundle_node_modules/i-am-bundled/package.json @@ -0,0 +1,4 @@ +{ + "name": "i-am-bundled", + "version": "1.0.0" +} diff --git a/test/bun.js/bundled/tsconfig.json b/test/bun.js/bundled/tsconfig.json new file mode 100644 index 000000000..358cb5526 --- /dev/null +++ b/test/bun.js/bundled/tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "paths": {}, + "baseUrl": "." + } +} diff --git a/test/bun.js/concat.test.js b/test/bun.js/concat.test.js new file mode 100644 index 000000000..a965fdb94 --- /dev/null +++ b/test/bun.js/concat.test.js @@ -0,0 +1,46 @@ +import { describe, it, expect } from "bun:test"; +import { gcTick } from "./gc"; +import { concatArrayBuffers } from "bun"; + +describe("concat", () => { + function polyfill(chunks) { + var size = 0; + for (const chunk of chunks) { + size += chunk.byteLength; + } + var buffer = new ArrayBuffer(size); + var view = new Uint8Array(buffer); + var offset = 0; + for (const chunk of chunks) { + view.set(chunk, offset); + offset += chunk.byteLength; + } + return buffer; + } + + function concatToString(chunks) { + return Array.from(new Uint8Array(concatArrayBuffers(chunks))).join(""); + } + + function polyfillToString(chunks) { + return Array.from(new Uint8Array(polyfill(chunks))).join(""); + } + + it("works with one element", () => { + expect(concatToString([new Uint8Array([123])])).toBe( + polyfillToString([new Uint8Array([123])]) + ); + }); + + it("works with two elements", () => { + expect( + concatToString([Uint8Array.from([123]), Uint8Array.from([456])]) + ).toBe(polyfillToString([Uint8Array.from([123]), Uint8Array.from([456])])); + }); + + it("works with mix of ArrayBuffer and TypedArray elements", () => { + expect( + concatToString([Uint8Array.from([123]).buffer, Uint8Array.from([456])]) + ).toBe(polyfillToString([Uint8Array.from([123]), Uint8Array.from([456])])); + }); +}); diff --git a/test/bun.js/console-log.js b/test/bun.js/console-log.js new file mode 100644 index 000000000..e8aa200ac --- /dev/null +++ b/test/bun.js/console-log.js @@ -0,0 +1,58 @@ +console.log("Hello World!"); +console.log(123); +console.log(-123); +console.log(123.567); +console.log(-123.567); +console.log(true); +console.log(false); +console.log(null); +console.log(undefined); +console.log(Symbol("Symbol Description")); +console.log(new Date(2021, 12, 30, 666, 777, 888, 999)); +console.log([123, 456, 789]); +console.log({ a: 123, b: 456, c: 789 }); +console.log({ + a: { + b: { + c: 123, + }, + bacon: true, + }, +}); + +console.log(new Promise(() => {})); + +class Foo {} + +console.log(() => {}); +console.log(Foo); +console.log(new Foo()); +console.log(function foooo() {}); + +console.log(/FooRegex/); + +console.error("uh oh"); +console.time("Check"); + +console.log( + "Is it a bug or a feature that formatting numbers like %d is colored", + 123 +); +console.log(globalThis); + +console.log( + "String %s should be 2nd word, 456 == %s and percent s %s == %s", + "123", + "456", + "%s", + "What", + "okay" +); + +const infinteLoop = { + foo: {}, + bar: {}, +}; + +infinteLoop.bar = infinteLoop; +console.log(infinteLoop, "am"); diff --git a/test/bun.js/crypto.test.js b/test/bun.js/crypto.test.js new file mode 100644 index 000000000..c489e11c1 --- /dev/null +++ b/test/bun.js/crypto.test.js @@ -0,0 +1,70 @@ +import { + sha, + MD5, + MD4, + SHA1, + SHA256, + SHA384, + SHA512, + SHA512_256, + gc, +} from "bun"; +import { it, expect, describe } from "bun:test"; +import { readFileSync } from "fs"; + +describe("crypto", () => { + for (let Hash of [MD5, MD4, SHA1, SHA256, SHA384, SHA512, SHA512_256]) { + for (let [input, label] of [ + ["hello world", '"hello world"'], + ["hello world".repeat(20).slice(), '"hello world" x 20'], + ["", "empty string"], + ["a", '"a"'], + ]) { + describe(label, () => { + gc(true); + + it(`${Hash.name} base64`, () => { + gc(true); + const result = new Hash(); + result.update(input); + expect(typeof result.digest("base64")).toBe("string"); + gc(true); + }); + + it(`${Hash.name} hash base64`, () => { + Hash.hash(input, "base64"); + gc(true); + }); + + it(`${Hash.name} hex`, () => { + const result = new Hash(); + result.update(input); + expect(typeof result.digest("hex")).toBe("string"); + gc(true); + }); + + it(`${Hash.name} hash hex`, () => { + expect(typeof Hash.hash(input, "hex")).toBe("string"); + gc(true); + }); + + it(`${Hash.name} buffer`, () => { + var buf = new Uint8Array(256); + const result = new Hash(); + + result.update(input); + expect(result.digest(buf)).toBe(buf); + expect(buf[0] != 0).toBe(true); + gc(true); + }); + + it(`${Hash.name} buffer`, () => { + var buf = new Uint8Array(256); + + expect(Hash.hash(input, buf) instanceof Uint8Array).toBe(true); + gc(true); + }); + }); + } + } +}); diff --git a/test/bun.js/dirname.test.js b/test/bun.js/dirname.test.js new file mode 100644 index 000000000..98292dc49 --- /dev/null +++ b/test/bun.js/dirname.test.js @@ -0,0 +1,9 @@ +import { expect, it } from "bun:test"; + +it("__dirname should work", () => { + expect(import.meta.dir).toBe(__dirname); +}); + +it("__filename should work", () => { + expect(import.meta.path).toBe(__filename); +}); diff --git a/test/bun.js/escapeHTML.test.js b/test/bun.js/escapeHTML.test.js new file mode 100644 index 000000000..ecfcc5e7c --- /dev/null +++ b/test/bun.js/escapeHTML.test.js @@ -0,0 +1,105 @@ +import { describe, it, expect } from "bun:test"; +import { gcTick } from "./gc"; +import { escapeHTML } from "bun"; + +describe("escapeHTML", () => { + // The matrix of cases we need to test for: + // 1. Works with short strings + // 2. Works with long strings + // 3. Works with latin1 strings + // 4. Works with utf16 strings + // 5. Works when the text to escape is somewhere in the middle + // 6. Works when the text to escape is in the beginning + // 7. Works when the text to escape is in the end + // 8. Returns the same string when there's no need to escape + it("works", () => { + expect(escapeHTML("absolutely nothing to do here")).toBe( + "absolutely nothing to do here" + ); + expect(escapeHTML("<script>alert(1)</script>")).toBe( + "<script>alert(1)</script>" + ); + expect(escapeHTML("<")).toBe("<"); + expect(escapeHTML(">")).toBe(">"); + expect(escapeHTML("&")).toBe("&"); + expect(escapeHTML("'")).toBe("'"); + expect(escapeHTML('"')).toBe("""); + expect(escapeHTML("\n")).toBe("\n"); + expect(escapeHTML("\r")).toBe("\r"); + expect(escapeHTML("\t")).toBe("\t"); + expect(escapeHTML("\f")).toBe("\f"); + expect(escapeHTML("\v")).toBe("\v"); + expect(escapeHTML("\b")).toBe("\b"); + expect(escapeHTML("\u00A0")).toBe("\u00A0"); + expect(escapeHTML("<script>ab")).toBe("<script>ab"); + expect(escapeHTML("<script>")).toBe("<script>"); + expect(escapeHTML("<script><script>")).toBe("<script><script>"); + + expect(escapeHTML("lalala" + "<script>alert(1)</script>" + "lalala")).toBe( + "lalala<script>alert(1)</script>lalala" + ); + + expect(escapeHTML("<script>alert(1)</script>" + "lalala")).toBe( + "<script>alert(1)</script>lalala" + ); + expect(escapeHTML("lalala" + "<script>alert(1)</script>")).toBe( + "lalala" + "<script>alert(1)</script>" + ); + + expect(escapeHTML("What does π mean?")).toBe("What does π mean?"); + const output = escapeHTML("<What does π"); + expect(output).toBe("<What does π"); + expect(escapeHTML("<div>What does π mean in text?")).toBe( + "<div>What does π mean in text?" + ); + + expect( + escapeHTML( + ("lalala" + "<script>alert(1)</script>" + "lalala").repeat(900) + ) + ).toBe("lalala<script>alert(1)</script>lalala".repeat(900)); + expect( + escapeHTML(("<script>alert(1)</script>" + "lalala").repeat(900)) + ).toBe("<script>alert(1)</script>lalala".repeat(900)); + expect( + escapeHTML(("lalala" + "<script>alert(1)</script>").repeat(900)) + ).toBe(("lalala" + "<script>alert(1)</script>").repeat(900)); + + // the positions of the unicode codepoint are important + // our simd code for U16 is at 8 bytes, so we need to especially check the boundaries + expect( + escapeHTML("πlalala" + "<script>alert(1)</script>" + "lalala") + ).toBe("πlalala<script>alert(1)</script>lalala"); + expect(escapeHTML("<script>πalert(1)</script>" + "lalala")).toBe( + "<script>πalert(1)</script>lalala" + ); + expect(escapeHTML("<script>alert(1)π</script>" + "lalala")).toBe( + "<script>alert(1)π</script>lalala" + ); + expect(escapeHTML("<script>alert(1)</script>" + "πlalala")).toBe( + "<script>alert(1)</script>πlalala" + ); + expect(escapeHTML("<script>alert(1)</script>" + "lalπala")).toBe( + "<script>alert(1)</script>lalπala" + ); + expect( + escapeHTML("<script>alert(1)</script>" + "lalπala".repeat(10)) + ).toBe("<script>alert(1)</script>" + "lalπala".repeat(10)); + + for (let i = 1; i < 10; i++) + expect(escapeHTML("<script>alert(1)</script>" + "laπ".repeat(i))).toBe( + "<script>alert(1)</script>" + "laπ".repeat(i) + ); + + expect(escapeHTML("laπ" + "<script>alert(1)</script>")).toBe( + "laπ" + "<script>alert(1)</script>" + ); + expect( + escapeHTML(("lalala" + "<script>alert(1)</script>π").repeat(1)) + ).toBe(("lalala" + "<script>alert(1)</script>π").repeat(1)); + + expect(escapeHTML("π".repeat(100))).toBe("π".repeat(100)); + expect(escapeHTML("π<".repeat(100))).toBe("π<".repeat(100)); + expect(escapeHTML("<π>".repeat(100))).toBe("<π>".repeat(100)); + }); +}); diff --git a/test/bun.js/esm/first.mjs b/test/bun.js/esm/first.mjs new file mode 100644 index 000000000..17021c623 --- /dev/null +++ b/test/bun.js/esm/first.mjs @@ -0,0 +1,8 @@ +import { end, start } from "./startEnd.mjs"; + +start("First"); + +import "./second.mjs"; +import "./third.mjs"; + +end("First"); diff --git a/test/bun.js/esm/second-child.mjs b/test/bun.js/esm/second-child.mjs new file mode 100644 index 000000000..5fb06ed45 --- /dev/null +++ b/test/bun.js/esm/second-child.mjs @@ -0,0 +1,5 @@ +import { start, end } from "./startEnd.mjs"; + +start("Second (nested import)"); + +end("Second (nested import)"); diff --git a/test/bun.js/esm/second.mjs b/test/bun.js/esm/second.mjs new file mode 100644 index 000000000..888eb11b9 --- /dev/null +++ b/test/bun.js/esm/second.mjs @@ -0,0 +1,7 @@ +import { start, end } from "./startEnd.mjs"; + +start("Second"); + +import "./second-child.mjs"; + +end("Second"); diff --git a/test/bun.js/esm/startEnd.mjs b/test/bun.js/esm/startEnd.mjs new file mode 100644 index 000000000..8b5549802 --- /dev/null +++ b/test/bun.js/esm/startEnd.mjs @@ -0,0 +1,6 @@ +export function start(name) { + console.log(`[start] ${name}`); +} +export function end(name) { + console.log(`[end] ${name}`); +} diff --git a/test/bun.js/esm/third.mjs b/test/bun.js/esm/third.mjs new file mode 100644 index 000000000..f5ba5cc84 --- /dev/null +++ b/test/bun.js/esm/third.mjs @@ -0,0 +1,4 @@ +import { end, start } from "./startEnd.mjs"; + +start("Third"); +end("Third"); diff --git a/test/bun.js/exit.js b/test/bun.js/exit.js new file mode 100644 index 000000000..fb28b1fb4 --- /dev/null +++ b/test/bun.js/exit.js @@ -0,0 +1,2 @@ +process.exit(0); +throw new Error("Well that didn't work"); diff --git a/test/bun.js/fetch.js.txt b/test/bun.js/fetch.js.txt new file mode 100644 index 000000000..5a9b52fcf --- /dev/null +++ b/test/bun.js/fetch.js.txt @@ -0,0 +1,46 @@ +<!doctype html> +<html> +<head> + <title>Example Domain</title> + + <meta charset="utf-8" /> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <style type="text/css"> + body { + background-color: #f0f0f2; + margin: 0; + padding: 0; + font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; + + } + div { + width: 600px; + margin: 5em auto; + padding: 2em; + background-color: #fdfdff; + border-radius: 0.5em; + box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02); + } + a:link, a:visited { + color: #38488f; + text-decoration: none; + } + @media (max-width: 700px) { + div { + margin: 0 auto; + width: auto; + } + } + </style> +</head> + +<body> +<div> + <h1>Example Domain</h1> + <p>This domain is for use in illustrative examples in documents. You may use this + domain in literature without prior coordination or asking for permission.</p> + <p><a href="https://www.iana.org/domains/example">More information...</a></p> +</div> +</body> +</html> diff --git a/test/bun.js/fetch.test.js b/test/bun.js/fetch.test.js new file mode 100644 index 000000000..9b6093afd --- /dev/null +++ b/test/bun.js/fetch.test.js @@ -0,0 +1,440 @@ +import { it, describe, expect } from "bun:test"; +import fs from "fs"; +import { gc } from "./gc"; + +describe("fetch", () => { + const urls = ["https://example.com", "http://example.com"]; + for (let url of urls) { + gc(); + it(url, async () => { + gc(); + const response = await fetch(url); + gc(); + const text = await response.text(); + gc(); + expect( + fs.readFileSync( + import.meta.path.substring(0, import.meta.path.lastIndexOf("/")) + + "/fetch.js.txt", + "utf8" + ) + ).toBe(text); + }); + } +}); + +function testBlobInterface(blobbyConstructor, hasBlobFn) { + for (let withGC of [false, true]) { + for (let jsonObject of [ + { hello: true }, + { + hello: + "π π π π π π
π π€£ π₯² βΊοΈ π π π π π π π π₯° π π π π π π π π π€ͺ π€¨ π§ π€ π π₯Έ π€© π₯³", + }, + ]) { + it(`${jsonObject.hello === true ? "latin1" : "utf16"} json${ + withGC ? " (with gc) " : "" + }`, async () => { + if (withGC) gc(); + var response = blobbyConstructor(JSON.stringify(jsonObject)); + if (withGC) gc(); + expect(JSON.stringify(await response.json())).toBe( + JSON.stringify(jsonObject) + ); + if (withGC) gc(); + }); + + it(`${ + jsonObject.hello === true ? "latin1" : "utf16" + } arrayBuffer -> json${withGC ? " (with gc) " : ""}`, async () => { + if (withGC) gc(); + var response = blobbyConstructor( + new TextEncoder().encode(JSON.stringify(jsonObject)) + ); + if (withGC) gc(); + expect(JSON.stringify(await response.json())).toBe( + JSON.stringify(jsonObject) + ); + if (withGC) gc(); + }); + + it(`${jsonObject.hello === true ? "latin1" : "utf16"} text${ + withGC ? " (with gc) " : "" + }`, async () => { + if (withGC) gc(); + var response = blobbyConstructor(JSON.stringify(jsonObject)); + if (withGC) gc(); + expect(await response.text()).toBe(JSON.stringify(jsonObject)); + if (withGC) gc(); + }); + + it(`${ + jsonObject.hello === true ? "latin1" : "utf16" + } arrayBuffer -> text${withGC ? " (with gc) " : ""}`, async () => { + if (withGC) gc(); + var response = blobbyConstructor( + new TextEncoder().encode(JSON.stringify(jsonObject)) + ); + if (withGC) gc(); + expect(await response.text()).toBe(JSON.stringify(jsonObject)); + if (withGC) gc(); + }); + + it(`${jsonObject.hello === true ? "latin1" : "utf16"} arrayBuffer${ + withGC ? " (with gc) " : "" + }`, async () => { + if (withGC) gc(); + + var response = blobbyConstructor(JSON.stringify(jsonObject)); + if (withGC) gc(); + + const bytes = new TextEncoder().encode(JSON.stringify(jsonObject)); + if (withGC) gc(); + + const compare = new Uint8Array(await response.arrayBuffer()); + if (withGC) gc(); + + for (let i = 0; i < compare.length; i++) { + if (withGC) gc(); + + expect(compare[i]).toBe(bytes[i]); + if (withGC) gc(); + } + if (withGC) gc(); + }); + + it(`${ + jsonObject.hello === true ? "latin1" : "utf16" + } arrayBuffer -> arrayBuffer${withGC ? " (with gc) " : ""}`, async () => { + if (withGC) gc(); + + var response = blobbyConstructor( + new TextEncoder().encode(JSON.stringify(jsonObject)) + ); + if (withGC) gc(); + + const bytes = new TextEncoder().encode(JSON.stringify(jsonObject)); + if (withGC) gc(); + + const compare = new Uint8Array(await response.arrayBuffer()); + if (withGC) gc(); + + for (let i = 0; i < compare.length; i++) { + if (withGC) gc(); + + expect(compare[i]).toBe(bytes[i]); + if (withGC) gc(); + } + if (withGC) gc(); + }); + + hasBlobFn && + it(`${jsonObject.hello === true ? "latin1" : "utf16"} blob${ + withGC ? " (with gc) " : "" + }`, async () => { + if (withGC) gc(); + const text = JSON.stringify(jsonObject); + var response = blobbyConstructor(text); + if (withGC) gc(); + const size = new TextEncoder().encode(text).byteLength; + if (withGC) gc(); + const blobed = await response.blob(); + if (withGC) gc(); + expect(blobed instanceof Blob).toBe(true); + if (withGC) gc(); + expect(blobed.size).toBe(size); + if (withGC) gc(); + expect(blobed.type).toBe(""); + if (withGC) gc(); + blobed.type = "application/json"; + if (withGC) gc(); + expect(blobed.type).toBe("application/json"); + if (withGC) gc(); + const out = await blobed.text(); + expect(out).toBe(text); + if (withGC) gc(); + await new Promise((resolve) => setTimeout(resolve, 1)); + if (withGC) gc(); + expect(out).toBe(text); + const first = await blobed.arrayBuffer(); + const initial = first[0]; + first[0] = 254; + const second = await blobed.arrayBuffer(); + expect(second[0]).toBe(initial); + expect(first[0]).toBe(254); + }); + } + } +} + +describe("Blob", () => { + testBlobInterface((data) => new Blob([data])); + + var blobConstructorValues = [ + ["123", "456"], + ["123", 456], + ["123", "456", "789"], + ["123", 456, 789], + [1, 2, 3, 4, 5, 6, 7, 8, 9], + [Uint8Array.from([1, 2, 3, 4, 5, 6, 7, 9])], + [Uint8Array.from([1, 2, 3, 4]), "5678", 9], + [new Blob([Uint8Array.from([1, 2, 3, 4])]), "5678", 9], + [ + new Blob([ + new TextEncoder().encode( + "π π π π π π
π π€£ π₯² βΊοΈ π π π π π π π π₯° π π π π π π π π π€ͺ π€¨ π§ π€ π π₯Έ π€© π₯³" + ), + ]), + ], + [ + new TextEncoder().encode( + "π π π π π π
π π€£ π₯² βΊοΈ π π π π π π π π₯° π π π π π π π π π€ͺ π€¨ π§ π€ π π₯Έ π€© π₯³" + ), + ], + ]; + + var expected = [ + "123456", + "123456", + "123456789", + "123456789", + "123456789", + "\x01\x02\x03\x04\x05\x06\x07\t", + "\x01\x02\x03\x0456789", + "\x01\x02\x03\x0456789", + "π π π π π π
π π€£ π₯² βΊοΈ π π π π π π π π₯° π π π π π π π π π€ͺ π€¨ π§ π€ π π₯Έ π€© π₯³", + "π π π π π π
π π€£ π₯² βΊοΈ π π π π π π π π₯° π π π π π π π π π€ͺ π€¨ π§ π€ π π₯Έ π€© π₯³", + ]; + + it(`blobConstructorValues`, async () => { + for (let i = 0; i < blobConstructorValues.length; i++) { + var response = new Blob(blobConstructorValues[i]); + const res = await response.text(); + if (res !== expected[i]) { + throw new Error( + `Failed: ${expected[i] + .split("") + .map((a) => a.charCodeAt(0))}, received: ${res + .split("") + .map((a) => a.charCodeAt(0))}` + ); + } + + expect(res).toBe(expected[i]); + } + }); + + for (let withGC of [false, true]) { + it(`Blob.slice() ${withGC ? " with gc" : ""}`, async () => { + var parts = ["hello", " ", "world"]; + if (withGC) gc(); + var str = parts.join(""); + if (withGC) gc(); + var combined = new Blob(parts); + if (withGC) gc(); + for (let part of parts) { + if (withGC) gc(); + expect( + await combined + .slice(str.indexOf(part), str.indexOf(part) + part.length) + .text() + ).toBe(part); + if (withGC) gc(); + } + if (withGC) gc(); + for (let part of parts) { + if (withGC) gc(); + expect( + await combined + .slice(str.indexOf(part), str.indexOf(part) + part.length) + .text() + ).toBe(part); + if (withGC) gc(); + } + }); + } +}); + +describe("Response", () => { + describe("Response.json", () => { + it("works", async () => { + const inputs = [ + "hellooo", + [[123], 456, 789], + { hello: "world" }, + { ok: "π π π π₯° π " }, + ]; + for (let input of inputs) { + const output = JSON.stringify(input); + expect(await Response.json(input).text()).toBe(output); + } + // JSON.stringify() returns undefined + expect(await Response.json().text()).toBe(""); + // JSON.stringify("") returns '""' + expect(await Response.json("").text()).toBe('""'); + }); + it("sets the content-type header", () => { + let response = Response.json("hello"); + expect(response.type).toBe("basic"); + expect(response.headers.get("content-type")).toBe( + "application/json;charset=utf-8" + ); + expect(response.status).toBe(200); + }); + it("supports number status code", () => { + let response = Response.json("hello", 407); + expect(response.type).toBe("basic"); + expect(response.headers.get("content-type")).toBe( + "application/json;charset=utf-8" + ); + expect(response.status).toBe(407); + }); + + it("supports headers", () => { + var response = Response.json("hello", { + headers: { + "content-type": "potato", + "x-hello": "world", + }, + status: 408, + }); + + expect(response.headers.get("x-hello")).toBe("world"); + expect(response.status).toBe(408); + }); + }); + describe("Response.redirect", () => { + it("works", () => { + const inputs = [ + "http://example.com", + "http://example.com/", + "http://example.com/hello", + "http://example.com/hello/", + "http://example.com/hello/world", + "http://example.com/hello/world/", + ]; + for (let input of inputs) { + expect(Response.redirect(input).headers.get("Location")).toBe(input); + } + }); + + it("supports headers", () => { + var response = Response.redirect("https://example.com", { + headers: { + "content-type": "potato", + "x-hello": "world", + Location: "https://wrong.com", + }, + status: 408, + }); + expect(response.headers.get("x-hello")).toBe("world"); + expect(response.headers.get("Location")).toBe("https://example.com"); + expect(response.status).toBe(302); + expect(response.type).toBe("basic"); + expect(response.ok).toBe(false); + }); + }); + describe("Response.error", () => { + it("works", () => { + expect(Response.error().type).toBe("error"); + expect(Response.error().ok).toBe(false); + expect(Response.error().status).toBe(0); + }); + }); + it("clone", async () => { + gc(); + var body = new Response("<div>hello</div>", { + headers: { + "content-type": "text/html; charset=utf-8", + }, + }); + gc(); + var clone = body.clone(); + gc(); + body.headers.set("content-type", "text/plain"); + gc(); + expect(clone.headers.get("content-type")).toBe("text/html; charset=utf-8"); + gc(); + expect(body.headers.get("content-type")).toBe("text/plain"); + gc(); + expect(await clone.text()).toBe("<div>hello</div>"); + gc(); + }); + it("invalid json", async () => { + gc(); + var body = new Response("<div>hello</div>", { + headers: { + "content-type": "text/html; charset=utf-8", + }, + }); + try { + await body.json(); + expect(false).toBe(true); + } catch (exception) { + expect(exception instanceof SyntaxError); + } + }); + + testBlobInterface((data) => new Response(data), true); +}); + +describe("Request", () => { + it("clone", async () => { + gc(); + var body = new Request("https://hello.com", { + headers: { + "content-type": "text/html; charset=utf-8", + }, + body: "<div>hello</div>", + }); + gc(); + expect(body.headers.get("content-type")).toBe("text/html; charset=utf-8"); + gc(); + var clone = body.clone(); + gc(); + body.headers.set("content-type", "text/plain"); + gc(); + expect(clone.headers.get("content-type")).toBe("text/html; charset=utf-8"); + gc(); + expect(body.headers.get("content-type")).toBe("text/plain"); + gc(); + expect(await clone.text()).toBe("<div>hello</div>"); + gc(); + }); + + testBlobInterface( + (data) => new Request("https://hello.com", { body: data }), + true + ); +}); + +describe("Headers", () => { + it("writes", async () => { + var headers = new Headers({ + "content-type": "text/html; charset=utf-8", + }); + gc(); + expect(headers.get("content-type")).toBe("text/html; charset=utf-8"); + gc(); + headers.delete("content-type"); + gc(); + expect(headers.get("content-type")).toBe(null); + gc(); + headers.append("content-type", "text/plain"); + gc(); + expect(headers.get("content-type")).toBe("text/plain"); + gc(); + headers.append("content-type", "text/plain"); + gc(); + expect(headers.get("content-type")).toBe("text/plain, text/plain"); + gc(); + headers.set("content-type", "text/html; charset=utf-8"); + gc(); + expect(headers.get("content-type")).toBe("text/html; charset=utf-8"); + + headers.delete("content-type"); + gc(); + expect(headers.get("content-type")).toBe(null); + gc(); + }); +}); diff --git a/test/bun.js/ffi-test.c b/test/bun.js/ffi-test.c new file mode 100644 index 000000000..cc87d0528 --- /dev/null +++ b/test/bun.js/ffi-test.c @@ -0,0 +1,129 @@ +#include <stdbool.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> + +bool returns_true(); +bool returns_false(); +char returns_42_char(); +float returns_42_float(); +double returns_42_double(); +uint8_t returns_42_uint8_t(); +int8_t returns_neg_42_int8_t(); +uint16_t returns_42_uint16_t(); +uint32_t returns_42_uint32_t(); +uint64_t returns_42_uint64_t(); +int16_t returns_neg_42_int16_t(); +int32_t returns_neg_42_int32_t(); +int64_t returns_neg_42_int64_t(); + +bool cb_identity_true(bool (*cb)()); +bool cb_identity_false(bool (*cb)()); +char cb_identity_42_char(char (*cb)()); +float cb_identity_42_float(float (*cb)()); +double cb_identity_42_double(double (*cb)()); +uint8_t cb_identity_42_uint8_t(uint8_t (*cb)()); +int8_t cb_identity_neg_42_int8_t(int8_t (*cb)()); +uint16_t cb_identity_42_uint16_t(uint16_t (*cb)()); +uint32_t cb_identity_42_uint32_t(uint32_t (*cb)()); +uint64_t cb_identity_42_uint64_t(uint64_t (*cb)()); +int16_t cb_identity_neg_42_int16_t(int16_t (*cb)()); +int32_t cb_identity_neg_42_int32_t(int32_t (*cb)()); +int64_t cb_identity_neg_42_int64_t(int64_t (*cb)()); + +bool identity_bool_true(); +bool identity_bool_false(); +char identity_char(char a); +float identity_float(float a); +bool identity_bool(bool ident); +double identity_double(double a); +int8_t identity_int8_t(int8_t a); +int16_t identity_int16_t(int16_t a); +int32_t identity_int32_t(int32_t a); +int64_t identity_int64_t(int64_t a); +uint8_t identity_uint8_t(uint8_t a); +uint16_t identity_uint16_t(uint16_t a); +uint32_t identity_uint32_t(uint32_t a); +uint64_t identity_uint64_t(uint64_t a); + +char add_char(char a, char b); +float add_float(float a, float b); +double add_double(double a, double b); +int8_t add_int8_t(int8_t a, int8_t b); +int16_t add_int16_t(int16_t a, int16_t b); +int32_t add_int32_t(int32_t a, int32_t b); +int64_t add_int64_t(int64_t a, int64_t b); +uint8_t add_uint8_t(uint8_t a, uint8_t b); +uint16_t add_uint16_t(uint16_t a, uint16_t b); +uint32_t add_uint32_t(uint32_t a, uint32_t b); +uint64_t add_uint64_t(uint64_t a, uint64_t b); + +bool returns_false() { return false; } +bool returns_true() { return true; } +char returns_42_char() { return '*'; } +double returns_42_double() { return (double)42.42; } +float returns_42_float() { return 42.42f; } +int16_t returns_neg_42_int16_t() { return -42; } +int32_t returns_neg_42_int32_t() { return -42; } +int64_t returns_neg_42_int64_t() { return -42; } +int8_t returns_neg_42_int8_t() { return -42; } +uint16_t returns_42_uint16_t() { return 42; } +uint32_t returns_42_uint32_t() { return 42; } +uint64_t returns_42_uint64_t() { return 42; } +uint8_t returns_42_uint8_t() { return (uint8_t)42; } + +char identity_char(char a) { return a; } +float identity_float(float a) { return a; } +double identity_double(double a) { return a; } +int8_t identity_int8_t(int8_t a) { return a; } +int16_t identity_int16_t(int16_t a) { return a; } +int32_t identity_int32_t(int32_t a) { return a; } +int64_t identity_int64_t(int64_t a) { return a; } +uint8_t identity_uint8_t(uint8_t a) { return a; } +uint16_t identity_uint16_t(uint16_t a) { return a; } +uint32_t identity_uint32_t(uint32_t a) { return a; } +uint64_t identity_uint64_t(uint64_t a) { return a; } +bool identity_bool(bool ident) { return ident; } +void *identity_ptr(void *ident) { return ident; } + +char add_char(char a, char b) { return a + b; } +float add_float(float a, float b) { return a + b; } +double add_double(double a, double b) { return a + b; } +int8_t add_int8_t(int8_t a, int8_t b) { return a + b; } +int16_t add_int16_t(int16_t a, int16_t b) { return a + b; } +int32_t add_int32_t(int32_t a, int32_t b) { return a + b; } +int64_t add_int64_t(int64_t a, int64_t b) { return a + b; } +uint8_t add_uint8_t(uint8_t a, uint8_t b) { return a + b; } +uint16_t add_uint16_t(uint16_t a, uint16_t b) { return a + b; } +uint32_t add_uint32_t(uint32_t a, uint32_t b) { return a + b; } +uint64_t add_uint64_t(uint64_t a, uint64_t b) { return a + b; } + +void *ptr_should_point_to_42_as_int32_t(); +void *ptr_should_point_to_42_as_int32_t() { + int32_t *ptr = malloc(sizeof(int32_t)); + *ptr = 42; + return ptr; +} + +bool does_pointer_equal_42_as_int32_t(int32_t *ptr); +bool does_pointer_equal_42_as_int32_t(int32_t *ptr) { return *ptr == 42; } + +void *return_a_function_ptr_to_function_that_returns_true(); +void *return_a_function_ptr_to_function_that_returns_true() { + return (void *)&returns_true; +} + +bool cb_identity_true(bool (*cb)()) { return cb(); } + +bool cb_identity_false(bool (*cb)()) { return cb(); } +char cb_identity_42_char(char (*cb)()) { return cb(); } +float cb_identity_42_float(float (*cb)()) { return cb(); } +double cb_identity_42_double(double (*cb)()) { return cb(); } +uint8_t cb_identity_42_uint8_t(uint8_t (*cb)()) { return cb(); } +int8_t cb_identity_neg_42_int8_t(int8_t (*cb)()) { return cb(); } +uint16_t cb_identity_42_uint16_t(uint16_t (*cb)()) { return cb(); } +uint32_t cb_identity_42_uint32_t(uint32_t (*cb)()) { return cb(); } +uint64_t cb_identity_42_uint64_t(uint64_t (*cb)()) { return cb(); } +int16_t cb_identity_neg_42_int16_t(int16_t (*cb)()) { return cb(); } +int32_t cb_identity_neg_42_int32_t(int32_t (*cb)()) { return cb(); } +int64_t cb_identity_neg_42_int64_t(int64_t (*cb)()) { return cb(); }
\ No newline at end of file diff --git a/test/bun.js/ffi.test.fixture.callback.c b/test/bun.js/ffi.test.fixture.callback.c new file mode 100644 index 000000000..d48ef6753 --- /dev/null +++ b/test/bun.js/ffi.test.fixture.callback.c @@ -0,0 +1,270 @@ +#define IS_CALLBACK 1 +// This file is part of Bun! +// You can find the original source: +// https://github.com/Jarred-Sumner/bun/blob/main/src/bun.js/api/FFI.h#L2 +// +// clang-format off +// This file is only compatible with 64 bit CPUs +// It must be kept in sync with JSCJSValue.h +// https://github.com/Jarred-Sumner/WebKit/blob/72c2052b781cbfd4af867ae79ac9de460e392fba/Source/JavaScriptCore/runtime/JSCJSValue.h#L455-L458 +#ifdef IS_CALLBACK +#define INJECT_BEFORE int c = 500; // This is a callback, so we need to inject code before the call +#endif +#define IS_BIG_ENDIAN 0 +#define USE_JSVALUE64 1 +#define USE_JSVALUE32_64 0 + + +// /* 7.18.1.1 Exact-width integer types */ +typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef short int16_t; +typedef unsigned short uint16_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef long long int64_t; +typedef unsigned long long uint64_t; +typedef unsigned long long size_t; +typedef long intptr_t; +typedef uint64_t uintptr_t; +typedef _Bool bool; + +#define true 1 +#define false 0 + + +#ifdef INJECT_BEFORE +// #include <stdint.h> +#endif +// #include <tcclib.h> + +// This value is 2^49, used to encode doubles such that the encoded value will +// begin with a 15-bit pattern within the range 0x0002..0xFFFC. +#define DoubleEncodeOffsetBit 49 +#define DoubleEncodeOffset (1ll << DoubleEncodeOffsetBit) +#define OtherTag 0x2 +#define BoolTag 0x4 +#define UndefinedTag 0x8 +#define TagValueFalse (OtherTag | BoolTag | false) +#define TagValueTrue (OtherTag | BoolTag | true) +#define TagValueUndefined (OtherTag | UndefinedTag) +#define TagValueNull (OtherTag) +#define NotCellMask NumberTag | OtherTag + +#define MAX_INT32 2147483648 +#define MAX_INT52 9007199254740991 + +// If all bits in the mask are set, this indicates an integer number, +// if any but not all are set this value is a double precision number. +#define NumberTag 0xfffe000000000000ll + +typedef void* JSCell; + +typedef union EncodedJSValue { + int64_t asInt64; + +#if USE_JSVALUE64 + JSCell *ptr; +#endif + +#if IS_BIG_ENDIAN + struct { + int32_t tag; + int32_t payload; + } asBits; +#else + struct { + int32_t payload; + int32_t tag; + } asBits; +#endif + + void* asPtr; + double asDouble; +} EncodedJSValue; + +EncodedJSValue ValueUndefined = { TagValueUndefined }; +EncodedJSValue ValueTrue = { TagValueTrue }; + +typedef void* JSContext; + +// Bun_FFI_PointerOffsetToArgumentsList is injected into the build +// The value is generated in `make sizegen` +// The value is 6. +// On ARM64_32, the value is something else but it really doesn't matter for our case +// However, I don't want this to subtly break amidst future upgrades to JavaScriptCore +#define LOAD_ARGUMENTS_FROM_CALL_FRAME \ + int64_t *argsPtr = (int64_t*)((size_t*)callFrame + Bun_FFI_PointerOffsetToArgumentsList) + + +#ifdef IS_CALLBACK +extern int64_t bun_call(JSContext, void* func, void* thisValue, size_t len, const EncodedJSValue args[], void* exception); +JSContext cachedJSContext; +void* cachedCallbackFunction; +#endif + +static bool JSVALUE_IS_CELL(EncodedJSValue val) __attribute__((__always_inline__)); +static bool JSVALUE_IS_INT32(EncodedJSValue val) __attribute__((__always_inline__)); +static bool JSVALUE_IS_NUMBER(EncodedJSValue val) __attribute__((__always_inline__)); + +static uint64_t JSVALUE_TO_UINT64(void* globalObject, EncodedJSValue value) __attribute__((__always_inline__)); +static int64_t JSVALUE_TO_INT64(EncodedJSValue value) __attribute__((__always_inline__)); +uint64_t JSVALUE_TO_UINT64_SLOW(void* globalObject, EncodedJSValue value); +int64_t JSVALUE_TO_INT64_SLOW(EncodedJSValue value); + +EncodedJSValue UINT64_TO_JSVALUE_SLOW(void* globalObject, uint64_t val); +EncodedJSValue INT64_TO_JSVALUE_SLOW(void* globalObject, int64_t val); +static EncodedJSValue UINT64_TO_JSVALUE(void* globalObject, uint64_t val) __attribute__((__always_inline__)); +static EncodedJSValue INT64_TO_JSVALUE(void* globalObject, int64_t val) __attribute__((__always_inline__)); + + +static EncodedJSValue INT32_TO_JSVALUE(int32_t val) __attribute__((__always_inline__)); +static EncodedJSValue DOUBLE_TO_JSVALUE(double val) __attribute__((__always_inline__)); +static EncodedJSValue FLOAT_TO_JSVALUE(float val) __attribute__((__always_inline__)); +static EncodedJSValue BOOLEAN_TO_JSVALUE(bool val) __attribute__((__always_inline__)); +static EncodedJSValue PTR_TO_JSVALUE(void* ptr) __attribute__((__always_inline__)); + +static void* JSVALUE_TO_PTR(EncodedJSValue val) __attribute__((__always_inline__)); +static int32_t JSVALUE_TO_INT32(EncodedJSValue val) __attribute__((__always_inline__)); +static float JSVALUE_TO_FLOAT(EncodedJSValue val) __attribute__((__always_inline__)); +static double JSVALUE_TO_DOUBLE(EncodedJSValue val) __attribute__((__always_inline__)); +static bool JSVALUE_TO_BOOL(EncodedJSValue val) __attribute__((__always_inline__)); + +static bool JSVALUE_IS_CELL(EncodedJSValue val) { + return !(val.asInt64 & NotCellMask); +} + +static bool JSVALUE_IS_INT32(EncodedJSValue val) { + return (val.asInt64 & NumberTag) == NumberTag; +} + +static bool JSVALUE_IS_NUMBER(EncodedJSValue val) { + return val.asInt64 & NumberTag; +} + + +static void* JSVALUE_TO_PTR(EncodedJSValue val) { + // must be a double + return (void*)(val.asInt64 - DoubleEncodeOffset); +} + +static EncodedJSValue PTR_TO_JSVALUE(void* ptr) { + EncodedJSValue val; + val.asInt64 = (int64_t)ptr + DoubleEncodeOffset; + return val; +} + +static int32_t JSVALUE_TO_INT32(EncodedJSValue val) { + return val.asInt64; +} + +static EncodedJSValue INT32_TO_JSVALUE(int32_t val) { + EncodedJSValue res; + res.asInt64 = NumberTag | (uint32_t)val; + return res; +} + + +static EncodedJSValue DOUBLE_TO_JSVALUE(double val) { + EncodedJSValue res; + res.asDouble = val; + res.asInt64 += DoubleEncodeOffset; + return res; +} + +static EncodedJSValue FLOAT_TO_JSVALUE(float val) { + return DOUBLE_TO_JSVALUE((double)val); +} + +static EncodedJSValue BOOLEAN_TO_JSVALUE(bool val) { + EncodedJSValue res; + res.asInt64 = val ? TagValueTrue : TagValueFalse; + return res; +} + + +static double JSVALUE_TO_DOUBLE(EncodedJSValue val) { + val.asInt64 -= DoubleEncodeOffset; + return val.asDouble; +} + +static float JSVALUE_TO_FLOAT(EncodedJSValue val) { + return (float)JSVALUE_TO_DOUBLE(val); +} + +static bool JSVALUE_TO_BOOL(EncodedJSValue val) { + return val.asInt64 == TagValueTrue; +} + + +static uint64_t JSVALUE_TO_UINT64(void* globalObject, EncodedJSValue value) { + if (JSVALUE_IS_INT32(value)) { + return (uint64_t)JSVALUE_TO_INT32(value); + } + + if (JSVALUE_IS_NUMBER(value)) { + return (uint64_t)JSVALUE_TO_DOUBLE(value); + } + + return JSVALUE_TO_UINT64_SLOW(globalObject, value); +} +static int64_t JSVALUE_TO_INT64(EncodedJSValue value) { + if (JSVALUE_IS_INT32(value)) { + return (int64_t)JSVALUE_TO_INT32(value); + } + + if (JSVALUE_IS_NUMBER(value)) { + return (int64_t)JSVALUE_TO_DOUBLE(value); + } + + return JSVALUE_TO_INT64_SLOW(value); +} + +static EncodedJSValue UINT64_TO_JSVALUE(void* globalObject, uint64_t val) { + if (val < MAX_INT32) { + return INT32_TO_JSVALUE((int32_t)val); + } + + if (val < MAX_INT52) { + return DOUBLE_TO_JSVALUE((double)val); + } + + return UINT64_TO_JSVALUE_SLOW(globalObject, val); +} + +static EncodedJSValue INT64_TO_JSVALUE(void* globalObject, int64_t val) { + if (val >= -MAX_INT32 && val <= MAX_INT32) { + return INT32_TO_JSVALUE((int32_t)val); + } + + if (val >= -MAX_INT52 && val <= MAX_INT52) { + return DOUBLE_TO_JSVALUE((double)val); + } + + return INT64_TO_JSVALUE_SLOW(globalObject, val); +} + +#ifndef IS_CALLBACK +void* JSFunctionCall(void* globalObject, void* callFrame); + +#endif + + +// --- Generated Code --- + + +/* --- The Callback Function */ +/* --- The Callback Function */ +bool my_callback_function(void* arg0); + +bool my_callback_function(void* arg0) { +#ifdef INJECT_BEFORE +INJECT_BEFORE; +#endif + EncodedJSValue arguments[1] = { + PTR_TO_JSVALUE(arg0) + }; + EncodedJSValue return_value = {bun_call(cachedJSContext, cachedCallbackFunction, (void*)0, 1, &arguments[0], (void*)0)}; + return JSVALUE_TO_BOOL(return_value); +} + diff --git a/test/bun.js/ffi.test.fixture.receiver.c b/test/bun.js/ffi.test.fixture.receiver.c new file mode 100644 index 000000000..5bb51bda5 --- /dev/null +++ b/test/bun.js/ffi.test.fixture.receiver.c @@ -0,0 +1,268 @@ +#define HAS_ARGUMENTS +#define USES_FLOAT 1 +// This file is part of Bun! +// You can find the original source: +// https://github.com/Jarred-Sumner/bun/blob/main/src/bun.js/api/FFI.h#L2 +// +// clang-format off +// This file is only compatible with 64 bit CPUs +// It must be kept in sync with JSCJSValue.h +// https://github.com/Jarred-Sumner/WebKit/blob/72c2052b781cbfd4af867ae79ac9de460e392fba/Source/JavaScriptCore/runtime/JSCJSValue.h#L455-L458 +#ifdef IS_CALLBACK +#define INJECT_BEFORE int c = 500; // This is a callback, so we need to inject code before the call +#endif +#define IS_BIG_ENDIAN 0 +#define USE_JSVALUE64 1 +#define USE_JSVALUE32_64 0 + + +// /* 7.18.1.1 Exact-width integer types */ +typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef short int16_t; +typedef unsigned short uint16_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef long long int64_t; +typedef unsigned long long uint64_t; +typedef unsigned long long size_t; +typedef long intptr_t; +typedef uint64_t uintptr_t; +typedef _Bool bool; + +#define true 1 +#define false 0 + + +#ifdef INJECT_BEFORE +// #include <stdint.h> +#endif +// #include <tcclib.h> + +// This value is 2^49, used to encode doubles such that the encoded value will +// begin with a 15-bit pattern within the range 0x0002..0xFFFC. +#define DoubleEncodeOffsetBit 49 +#define DoubleEncodeOffset (1ll << DoubleEncodeOffsetBit) +#define OtherTag 0x2 +#define BoolTag 0x4 +#define UndefinedTag 0x8 +#define TagValueFalse (OtherTag | BoolTag | false) +#define TagValueTrue (OtherTag | BoolTag | true) +#define TagValueUndefined (OtherTag | UndefinedTag) +#define TagValueNull (OtherTag) +#define NotCellMask NumberTag | OtherTag + +#define MAX_INT32 2147483648 +#define MAX_INT52 9007199254740991 + +// If all bits in the mask are set, this indicates an integer number, +// if any but not all are set this value is a double precision number. +#define NumberTag 0xfffe000000000000ll + +typedef void* JSCell; + +typedef union EncodedJSValue { + int64_t asInt64; + +#if USE_JSVALUE64 + JSCell *ptr; +#endif + +#if IS_BIG_ENDIAN + struct { + int32_t tag; + int32_t payload; + } asBits; +#else + struct { + int32_t payload; + int32_t tag; + } asBits; +#endif + + void* asPtr; + double asDouble; +} EncodedJSValue; + +EncodedJSValue ValueUndefined = { TagValueUndefined }; +EncodedJSValue ValueTrue = { TagValueTrue }; + +typedef void* JSContext; + +// Bun_FFI_PointerOffsetToArgumentsList is injected into the build +// The value is generated in `make sizegen` +// The value is 6. +// On ARM64_32, the value is something else but it really doesn't matter for our case +// However, I don't want this to subtly break amidst future upgrades to JavaScriptCore +#define LOAD_ARGUMENTS_FROM_CALL_FRAME \ + int64_t *argsPtr = (int64_t*)((size_t*)callFrame + Bun_FFI_PointerOffsetToArgumentsList) + + +#ifdef IS_CALLBACK +extern int64_t bun_call(JSContext, void* func, void* thisValue, size_t len, const EncodedJSValue args[], void* exception); +JSContext cachedJSContext; +void* cachedCallbackFunction; +#endif + +static bool JSVALUE_IS_CELL(EncodedJSValue val) __attribute__((__always_inline__)); +static bool JSVALUE_IS_INT32(EncodedJSValue val) __attribute__((__always_inline__)); +static bool JSVALUE_IS_NUMBER(EncodedJSValue val) __attribute__((__always_inline__)); + +static uint64_t JSVALUE_TO_UINT64(void* globalObject, EncodedJSValue value) __attribute__((__always_inline__)); +static int64_t JSVALUE_TO_INT64(EncodedJSValue value) __attribute__((__always_inline__)); +uint64_t JSVALUE_TO_UINT64_SLOW(void* globalObject, EncodedJSValue value); +int64_t JSVALUE_TO_INT64_SLOW(EncodedJSValue value); + +EncodedJSValue UINT64_TO_JSVALUE_SLOW(void* globalObject, uint64_t val); +EncodedJSValue INT64_TO_JSVALUE_SLOW(void* globalObject, int64_t val); +static EncodedJSValue UINT64_TO_JSVALUE(void* globalObject, uint64_t val) __attribute__((__always_inline__)); +static EncodedJSValue INT64_TO_JSVALUE(void* globalObject, int64_t val) __attribute__((__always_inline__)); + + +static EncodedJSValue INT32_TO_JSVALUE(int32_t val) __attribute__((__always_inline__)); +static EncodedJSValue DOUBLE_TO_JSVALUE(double val) __attribute__((__always_inline__)); +static EncodedJSValue FLOAT_TO_JSVALUE(float val) __attribute__((__always_inline__)); +static EncodedJSValue BOOLEAN_TO_JSVALUE(bool val) __attribute__((__always_inline__)); +static EncodedJSValue PTR_TO_JSVALUE(void* ptr) __attribute__((__always_inline__)); + +static void* JSVALUE_TO_PTR(EncodedJSValue val) __attribute__((__always_inline__)); +static int32_t JSVALUE_TO_INT32(EncodedJSValue val) __attribute__((__always_inline__)); +static float JSVALUE_TO_FLOAT(EncodedJSValue val) __attribute__((__always_inline__)); +static double JSVALUE_TO_DOUBLE(EncodedJSValue val) __attribute__((__always_inline__)); +static bool JSVALUE_TO_BOOL(EncodedJSValue val) __attribute__((__always_inline__)); + +static bool JSVALUE_IS_CELL(EncodedJSValue val) { + return !(val.asInt64 & NotCellMask); +} + +static bool JSVALUE_IS_INT32(EncodedJSValue val) { + return (val.asInt64 & NumberTag) == NumberTag; +} + +static bool JSVALUE_IS_NUMBER(EncodedJSValue val) { + return val.asInt64 & NumberTag; +} + + +static void* JSVALUE_TO_PTR(EncodedJSValue val) { + // must be a double + return (void*)(val.asInt64 - DoubleEncodeOffset); +} + +static EncodedJSValue PTR_TO_JSVALUE(void* ptr) { + EncodedJSValue val; + val.asInt64 = (int64_t)ptr + DoubleEncodeOffset; + return val; +} + +static int32_t JSVALUE_TO_INT32(EncodedJSValue val) { + return val.asInt64; +} + +static EncodedJSValue INT32_TO_JSVALUE(int32_t val) { + EncodedJSValue res; + res.asInt64 = NumberTag | (uint32_t)val; + return res; +} + + +static EncodedJSValue DOUBLE_TO_JSVALUE(double val) { + EncodedJSValue res; + res.asDouble = val; + res.asInt64 += DoubleEncodeOffset; + return res; +} + +static EncodedJSValue FLOAT_TO_JSVALUE(float val) { + return DOUBLE_TO_JSVALUE((double)val); +} + +static EncodedJSValue BOOLEAN_TO_JSVALUE(bool val) { + EncodedJSValue res; + res.asInt64 = val ? TagValueTrue : TagValueFalse; + return res; +} + + +static double JSVALUE_TO_DOUBLE(EncodedJSValue val) { + val.asInt64 -= DoubleEncodeOffset; + return val.asDouble; +} + +static float JSVALUE_TO_FLOAT(EncodedJSValue val) { + return (float)JSVALUE_TO_DOUBLE(val); +} + +static bool JSVALUE_TO_BOOL(EncodedJSValue val) { + return val.asInt64 == TagValueTrue; +} + + +static uint64_t JSVALUE_TO_UINT64(void* globalObject, EncodedJSValue value) { + if (JSVALUE_IS_INT32(value)) { + return (uint64_t)JSVALUE_TO_INT32(value); + } + + if (JSVALUE_IS_NUMBER(value)) { + return (uint64_t)JSVALUE_TO_DOUBLE(value); + } + + return JSVALUE_TO_UINT64_SLOW(globalObject, value); +} +static int64_t JSVALUE_TO_INT64(EncodedJSValue value) { + if (JSVALUE_IS_INT32(value)) { + return (int64_t)JSVALUE_TO_INT32(value); + } + + if (JSVALUE_IS_NUMBER(value)) { + return (int64_t)JSVALUE_TO_DOUBLE(value); + } + + return JSVALUE_TO_INT64_SLOW(value); +} + +static EncodedJSValue UINT64_TO_JSVALUE(void* globalObject, uint64_t val) { + if (val < MAX_INT32) { + return INT32_TO_JSVALUE((int32_t)val); + } + + if (val < MAX_INT52) { + return DOUBLE_TO_JSVALUE((double)val); + } + + return UINT64_TO_JSVALUE_SLOW(globalObject, val); +} + +static EncodedJSValue INT64_TO_JSVALUE(void* globalObject, int64_t val) { + if (val >= -MAX_INT32 && val <= MAX_INT32) { + return INT32_TO_JSVALUE((int32_t)val); + } + + if (val >= -MAX_INT52 && val <= MAX_INT52) { + return DOUBLE_TO_JSVALUE((double)val); + } + + return INT64_TO_JSVALUE_SLOW(globalObject, val); +} + +#ifndef IS_CALLBACK +void* JSFunctionCall(void* globalObject, void* callFrame); + +#endif + + +// --- Generated Code --- +/* --- The Function To Call */ +float not_a_callback(float arg0); + + +/* ---- Your Wrapper Function ---- */ +void* JSFunctionCall(void* globalObject, void* callFrame) { + LOAD_ARGUMENTS_FROM_CALL_FRAME; + EncodedJSValue arg0; + arg0.asInt64 = *argsPtr; + float return_value = not_a_callback( JSVALUE_TO_FLOAT(arg0)); + + return FLOAT_TO_JSVALUE(return_value).asPtr; +} + diff --git a/test/bun.js/ffi.test.js b/test/bun.js/ffi.test.js new file mode 100644 index 000000000..db2cfb6d4 --- /dev/null +++ b/test/bun.js/ffi.test.js @@ -0,0 +1,543 @@ +// import { describe, it, expect } from "bun:test"; +// import { unsafe } from "bun"; +// // +// import { +// native, +// viewSource, +// dlopen, +// CString, +// ptr, +// toBuffer, +// toArrayBuffer, +// FFIType, +// callback, +// CFunction, +// } from "bun:ffi"; + +// it("ffi print", async () => { +// await Bun.write( +// import.meta.dir + "/ffi.test.fixture.callback.c", +// viewSource( +// { +// returns: "bool", +// args: ["ptr"], +// }, +// true +// ) +// ); +// await Bun.write( +// import.meta.dir + "/ffi.test.fixture.receiver.c", +// viewSource( +// { +// not_a_callback: { +// returns: "float", +// args: ["float"], +// }, +// }, +// false +// )[0] +// ); +// expect( +// viewSource( +// { +// returns: "int8_t", +// args: [], +// }, +// true +// ).length > 0 +// ).toBe(true); +// expect( +// viewSource( +// { +// a: { +// returns: "int8_t", +// args: [], +// }, +// }, +// false +// ).length > 0 +// ).toBe(true); +// }); + +// function getTypes(fast) { +// const int64_t = fast ? "i64_fast" : "int64_t"; +// const uint64_t = fast ? "u64_fast" : "uint64_t"; +// return { +// returns_true: { +// returns: "bool", +// args: [], +// }, +// returns_false: { +// returns: "bool", +// args: [], +// }, +// returns_42_char: { +// returns: "char", +// args: [], +// }, +// returns_42_float: { +// returns: "float", +// args: [], +// }, +// returns_42_double: { +// returns: "double", +// args: [], +// }, +// returns_42_uint8_t: { +// returns: "uint8_t", +// args: [], +// }, +// returns_neg_42_int8_t: { +// returns: "int8_t", +// args: [], +// }, +// returns_42_uint16_t: { +// returns: "uint16_t", +// args: [], +// }, +// returns_42_uint32_t: { +// returns: "uint32_t", +// args: [], +// }, +// returns_42_uint64_t: { +// returns: uint64_t, +// args: [], +// }, +// returns_neg_42_int16_t: { +// returns: "int16_t", +// args: [], +// }, +// returns_neg_42_int32_t: { +// returns: "int32_t", +// args: [], +// }, +// returns_neg_42_int64_t: { +// returns: int64_t, +// args: [], +// }, + +// identity_char: { +// returns: "char", +// args: ["char"], +// }, +// identity_float: { +// returns: "float", +// args: ["float"], +// }, +// identity_bool: { +// returns: "bool", +// args: ["bool"], +// }, +// identity_double: { +// returns: "double", +// args: ["double"], +// }, +// identity_int8_t: { +// returns: "int8_t", +// args: ["int8_t"], +// }, +// identity_int16_t: { +// returns: "int16_t", +// args: ["int16_t"], +// }, +// identity_int32_t: { +// returns: "int32_t", +// args: ["int32_t"], +// }, +// identity_int64_t: { +// returns: int64_t, +// args: [int64_t], +// }, +// identity_uint8_t: { +// returns: "uint8_t", +// args: ["uint8_t"], +// }, +// identity_uint16_t: { +// returns: "uint16_t", +// args: ["uint16_t"], +// }, +// identity_uint32_t: { +// returns: "uint32_t", +// args: ["uint32_t"], +// }, +// identity_uint64_t: { +// returns: uint64_t, +// args: [uint64_t], +// }, + +// add_char: { +// returns: "char", +// args: ["char", "char"], +// }, +// add_float: { +// returns: "float", +// args: ["float", "float"], +// }, +// add_double: { +// returns: "double", +// args: ["double", "double"], +// }, +// add_int8_t: { +// returns: "int8_t", +// args: ["int8_t", "int8_t"], +// }, +// add_int16_t: { +// returns: "int16_t", +// args: ["int16_t", "int16_t"], +// }, +// add_int32_t: { +// returns: "int32_t", +// args: ["int32_t", "int32_t"], +// }, +// add_int64_t: { +// returns: int64_t, +// args: [int64_t, int64_t], +// }, +// add_uint8_t: { +// returns: "uint8_t", +// args: ["uint8_t", "uint8_t"], +// }, +// add_uint16_t: { +// returns: "uint16_t", +// args: ["uint16_t", "uint16_t"], +// }, +// add_uint32_t: { +// returns: "uint32_t", +// args: ["uint32_t", "uint32_t"], +// }, + +// does_pointer_equal_42_as_int32_t: { +// returns: "bool", +// args: ["ptr"], +// }, + +// ptr_should_point_to_42_as_int32_t: { +// returns: "ptr", +// args: [], +// }, +// identity_ptr: { +// returns: "ptr", +// args: ["ptr"], +// }, +// add_uint64_t: { +// returns: uint64_t, +// args: [uint64_t, uint64_t], +// }, + +// cb_identity_true: { +// returns: "bool", +// args: ["ptr"], +// }, +// cb_identity_false: { +// returns: "bool", +// args: ["ptr"], +// }, +// cb_identity_42_char: { +// returns: "char", +// args: ["ptr"], +// }, +// cb_identity_42_float: { +// returns: "float", +// args: ["ptr"], +// }, +// cb_identity_42_double: { +// returns: "double", +// args: ["ptr"], +// }, +// cb_identity_42_uint8_t: { +// returns: "uint8_t", +// args: ["ptr"], +// }, +// cb_identity_neg_42_int8_t: { +// returns: "int8_t", +// args: ["ptr"], +// }, +// cb_identity_42_uint16_t: { +// returns: "uint16_t", +// args: ["ptr"], +// }, +// cb_identity_42_uint32_t: { +// returns: "uint32_t", +// args: ["ptr"], +// }, +// cb_identity_42_uint64_t: { +// returns: uint64_t, +// args: ["ptr"], +// }, +// cb_identity_neg_42_int16_t: { +// returns: "int16_t", +// args: ["ptr"], +// }, +// cb_identity_neg_42_int32_t: { +// returns: "int32_t", +// args: ["ptr"], +// }, +// cb_identity_neg_42_int64_t: { +// returns: int64_t, +// args: ["ptr"], +// }, + +// return_a_function_ptr_to_function_that_returns_true: { +// returns: "ptr", +// args: [], +// }, +// }; +// } + +// function ffiRunner(types) { +// const { +// symbols: { +// returns_true, +// returns_false, +// return_a_function_ptr_to_function_that_returns_true, +// returns_42_char, +// returns_42_float, +// returns_42_double, +// returns_42_uint8_t, +// returns_neg_42_int8_t, +// returns_42_uint16_t, +// returns_42_uint32_t, +// returns_42_uint64_t, +// returns_neg_42_int16_t, +// returns_neg_42_int32_t, +// returns_neg_42_int64_t, +// identity_char, +// identity_float, +// identity_bool, +// identity_double, +// identity_int8_t, +// identity_int16_t, +// identity_int32_t, +// identity_int64_t, +// identity_uint8_t, +// identity_uint16_t, +// identity_uint32_t, +// identity_uint64_t, +// add_char, +// add_float, +// add_double, +// add_int8_t, +// add_int16_t, +// add_int32_t, +// add_int64_t, +// add_uint8_t, +// add_uint16_t, +// identity_ptr, +// add_uint32_t, +// add_uint64_t, +// does_pointer_equal_42_as_int32_t, +// ptr_should_point_to_42_as_int32_t, +// cb_identity_true, +// cb_identity_false, +// cb_identity_42_char, +// cb_identity_42_float, +// cb_identity_42_double, +// cb_identity_42_uint8_t, +// cb_identity_neg_42_int8_t, +// cb_identity_42_uint16_t, +// cb_identity_42_uint32_t, +// cb_identity_42_uint64_t, +// cb_identity_neg_42_int16_t, +// cb_identity_neg_42_int32_t, +// cb_identity_neg_42_int64_t, +// }, +// close, +// } = dlopen("/tmp/bun-ffi-test.dylib", types); + +// expect(returns_true()).toBe(true); + +// expect(returns_false()).toBe(false); + +// expect(returns_42_char()).toBe(42); +// console.log( +// returns_42_uint64_t().valueOf(), +// returns_42_uint64_t(), +// returns_42_uint64_t().valueOf() === returns_42_uint64_t() +// ); +// expect(returns_42_uint64_t().valueOf()).toBe(42); + +// expect(Math.fround(returns_42_float())).toBe(Math.fround(42.41999804973602)); +// expect(returns_42_double()).toBe(42.42); +// expect(returns_42_uint8_t()).toBe(42); +// expect(returns_neg_42_int8_t()).toBe(-42); +// expect(returns_42_uint16_t()).toBe(42); +// expect(returns_42_uint32_t()).toBe(42); +// expect(returns_42_uint64_t()).toBe(42); +// expect(returns_neg_42_int16_t()).toBe(-42); +// expect(returns_neg_42_int32_t()).toBe(-42); +// expect(identity_int32_t(10)).toBe(10); +// expect(returns_neg_42_int64_t()).toBe(-42); + +// expect(identity_char(10)).toBe(10); + +// expect(identity_float(10.199999809265137)).toBe(10.199999809265137); + +// expect(identity_bool(true)).toBe(true); + +// expect(identity_bool(false)).toBe(false); +// expect(identity_double(10.100000000000364)).toBe(10.100000000000364); + +// expect(identity_int8_t(10)).toBe(10); +// expect(identity_int16_t(10)).toBe(10); +// expect(identity_int64_t(10)).toBe(10); +// expect(identity_uint8_t(10)).toBe(10); +// expect(identity_uint16_t(10)).toBe(10); +// expect(identity_uint32_t(10)).toBe(10); +// expect(identity_uint64_t(10)).toBe(10); + +// var bigArray = new BigUint64Array(8); +// new Uint8Array(bigArray.buffer).fill(255); +// var bigIntArray = new BigInt64Array(bigArray.buffer); +// expect(identity_uint64_t(bigArray[0])).toBe(bigArray[0]); +// expect(identity_uint64_t(bigArray[0] - BigInt(1))).toBe( +// bigArray[0] - BigInt(1) +// ); + +// expect(add_uint64_t(BigInt(-1) * bigArray[0], bigArray[0])).toBe(0); +// expect(add_uint64_t(BigInt(-1) * bigArray[0] + BigInt(10), bigArray[0])).toBe( +// 10 +// ); +// expect(identity_uint64_t(0)).toBe(0); +// expect(identity_uint64_t(100)).toBe(100); +// expect(identity_uint64_t(BigInt(100))).toBe(100); +// expect(identity_int64_t(bigIntArray[0])).toBe(bigIntArray[0]); +// expect(identity_int64_t(bigIntArray[0] - BigInt(1))).toBe( +// bigIntArray[0] - BigInt(1) +// ); + +// expect(add_char(1, 1)).toBe(2); +// expect(add_float(2.4, 2.8)).toBe(Math.fround(5.2)); +// expect(add_double(4.2, 0.1)).toBe(4.3); +// expect(add_int8_t(1, 1)).toBe(2); +// expect(add_int16_t(1, 1)).toBe(2); +// expect(add_int32_t(1, 1)).toBe(2); +// expect(add_int64_t(1, 1)).toBe(2); +// expect(add_uint8_t(1, 1)).toBe(2); +// expect(add_uint16_t(1, 1)).toBe(2); +// expect(add_uint32_t(1, 1)).toBe(2); + +// const cptr = ptr_should_point_to_42_as_int32_t(); +// expect(cptr != 0).toBe(true); +// expect(typeof cptr === "number").toBe(true); +// expect(does_pointer_equal_42_as_int32_t(cptr)).toBe(true); +// const buffer = toBuffer(cptr, 0, 4); +// expect(buffer.readInt32(0)).toBe(42); +// expect(new DataView(toArrayBuffer(cptr, 0, 4), 0, 4).getInt32(0, true)).toBe( +// 42 +// ); +// expect(ptr(buffer)).toBe(cptr); +// expect(new CString(cptr, 0, 1).toString()).toBe("*"); +// expect(identity_ptr(cptr)).toBe(cptr); +// const second_ptr = ptr(new Buffer(8)); +// expect(identity_ptr(second_ptr)).toBe(second_ptr); + +// var myCFunction = new CFunction({ +// ptr: return_a_function_ptr_to_function_that_returns_true(), +// returns: "bool", +// }); +// expect(myCFunction()).toBe(true); + +// // function identityBool() { +// // return true; +// // } +// // globalThis.identityBool = identityBool; + +// // const first = native.callback( +// // { +// // returns: "bool", +// // }, +// // identityBool +// // ); +// // expect( +// // cb_identity_true() +// // ).toBe(true); + +// // expect(cb_identity_true(first)).toBe(true); + +// // expect( +// // cb_identity_false( +// // callback( +// // { +// // returns: "bool", +// // }, +// // () => false +// // ) +// // ) +// // ).toBe(false); + +// // expect( +// // cb_identity_42_char( +// // callback( +// // { +// // returns: "char", +// // }, +// // () => 42 +// // ) +// // ) +// // ).toBe(42); +// // expect( +// // cb_identity_42_uint8_t( +// // callback( +// // { +// // returns: "uint8_t", +// // }, +// // () => 42 +// // ) +// // ) +// // ).toBe(42); + +// // cb_identity_neg_42_int8_t( +// // callback( +// // { +// // returns: "int8_t", +// // }, +// // () => -42 +// // ) +// // ).toBe(-42); + +// // cb_identity_42_uint16_t( +// // callback( +// // { +// // returns: "uint16_t", +// // }, +// // () => 42 +// // ) +// // ).toBe(42); + +// // cb_identity_42_uint32_t( +// // callback( +// // { +// // returns: "uint32_t", +// // }, +// // () => 42 +// // ) +// // ).toBe(42); + +// // cb_identity_neg_42_int16_t( +// // callback( +// // { +// // returns: "int16_t", +// // }, +// // () => -42 +// // ) +// // ).toBe(-42); + +// // cb_identity_neg_42_int32_t( +// // callback( +// // { +// // returns: "int32_t", +// // }, +// // () => -42 +// // ) +// // ).toBe(-42); + +// close(); +// } + +// it("run ffi fast", () => { +// ffiRunner(getTypes(true)); +// }); + +// it("run ffi", () => { +// ffiRunner(getTypes(false)); +// }); diff --git a/test/bun.js/fs-stream.js b/test/bun.js/fs-stream.js new file mode 100644 index 000000000..4b71c95b7 --- /dev/null +++ b/test/bun.js/fs-stream.js @@ -0,0 +1,23 @@ +import { createReadStream, createWriteStream, readFileSync } from "fs"; + +await new Promise((resolve, reject) => { + createReadStream("fs-stream.js") + .pipe(createWriteStream("/tmp/fs-stream.copy.js")) + .once("error", (err) => reject(err)) + .once("finish", () => { + try { + const copied = readFileSync("/tmp/fs-stream.copy.js", "utf8"); + const real = readFileSync("/tmp/fs-stream.js", "utf8"); + if (copied !== real) { + reject( + new Error("fs-stream.js is not the same as fs-stream.copy.js") + ); + return; + } + + resolve(true); + } catch (err) { + reject(err); + } + }); +}); diff --git a/test/bun.js/fs.test.js b/test/bun.js/fs.test.js new file mode 100644 index 000000000..79ac60eaa --- /dev/null +++ b/test/bun.js/fs.test.js @@ -0,0 +1,244 @@ +import { gc } from "bun"; +import { describe, expect, it } from "bun:test"; +import { + closeSync, + existsSync, + mkdirSync, + openSync, + readdirSync, + readFile, + readFileSync, + readSync, + writeFileSync, + writeSync, +} from "node:fs"; + +const Buffer = globalThis.Buffer || Uint8Array; + +if (!import.meta.dir) { + import.meta.dir = "."; +} + +describe("mkdirSync", () => { + it("should create a directory", () => { + const tempdir = `/tmp/fs.test.js/${Date.now()}/1234/hi`; + expect(existsSync(tempdir)).toBe(false); + expect(tempdir.includes(mkdirSync(tempdir, { recursive: true }))).toBe( + true + ); + expect(existsSync(tempdir)).toBe(true); + }); +}); + +it("readdirSync on import.meta.dir", () => { + const dirs = readdirSync(import.meta.dir); + expect(dirs.length > 0).toBe(true); + var match = false; + gc(true); + for (let i = 0; i < dirs.length; i++) { + if (dirs[i] === import.meta.file) { + match = true; + } + } + gc(true); + expect(match).toBe(true); +}); + +it("readdirSync on import.meta.dir with trailing slash", () => { + const dirs = readdirSync(import.meta.dir + "/"); + expect(dirs.length > 0).toBe(true); + // this file should exist in it + var match = false; + for (let i = 0; i < dirs.length; i++) { + if (dirs[i] === import.meta.file) { + match = true; + } + } + expect(match).toBe(true); +}); + +it("readdirSync works on empty directories", () => { + const path = `/tmp/fs-test-empty-dir-${( + Math.random() * 100000 + + 100 + ).toString(32)}`; + mkdirSync(path, { recursive: true }); + expect(readdirSync(path).length).toBe(0); +}); + +it("readdirSync works on directories with under 32 files", () => { + const path = `/tmp/fs-test-one-dir-${(Math.random() * 100000 + 100).toString( + 32 + )}`; + mkdirSync(path, { recursive: true }); + writeFileSync(`${path}/a`, "a"); + const results = readdirSync(path); + expect(results.length).toBe(1); + expect(results[0]).toBe("a"); +}); + +it("readdirSync throws when given a file path", () => { + try { + readdirSync(import.meta.path); + throw new Error("should not get here"); + } catch (exception) { + expect(exception.name).toBe("ENOTDIR"); + } +}); + +it("readdirSync throws when given a path that doesn't exist", () => { + try { + readdirSync(import.meta.path + "/does-not-exist/really"); + throw new Error("should not get here"); + } catch (exception) { + expect(exception.name).toBe("ENOTDIR"); + } +}); + +it("readdirSync throws when given a file path with trailing slash", () => { + try { + readdirSync(import.meta.path + "/"); + throw new Error("should not get here"); + } catch (exception) { + expect(exception.name).toBe("ENOTDIR"); + } +}); + +describe("readSync", () => { + const firstFourBytes = new Uint32Array( + new TextEncoder().encode("File").buffer + )[0]; + it("works with a position set to 0", () => { + const fd = openSync(import.meta.dir + "/readFileSync.txt", "r"); + const four = new Uint8Array(4); + + { + const count = readSync(fd, four, 0, 4, 0); + const u32 = new Uint32Array(four.buffer)[0]; + expect(u32).toBe(firstFourBytes); + expect(count).toBe(4); + } + closeSync(fd); + }); + it("works without position set", () => { + const fd = openSync(import.meta.dir + "/readFileSync.txt", "r"); + const four = new Uint8Array(4); + { + const count = readSync(fd, four); + const u32 = new Uint32Array(four.buffer)[0]; + expect(u32).toBe(firstFourBytes); + expect(count).toBe(4); + } + closeSync(fd); + }); +}); + +describe("writeSync", () => { + it("works with a position set to 0", () => { + const fd = openSync(import.meta.dir + "/writeFileSync.txt", "w+"); + const four = new Uint8Array(4); + + { + const count = writeSync(fd, new TextEncoder().encode("File"), 0, 4, 0); + expect(count).toBe(4); + } + closeSync(fd); + }); + it("works without position set", () => { + const fd = openSync(import.meta.dir + "/writeFileSync.txt", "w+"); + const four = new Uint8Array(4); + { + const count = writeSync(fd, new TextEncoder().encode("File")); + expect(count).toBe(4); + } + closeSync(fd); + }); +}); + +describe("readFileSync", () => { + it("works", () => { + const text = readFileSync(import.meta.dir + "/readFileSync.txt", "utf8"); + expect(text).toBe("File read successfully"); + }); + + it("works with a file url", () => { + const text = readFileSync( + new URL("file://" + import.meta.dir + "/readFileSync.txt"), + "utf8" + ); + expect(text).toBe("File read successfully"); + }); + + it("returning Buffer works", () => { + const text = readFileSync(import.meta.dir + "/readFileSync.txt"); + const encoded = [ + 70, 105, 108, 101, 32, 114, 101, 97, 100, 32, 115, 117, 99, 99, 101, 115, + 115, 102, 117, 108, 108, 121, + ]; + for (let i = 0; i < encoded.length; i++) { + expect(text[i]).toBe(encoded[i]); + } + }); +}); + +describe("readFile", () => { + it("works", async () => { + await new Promise((resolve, reject) => { + readFile(import.meta.dir + "/readFileSync.txt", "utf8", (err, text) => { + expect(text).toBe("File read successfully"); + resolve(true); + }); + }); + }); + + it("returning Buffer works", async () => { + await new Promise((resolve, reject) => { + readFile(import.meta.dir + "/readFileSync.txt", (err, text) => { + const encoded = [ + 70, 105, 108, 101, 32, 114, 101, 97, 100, 32, 115, 117, 99, 99, 101, + 115, 115, 102, 117, 108, 108, 121, + ]; + for (let i = 0; i < encoded.length; i++) { + expect(text[i]).toBe(encoded[i]); + } + resolve(true); + }); + }); + }); +}); + +describe("writeFileSync", () => { + it("works", () => { + const path = `/tmp/${Date.now()}.writeFileSync.txt`; + writeFileSync(path, "File written successfully", "utf8"); + + expect(readFileSync(path, "utf8")).toBe("File written successfully"); + }); + + it("returning Buffer works", () => { + const buffer = new Buffer([ + 70, 105, 108, 101, 32, 119, 114, 105, 116, 116, 101, 110, 32, 115, 117, + 99, 99, 101, 115, 115, 102, 117, 108, 108, 121, + ]); + const path = `/tmp/${Date.now()}.blob.writeFileSync.txt`; + writeFileSync(path, buffer); + const out = readFileSync(path); + + for (let i = 0; i < buffer.length; i++) { + expect(buffer[i]).toBe(out[i]); + } + }); + it("returning ArrayBuffer works", () => { + const buffer = new Buffer([ + 70, 105, 108, 101, 32, 119, 114, 105, 116, 116, 101, 110, 32, 115, 117, + 99, 99, 101, 115, 115, 102, 117, 108, 108, 121, + ]); + const path = `/tmp/${Date.now()}.blob2.writeFileSync.txt`; + writeFileSync(path, buffer); + const out = readFileSync(path); + + for (let i = 0; i < buffer.length; i++) { + expect(buffer[i]).toBe(out[i]); + } + }); +}); diff --git a/test/bun.js/gc.js b/test/bun.js/gc.js new file mode 100644 index 000000000..9212e8b76 --- /dev/null +++ b/test/bun.js/gc.js @@ -0,0 +1,15 @@ +export function gc() { + // console.trace("GC"); + Bun.gc(true); +} + +// we must ensure that finalizers are run +// so that the reference-counting logic is exercised +export function gcTick(trace = false) { + trace && console.trace(""); + // console.trace("hello"); + gc(); + return new Promise((resolve) => { + setTimeout(resolve, 0); + }); +} diff --git a/test/bun.js/globals.test.js b/test/bun.js/globals.test.js new file mode 100644 index 000000000..b498e0e8e --- /dev/null +++ b/test/bun.js/globals.test.js @@ -0,0 +1,39 @@ +import { it, describe, expect } from "bun:test"; + +it("extendable", () => { + const classes = [ + Blob, + TextDecoder, + TextEncoder, + Request, + Response, + Headers, + HTMLRewriter, + Bun.Transpiler, + ]; + // None of these should error + for (let Class of classes) { + var Foo = class extends Class {}; + var bar = new Foo(); + expect(bar instanceof Class).toBe(true); + expect(!!Class.prototype).toBe(true); + expect(typeof Class.prototype).toBe("object"); + } + expect(true).toBe(true); +}); + +it("name", () => { + const classes = [ + ["Blob", Blob], + ["TextDecoder", TextDecoder], + ["TextEncoder", TextEncoder], + ["Request", Request], + ["Response", Response], + ["Headers", Headers], + ["HTMLRewriter", HTMLRewriter], + ["Transpiler", Bun.Transpiler], + ]; + for (let [name, Class] of classes) { + expect(Class.name).toBe(name); + } +}); diff --git a/test/bun.js/hash.test.js b/test/bun.js/hash.test.js new file mode 100644 index 000000000..71ad5a229 --- /dev/null +++ b/test/bun.js/hash.test.js @@ -0,0 +1,36 @@ +import fs from "fs"; +import { it, expect } from "bun:test"; +import path from "path"; + +it(`Bun.hash()`, () => { + Bun.hash("hello world"); + Bun.hash(new TextEncoder().encode("hello world")); +}); +it(`Bun.hash.wyhash()`, () => { + Bun.hash.wyhash("hello world"); + Bun.hash.wyhash(new TextEncoder().encode("hello world")); +}); +it(`Bun.hash.adler32()`, () => { + Bun.hash.adler32("hello world"); + Bun.hash.adler32(new TextEncoder().encode("hello world")); +}); +it(`Bun.hash.crc32()`, () => { + Bun.hash.crc32("hello world"); + Bun.hash.crc32(new TextEncoder().encode("hello world")); +}); +it(`Bun.hash.cityHash32()`, () => { + Bun.hash.cityHash32("hello world"); + Bun.hash.cityHash32(new TextEncoder().encode("hello world")); +}); +it(`Bun.hash.cityHash64()`, () => { + Bun.hash.cityHash64("hello world"); + Bun.hash.cityHash64(new TextEncoder().encode("hello world")); +}); +it(`Bun.hash.murmur32v3()`, () => { + Bun.hash.murmur32v3("hello world"); + Bun.hash.murmur32v3(new TextEncoder().encode("hello world")); +}); +it(`Bun.hash.murmur64v2()`, () => { + Bun.hash.murmur64v2("hello world"); + Bun.hash.murmur64v2(new TextEncoder().encode("hello world")); +}); diff --git a/test/bun.js/html-rewriter.test.js b/test/bun.js/html-rewriter.test.js new file mode 100644 index 000000000..29b765c2f --- /dev/null +++ b/test/bun.js/html-rewriter.test.js @@ -0,0 +1,293 @@ +import { describe, it, expect } from "bun:test"; +import { gcTick } from "./gc"; + +var setTimeoutAsync = (fn, delay) => { + return new Promise((resolve, reject) => { + setTimeout(() => { + try { + resolve(fn()); + } catch (e) { + reject(e); + } + }, delay); + }); +}; + +describe("HTMLRewriter", () => { + it("HTMLRewriter: async replacement", async () => { + await gcTick(); + const res = new HTMLRewriter() + .on("div", { + async element(element) { + await setTimeoutAsync(() => { + element.setInnerContent("<span>replace</span>", { html: true }); + }, 5); + }, + }) + .transform(new Response("<div>example.com</div>")); + await gcTick(); + expect(await res.text()).toBe("<div><span>replace</span></div>"); + await gcTick(); + }); + + it("supports element handlers", async () => { + var rewriter = new HTMLRewriter(); + rewriter.on("div", { + element(element) { + element.setInnerContent("<blink>it worked!</blink>", { html: true }); + }, + }); + var input = new Response("<div>hello</div>"); + var output = rewriter.transform(input); + expect(await output.text()).toBe("<div><blink>it worked!</blink></div>"); + }); + + it("(from file) supports element handlers", async () => { + var rewriter = new HTMLRewriter(); + rewriter.on("div", { + element(element) { + element.setInnerContent("<blink>it worked!</blink>", { html: true }); + }, + }); + await Bun.write("/tmp/html-rewriter.txt.js", "<div>hello</div>"); + var input = new Response(Bun.file("/tmp/html-rewriter.txt.js")); + var output = rewriter.transform(input); + expect(await output.text()).toBe("<div><blink>it worked!</blink></div>"); + }); + + it("supports attribute iterator", async () => { + var rewriter = new HTMLRewriter(); + var expected = [ + ["first", ""], + ["second", "alrihgt"], + ["third", "123"], + ["fourth", "5"], + ["fifth", "helloooo"], + ]; + rewriter.on("div", { + element(element2) { + for (let attr of element2.attributes) { + const stack = expected.shift(); + expect(stack[0]).toBe(attr[0]); + expect(stack[1]).toBe(attr[1]); + } + }, + }); + var input = new Response( + '<div first second="alrihgt" third="123" fourth=5 fifth=helloooo>hello</div>' + ); + var output = rewriter.transform(input); + expect(await output.text()).toBe( + '<div first second="alrihgt" third="123" fourth=5 fifth=helloooo>hello</div>' + ); + expect(expected.length).toBe(0); + }); + + it("handles element specific mutations", async () => { + // prepend/append + let res = new HTMLRewriter() + .on("p", { + element(element) { + element.prepend("<span>prepend</span>"); + element.prepend("<span>prepend html</span>", { html: true }); + element.append("<span>append</span>"); + element.append("<span>append html</span>", { html: true }); + }, + }) + .transform(new Response("<p>test</p>")); + expect(await res.text()).toBe( + [ + "<p>", + "<span>prepend html</span>", + "<span>prepend</span>", + "test", + "<span>append</span>", + "<span>append html</span>", + "</p>", + ].join("") + ); + + // setInnerContent + res = new HTMLRewriter() + .on("p", { + element(element) { + element.setInnerContent("<span>replace</span>"); + }, + }) + .transform(new Response("<p>test</p>")); + expect(await res.text()).toBe("<p><span>replace</span></p>"); + res = new HTMLRewriter() + .on("p", { + element(element) { + element.setInnerContent("<span>replace</span>", { html: true }); + }, + }) + .transform(new Response("<p>test</p>")); + expect(await res.text()).toBe("<p><span>replace</span></p>"); + + // removeAndKeepContent + res = new HTMLRewriter() + .on("p", { + element(element) { + element.removeAndKeepContent(); + }, + }) + .transform(new Response("<p>test</p>")); + expect(await res.text()).toBe("test"); + }); + + it("handles element class properties", async () => { + class Handler { + constructor(content) { + this.content = content; + } + + // noinspection JSUnusedGlobalSymbols + element(element) { + element.setInnerContent(this.content); + } + } + const res = new HTMLRewriter() + .on("p", new Handler("new")) + .transform(new Response("<p>test</p>")); + expect(await res.text()).toBe("<p>new</p>"); + }); + + const commentsMutationsInput = "<p><!--test--></p>"; + const commentsMutationsExpected = { + beforeAfter: [ + "<p>", + "<span>before</span>", + "<span>before html</span>", + "<!--test-->", + "<span>after html</span>", + "<span>after</span>", + "</p>", + ].join(""), + replace: "<p><span>replace</span></p>", + replaceHtml: "<p><span>replace</span></p>", + remove: "<p></p>", + }; + + const commentPropertiesMacro = async (func) => { + const res = func(new HTMLRewriter(), (comment) => { + expect(comment.removed).toBe(false); + expect(comment.text).toBe("test"); + comment.text = "new"; + expect(comment.text).toBe("new"); + }).transform(new Response("<p><!--test--></p>")); + expect(await res.text()).toBe("<p><!--new--></p>"); + }; + + it("HTMLRewriter: handles comment properties", () => + commentPropertiesMacro((rw, comments) => { + rw.on("p", { comments }); + return rw; + })); + + it("selector tests", async () => { + const checkSelector = async (selector, input, expected) => { + const res = new HTMLRewriter() + .on(selector, { + element(element) { + element.setInnerContent("new"); + }, + }) + .transform(new Response(input)); + expect(await res.text()).toBe(expected); + }; + + await checkSelector("*", "<h1>1</h1><p>2</p>", "<h1>new</h1><p>new</p>"); + await checkSelector("p", "<h1>1</h1><p>2</p>", "<h1>1</h1><p>new</p>"); + await checkSelector( + "p:nth-child(2)", + "<div><p>1</p><p>2</p><p>3</p></div>", + "<div><p>1</p><p>new</p><p>3</p></div>" + ); + await checkSelector( + "p:first-child", + "<div><p>1</p><p>2</p><p>3</p></div>", + "<div><p>new</p><p>2</p><p>3</p></div>" + ); + await checkSelector( + "p:nth-of-type(2)", + "<div><p>1</p><h1>2</h1><p>3</p><h1>4</h1><p>5</p></div>", + "<div><p>1</p><h1>2</h1><p>new</p><h1>4</h1><p>5</p></div>" + ); + await checkSelector( + "p:first-of-type", + "<div><h1>1</h1><p>2</p><p>3</p></div>", + "<div><h1>1</h1><p>new</p><p>3</p></div>" + ); + await checkSelector( + "p:not(:first-child)", + "<div><p>1</p><p>2</p><p>3</p></div>", + "<div><p>1</p><p>new</p><p>new</p></div>" + ); + await checkSelector( + "p.red", + '<p class="red">1</p><p>2</p>', + '<p class="red">new</p><p>2</p>' + ); + await checkSelector( + "h1#header", + '<h1 id="header">1</h1><h1>2</h1>', + '<h1 id="header">new</h1><h1>2</h1>' + ); + await checkSelector( + "p[data-test]", + "<p data-test>1</p><p>2</p>", + "<p data-test>new</p><p>2</p>" + ); + await checkSelector( + 'p[data-test="one"]', + '<p data-test="one">1</p><p data-test="two">2</p>', + '<p data-test="one">new</p><p data-test="two">2</p>' + ); + await checkSelector( + 'p[data-test="one" i]', + '<p data-test="one">1</p><p data-test="OnE">2</p><p data-test="two">3</p>', + '<p data-test="one">new</p><p data-test="OnE">new</p><p data-test="two">3</p>' + ); + await checkSelector( + 'p[data-test="one" s]', + '<p data-test="one">1</p><p data-test="OnE">2</p><p data-test="two">3</p>', + '<p data-test="one">new</p><p data-test="OnE">2</p><p data-test="two">3</p>' + ); + await checkSelector( + 'p[data-test~="two"]', + '<p data-test="one two three">1</p><p data-test="one two">2</p><p data-test="one">3</p>', + '<p data-test="one two three">new</p><p data-test="one two">new</p><p data-test="one">3</p>' + ); + await checkSelector( + 'p[data-test^="a"]', + '<p data-test="a1">1</p><p data-test="a2">2</p><p data-test="b1">3</p>', + '<p data-test="a1">new</p><p data-test="a2">new</p><p data-test="b1">3</p>' + ); + await checkSelector( + 'p[data-test$="1"]', + '<p data-test="a1">1</p><p data-test="a2">2</p><p data-test="b1">3</p>', + '<p data-test="a1">new</p><p data-test="a2">2</p><p data-test="b1">new</p>' + ); + await checkSelector( + 'p[data-test*="b"]', + '<p data-test="abc">1</p><p data-test="ab">2</p><p data-test="a">3</p>', + '<p data-test="abc">new</p><p data-test="ab">new</p><p data-test="a">3</p>' + ); + await checkSelector( + 'p[data-test|="a"]', + '<p data-test="a">1</p><p data-test="a-1">2</p><p data-test="a2">3</p>', + '<p data-test="a">new</p><p data-test="a-1">new</p><p data-test="a2">3</p>' + ); + await checkSelector( + "div span", + "<div><h1><span>1</span></h1><span>2</span><b>3</b></div>", + "<div><h1><span>new</span></h1><span>new</span><b>3</b></div>" + ); + await checkSelector( + "div > span", + "<div><h1><span>1</span></h1><span>2</span><b>3</b></div>", + "<div><h1><span>1</span></h1><span>new</span><b>3</b></div>" + ); + }); +}); diff --git a/test/bun.js/import-meta.test.js b/test/bun.js/import-meta.test.js new file mode 100644 index 000000000..0e2faa903 --- /dev/null +++ b/test/bun.js/import-meta.test.js @@ -0,0 +1,33 @@ +import { it, expect } from "bun:test"; +import * as Module from "node:module"; +import sync from "./require-json.json"; + +const { path, dir } = import.meta; + +it("import.meta.resolveSync", () => { + expect( + import.meta.resolveSync("./" + import.meta.file, import.meta.path) + ).toBe(path); + const require = Module.createRequire(import.meta.path); + expect(require.resolve(import.meta.path)).toBe(path); + expect(require.resolve("./" + import.meta.file)).toBe(path); + + // check it works with URL objects + expect( + Module.createRequire(new URL(import.meta.url)).resolve(import.meta.path) + ).toBe(import.meta.path); +}); + +it("import.meta.require", () => { + expect(import.meta.require("./require-json.json").hello).toBe(sync.hello); + const require = Module.createRequire(import.meta.path); + expect(require("./require-json.json").hello).toBe(sync.hello); +}); + +it("import.meta.dir", () => { + expect(dir.endsWith("/bun/test/bun.js")).toBe(true); +}); + +it("import.meta.path", () => { + expect(path.endsWith("/bun/test/bun.js/import-meta.test.js")).toBe(true); +}); diff --git a/test/bun.js/inline.macro.js b/test/bun.js/inline.macro.js new file mode 100644 index 000000000..ff0292d0a --- /dev/null +++ b/test/bun.js/inline.macro.js @@ -0,0 +1,3 @@ +export function whatDidIPass(expr, ctx) { + return ctx; +} diff --git a/test/bun.js/inspect.test.js b/test/bun.js/inspect.test.js new file mode 100644 index 000000000..bf5021c33 --- /dev/null +++ b/test/bun.js/inspect.test.js @@ -0,0 +1,96 @@ +import { it, expect } from "bun:test"; + +it("jsx with two elements", () => { + const input = Bun.inspect( + <div hello="quoted"> + <input type="text" value={"123"} /> + string inside child + </div> + ); + + const output = `<div hello="quoted"> + <input type="text" value="123" /> + string inside child +</div>`; + + expect(input).toBe(output); +}); + +const Foo = () => <div hello="quoted">foo</div>; + +it("jsx with anon component", () => { + const input = Bun.inspect(<Foo />); + + const output = `<NoName />`; + + expect(input).toBe(output); +}); + +it("jsx with fragment", () => { + const input = Bun.inspect(<>foo bar</>); + + const output = `<>foo bar</>`; + + expect(input).toBe(output); +}); + +it("inspect", () => { + expect(Bun.inspect(new TypeError("what")).includes("TypeError: what")).toBe( + true + ); + expect("hi").toBe("hi"); + expect(Bun.inspect(1)).toBe("1"); + expect(Bun.inspect(1, "hi")).toBe("1 hi"); + expect(Bun.inspect([])).toBe("[]"); + expect(Bun.inspect({})).toBe("{ }"); + expect(Bun.inspect({ hello: 1 })).toBe("{ hello: 1 }"); + expect(Bun.inspect({ hello: 1, there: 2 })).toBe("{ hello: 1, there: 2 }"); + expect(Bun.inspect({ hello: "1", there: 2 })).toBe( + '{ hello: "1", there: 2 }' + ); + expect(Bun.inspect({ 'hello-"there': "1", there: 2 })).toBe( + '{ "hello-\\"there": "1", there: 2 }' + ); + var str = "123"; + while (str.length < 4096) { + str += "123"; + } + expect(Bun.inspect(str)).toBe(str); + // expect(Bun.inspect(new Headers())).toBe("Headers (0 KB) {}"); + expect(Bun.inspect(new Response()).length > 0).toBe(true); + // expect( + // JSON.stringify( + // new Headers({ + // hi: "ok", + // }) + // ) + // ).toBe('{"hi":"ok"}'); + expect(Bun.inspect(new Set())).toBe("Set {}"); + expect(Bun.inspect(new Map())).toBe("Map {}"); + expect(Bun.inspect(new Map([["foo", "bar"]]))).toBe( + 'Map(1) {\n "foo": "bar",\n}' + ); + expect(Bun.inspect(new Set(["bar"]))).toBe('Set(1) {\n "bar",\n}'); + expect(Bun.inspect(<div>foo</div>)).toBe("<div>foo</div>"); + expect(Bun.inspect(<div hello>foo</div>)).toBe("<div hello=true>foo</div>"); + expect(Bun.inspect(<div hello={1}>foo</div>)).toBe("<div hello=1>foo</div>"); + expect(Bun.inspect(<div hello={123}>hi</div>)).toBe( + "<div hello=123>hi</div>" + ); + expect(Bun.inspect(<div hello="quoted">quoted</div>)).toBe( + '<div hello="quoted">quoted</div>' + ); + expect( + Bun.inspect( + <div hello="quoted"> + <input type="text" value={"123"} /> + </div> + ) + ).toBe( + ` +<div hello="quoted"> + <input type="text" value="123" /> +</div>`.trim() + ); + expect(Bun.inspect(BigInt(32))).toBe("32n"); +}); diff --git a/test/bun.js/macro-check.js b/test/bun.js/macro-check.js new file mode 100644 index 000000000..0f494a4e7 --- /dev/null +++ b/test/bun.js/macro-check.js @@ -0,0 +1,7 @@ +export function keepSecondArgument(bacon1234) { + return bacon1234.arguments[1]; +} + +export function bacon(heloooo) { + return heloooo.arguments[1]; +} diff --git a/test/bun.js/microtask.test.js b/test/bun.js/microtask.test.js new file mode 100644 index 000000000..18956b1e5 --- /dev/null +++ b/test/bun.js/microtask.test.js @@ -0,0 +1,80 @@ +import { it } from "bun:test"; + +it("queueMicrotask", async () => { + // You can verify this test is correct by copy pasting this into a browser's console and checking it doesn't throw an error. + var run = 0; + + await new Promise((resolve, reject) => { + queueMicrotask(() => { + if (run++ != 0) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + queueMicrotask(() => { + if (run++ != 3) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + }); + }); + queueMicrotask(() => { + if (run++ != 1) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + queueMicrotask(() => { + if (run++ != 4) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + + queueMicrotask(() => { + if (run++ != 6) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + }); + }); + }); + queueMicrotask(() => { + if (run++ != 2) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + queueMicrotask(() => { + if (run++ != 5) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + + queueMicrotask(() => { + if (run++ != 7) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + resolve(true); + }); + }); + }); + }); + + { + var passed = false; + try { + queueMicrotask(1234); + } catch (exception) { + passed = exception instanceof TypeError; + } + + if (!passed) + throw new Error( + "queueMicrotask should throw a TypeError if the argument is not a function" + ); + } + + { + var passed = false; + try { + queueMicrotask(); + } catch (exception) { + passed = exception instanceof TypeError; + } + + if (!passed) + throw new Error( + "queueMicrotask should throw a TypeError if the argument is empty" + ); + } +}); diff --git a/test/bun.js/mmap.test.js b/test/bun.js/mmap.test.js new file mode 100644 index 000000000..2b15a4000 --- /dev/null +++ b/test/bun.js/mmap.test.js @@ -0,0 +1,69 @@ +import { describe, it, expect } from "bun:test"; +import { gcTick } from "./gc"; + +describe("Bun.mmap", async () => { + await gcTick(); + const path = `/tmp/bun-mmap-test_${Math.random()}.txt`; + await gcTick(); + await Bun.write(path, "hello"); + await gcTick(); + + it("mmap finalizer", async () => { + let map = Bun.mmap(path); + await gcTick(); + const map2 = Bun.mmap(path); + + map = null; + await gcTick(); + }); + + it("mmap passed to other syscalls", async () => { + const map = Bun.mmap(path); + await gcTick(); + await Bun.write(path + "1", map); + await gcTick(); + const text = await (await Bun.file(path + "1")).text(); + await gcTick(); + + expect(text).toBe(new TextDecoder().decode(map)); + }); + + it("mmap sync", async () => { + const map = Bun.mmap(path); + await gcTick(); + const map2 = Bun.mmap(path); + await gcTick(); + + const old = map[0]; + await gcTick(); + map[0] = 0; + await gcTick(); + expect(map2[0]).toBe(0); + + map2[0] = old; + await gcTick(); + expect(map[0]).toBe(old); + await gcTick(); + await Bun.write(path, "olleh"); + await gcTick(); + expect(new TextDecoder().decode(map)).toBe("olleh"); + await gcTick(); + }); + + it("mmap private", async () => { + await gcTick(); + const map = Bun.mmap(path, { shared: true }); + await gcTick(); + const map2 = Bun.mmap(path, { shared: false }); + await gcTick(); + const old = map[0]; + + await gcTick(); + map2[0] = 0; + await gcTick(); + expect(map2[0]).toBe(0); + await gcTick(); + expect(map[0]).toBe(old); + await gcTick(); + }); +}); diff --git a/test/bun.js/node-builtins.test.js b/test/bun.js/node-builtins.test.js new file mode 100644 index 000000000..df31c64fc --- /dev/null +++ b/test/bun.js/node-builtins.test.js @@ -0,0 +1,16 @@ +import { describe, it, expect } from "bun:test"; + +import { EventEmitter } from "events"; + +describe("EventEmitter", () => { + it("should emit events", () => { + const emitter = new EventEmitter(); + var called = false; + const listener = () => { + called = true; + }; + emitter.on("test", listener); + emitter.emit("test"); + expect(called).toBe(true); + }); +}); diff --git a/test/bun.js/path.test.js b/test/bun.js/path.test.js new file mode 100644 index 000000000..997368150 --- /dev/null +++ b/test/bun.js/path.test.js @@ -0,0 +1,457 @@ +const { file } = import.meta; + +import { describe, it, expect } from "bun:test"; +import * as path from "node:path"; +import assert from "assert"; + +const strictEqual = (...args) => { + assert.strictEqual(...args); + expect(true).toBe(true); +}; + +it("path.basename", () => { + strictEqual(path.basename(file), "path.test.js"); + strictEqual(path.basename(file, ".js"), "path.test"); + strictEqual(path.basename(".js", ".js"), ""); + strictEqual(path.basename(""), ""); + strictEqual(path.basename("/dir/basename.ext"), "basename.ext"); + strictEqual(path.basename("/basename.ext"), "basename.ext"); + strictEqual(path.basename("basename.ext"), "basename.ext"); + strictEqual(path.basename("basename.ext/"), "basename.ext"); + strictEqual(path.basename("basename.ext//"), "basename.ext"); + strictEqual(path.basename("aaa/bbb", "/bbb"), "bbb"); + strictEqual(path.basename("aaa/bbb", "a/bbb"), "bbb"); + strictEqual(path.basename("aaa/bbb", "bbb"), "bbb"); + strictEqual(path.basename("aaa/bbb//", "bbb"), "bbb"); + strictEqual(path.basename("aaa/bbb", "bb"), "b"); + strictEqual(path.basename("aaa/bbb", "b"), "bb"); + strictEqual(path.basename("/aaa/bbb", "/bbb"), "bbb"); + strictEqual(path.basename("/aaa/bbb", "a/bbb"), "bbb"); + strictEqual(path.basename("/aaa/bbb", "bbb"), "bbb"); + strictEqual(path.basename("/aaa/bbb//", "bbb"), "bbb"); + strictEqual(path.basename("/aaa/bbb", "bb"), "b"); + strictEqual(path.basename("/aaa/bbb", "b"), "bb"); + strictEqual(path.basename("/aaa/bbb"), "bbb"); + strictEqual(path.basename("/aaa/"), "aaa"); + strictEqual(path.basename("/aaa/b"), "b"); + strictEqual(path.basename("/a/b"), "b"); + strictEqual(path.basename("//a"), "a"); + strictEqual(path.basename("a", "a"), ""); + + // // On Windows a backslash acts as a path separator. + strictEqual(path.win32.basename("\\dir\\basename.ext"), "basename.ext"); + strictEqual(path.win32.basename("\\basename.ext"), "basename.ext"); + strictEqual(path.win32.basename("basename.ext"), "basename.ext"); + strictEqual(path.win32.basename("basename.ext\\"), "basename.ext"); + strictEqual(path.win32.basename("basename.ext\\\\"), "basename.ext"); + strictEqual(path.win32.basename("foo"), "foo"); + strictEqual(path.win32.basename("aaa\\bbb", "\\bbb"), "bbb"); + strictEqual(path.win32.basename("aaa\\bbb", "a\\bbb"), "bbb"); + strictEqual(path.win32.basename("aaa\\bbb", "bbb"), "bbb"); + strictEqual(path.win32.basename("aaa\\bbb\\\\\\\\", "bbb"), "bbb"); + strictEqual(path.win32.basename("aaa\\bbb", "bb"), "b"); + strictEqual(path.win32.basename("aaa\\bbb", "b"), "bb"); + strictEqual(path.win32.basename("C:"), ""); + strictEqual(path.win32.basename("C:."), "."); + strictEqual(path.win32.basename("C:\\"), ""); + strictEqual(path.win32.basename("C:\\dir\\base.ext"), "base.ext"); + strictEqual(path.win32.basename("C:\\basename.ext"), "basename.ext"); + strictEqual(path.win32.basename("C:basename.ext"), "basename.ext"); + strictEqual(path.win32.basename("C:basename.ext\\"), "basename.ext"); + strictEqual(path.win32.basename("C:basename.ext\\\\"), "basename.ext"); + strictEqual(path.win32.basename("C:foo"), "foo"); + strictEqual(path.win32.basename("file:stream"), "file:stream"); + strictEqual(path.win32.basename("a", "a"), ""); + + // On unix a backslash is just treated as any other character. + strictEqual( + path.posix.basename("\\dir\\basename.ext"), + "\\dir\\basename.ext" + ); + strictEqual(path.posix.basename("\\basename.ext"), "\\basename.ext"); + strictEqual(path.posix.basename("basename.ext"), "basename.ext"); + strictEqual(path.posix.basename("basename.ext\\"), "basename.ext\\"); + strictEqual(path.posix.basename("basename.ext\\\\"), "basename.ext\\\\"); + strictEqual(path.posix.basename("foo"), "foo"); + + // POSIX filenames may include control characters + // c.f. http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html + const controlCharFilename = `Icon${String.fromCharCode(13)}`; + strictEqual( + path.posix.basename(`/a/b/${controlCharFilename}`), + controlCharFilename + ); +}); + +it("path.join", () => { + const failures = []; + const backslashRE = /\\/g; + + const joinTests = [ + [ + [path.posix.join], + // Arguments result + [ + [[".", "x/b", "..", "/b/c.js"], "x/b/c.js"], + // [[], '.'], + [["/.", "x/b", "..", "/b/c.js"], "/x/b/c.js"], + [["/foo", "../../../bar"], "/bar"], + [["foo", "../../../bar"], "../../bar"], + [["foo/", "../../../bar"], "../../bar"], + [["foo/x", "../../../bar"], "../bar"], + [["foo/x", "./bar"], "foo/x/bar"], + [["foo/x/", "./bar"], "foo/x/bar"], + [["foo/x/", ".", "bar"], "foo/x/bar"], + [["./"], "./"], + [[".", "./"], "./"], + [[".", ".", "."], "."], + [[".", "./", "."], "."], + [[".", "/./", "."], "."], + [[".", "/////./", "."], "."], + [["."], "."], + [["", "."], "."], + [["", "foo"], "foo"], + [["foo", "/bar"], "foo/bar"], + [["", "/foo"], "/foo"], + [["", "", "/foo"], "/foo"], + [["", "", "foo"], "foo"], + [["foo", ""], "foo"], + [["foo/", ""], "foo/"], + [["foo", "", "/bar"], "foo/bar"], + [["./", "..", "/foo"], "../foo"], + [["./", "..", "..", "/foo"], "../../foo"], + [[".", "..", "..", "/foo"], "../../foo"], + [["", "..", "..", "/foo"], "../../foo"], + [["/"], "/"], + [["/", "."], "/"], + [["/", ".."], "/"], + [["/", "..", ".."], "/"], + [[""], "."], + [["", ""], "."], + [[" /foo"], " /foo"], + [[" ", "foo"], " /foo"], + [[" ", "."], " "], + [[" ", "/"], " /"], + [[" ", ""], " "], + [["/", "foo"], "/foo"], + [["/", "/foo"], "/foo"], + [["/", "//foo"], "/foo"], + [["/", "", "/foo"], "/foo"], + [["", "/", "foo"], "/foo"], + [["", "/", "/foo"], "/foo"], + ], + ], + ]; + + // // Windows-specific join tests + // joinTests.push([ + // path.win32.join, + // joinTests[0][1].slice(0).concat([ + // // Arguments result + // // UNC path expected + // [["//foo/bar"], "\\\\foo\\bar\\"], + // [["\\/foo/bar"], "\\\\foo\\bar\\"], + // [["\\\\foo/bar"], "\\\\foo\\bar\\"], + // // UNC path expected - server and share separate + // [["//foo", "bar"], "\\\\foo\\bar\\"], + // [["//foo/", "bar"], "\\\\foo\\bar\\"], + // [["//foo", "/bar"], "\\\\foo\\bar\\"], + // // UNC path expected - questionable + // [["//foo", "", "bar"], "\\\\foo\\bar\\"], + // [["//foo/", "", "bar"], "\\\\foo\\bar\\"], + // [["//foo/", "", "/bar"], "\\\\foo\\bar\\"], + // // UNC path expected - even more questionable + // [["", "//foo", "bar"], "\\\\foo\\bar\\"], + // [["", "//foo/", "bar"], "\\\\foo\\bar\\"], + // [["", "//foo/", "/bar"], "\\\\foo\\bar\\"], + // // No UNC path expected (no double slash in first component) + // [["\\", "foo/bar"], "\\foo\\bar"], + // [["\\", "/foo/bar"], "\\foo\\bar"], + // [["", "/", "/foo/bar"], "\\foo\\bar"], + // // No UNC path expected (no non-slashes in first component - + // // questionable) + // [["//", "foo/bar"], "\\foo\\bar"], + // [["//", "/foo/bar"], "\\foo\\bar"], + // [["\\\\", "/", "/foo/bar"], "\\foo\\bar"], + // [["//"], "\\"], + // // No UNC path expected (share name missing - questionable). + // [["//foo"], "\\foo"], + // [["//foo/"], "\\foo\\"], + // [["//foo", "/"], "\\foo\\"], + // [["//foo", "", "/"], "\\foo\\"], + // // No UNC path expected (too many leading slashes - questionable) + // [["///foo/bar"], "\\foo\\bar"], + // [["////foo", "bar"], "\\foo\\bar"], + // [["\\\\\\/foo/bar"], "\\foo\\bar"], + // // Drive-relative vs drive-absolute paths. This merely describes the + // // status quo, rather than being obviously right + // [["c:"], "c:."], + // [["c:."], "c:."], + // [["c:", ""], "c:."], + // [["", "c:"], "c:."], + // [["c:.", "/"], "c:.\\"], + // [["c:.", "file"], "c:file"], + // [["c:", "/"], "c:\\"], + // [["c:", "file"], "c:\\file"], + // ]), + // ]); + joinTests.forEach((test) => { + if (!Array.isArray(test[0])) test[0] = [test[0]]; + test[0].forEach((join) => { + test[1].forEach((test) => { + const actual = join.apply(null, test[0]); + const expected = test[1]; + // For non-Windows specific tests with the Windows join(), we need to try + // replacing the slashes since the non-Windows specific tests' `expected` + // use forward slashes + let actualAlt; + let os; + if (join === path.win32.join) { + actualAlt = actual.replace(backslashRE, "/"); + os = "win32"; + } else { + os = "posix"; + } + if (actual !== expected && actualAlt !== expected) { + const delimiter = test[0].map(JSON.stringify).join(","); + const message = `path.${os}.join(${delimiter})\n expect=${JSON.stringify( + expected + )}\n actual=${JSON.stringify(actual)}`; + failures.push(`\n${message}`); + } + }); + }); + }); + strictEqual(failures.length, 0, failures.join("")); +}); + +it("path.relative", () => { + const failures = []; + + const relativeTests = [ + // [ + // path.win32.relative, + // // Arguments result + // [ + // ["c:/blah\\blah", "d:/games", "d:\\games"], + // ["c:/aaaa/bbbb", "c:/aaaa", ".."], + // ["c:/aaaa/bbbb", "c:/cccc", "..\\..\\cccc"], + // ["c:/aaaa/bbbb", "c:/aaaa/bbbb", ""], + // ["c:/aaaa/bbbb", "c:/aaaa/cccc", "..\\cccc"], + // ["c:/aaaa/", "c:/aaaa/cccc", "cccc"], + // ["c:/", "c:\\aaaa\\bbbb", "aaaa\\bbbb"], + // ["c:/aaaa/bbbb", "d:\\", "d:\\"], + // ["c:/AaAa/bbbb", "c:/aaaa/bbbb", ""], + // ["c:/aaaaa/", "c:/aaaa/cccc", "..\\aaaa\\cccc"], + // ["C:\\foo\\bar\\baz\\quux", "C:\\", "..\\..\\..\\.."], + // [ + // "C:\\foo\\test", + // "C:\\foo\\test\\bar\\package.json", + // "bar\\package.json", + // ], + // ["C:\\foo\\bar\\baz-quux", "C:\\foo\\bar\\baz", "..\\baz"], + // ["C:\\foo\\bar\\baz", "C:\\foo\\bar\\baz-quux", "..\\baz-quux"], + // ["\\\\foo\\bar", "\\\\foo\\bar\\baz", "baz"], + // ["\\\\foo\\bar\\baz", "\\\\foo\\bar", ".."], + // ["\\\\foo\\bar\\baz-quux", "\\\\foo\\bar\\baz", "..\\baz"], + // ["\\\\foo\\bar\\baz", "\\\\foo\\bar\\baz-quux", "..\\baz-quux"], + // ["C:\\baz-quux", "C:\\baz", "..\\baz"], + // ["C:\\baz", "C:\\baz-quux", "..\\baz-quux"], + // ["\\\\foo\\baz-quux", "\\\\foo\\baz", "..\\baz"], + // ["\\\\foo\\baz", "\\\\foo\\baz-quux", "..\\baz-quux"], + // ["C:\\baz", "\\\\foo\\bar\\baz", "\\\\foo\\bar\\baz"], + // ["\\\\foo\\bar\\baz", "C:\\baz", "C:\\baz"], + // ], + // ], + [ + path.posix.relative, + // Arguments result + [ + ["/var/lib", "/var", ".."], + ["/var/lib", "/bin", "../../bin"], + ["/var/lib", "/var/lib", ""], + ["/var/lib", "/var/apache", "../apache"], + ["/var/", "/var/lib", "lib"], + ["/", "/var/lib", "var/lib"], + ["/foo/test", "/foo/test/bar/package.json", "bar/package.json"], + ["/Users/a/web/b/test/mails", "/Users/a/web/b", "../.."], + ["/foo/bar/baz-quux", "/foo/bar/baz", "../baz"], + ["/foo/bar/baz", "/foo/bar/baz-quux", "../baz-quux"], + ["/baz-quux", "/baz", "../baz"], + ["/baz", "/baz-quux", "../baz-quux"], + ["/page1/page2/foo", "/", "../../.."], + ], + ], + ]; + + relativeTests.forEach((test) => { + const relative = test[0]; + test[1].forEach((test) => { + const actual = relative(test[0], test[1]); + const expected = test[2]; + if (actual !== expected) { + const os = relative === path.win32.relative ? "win32" : "posix"; + const message = `path.${os}.relative(${test + .slice(0, 2) + .map(JSON.stringify) + .join(",")})\n expect=${JSON.stringify( + expected + )}\n actual=${JSON.stringify(actual)}`; + failures.push(`\n${message}`); + } + }); + }); + + strictEqual(failures.length, 0, failures.join("")); + expect(true).toBe(true); +}); + +it("path.normalize", () => { + // strictEqual( + // path.win32.normalize("./fixtures///b/../b/c.js"), + // "fixtures\\b\\c.js" + // ); + // strictEqual(path.win32.normalize("/foo/../../../bar"), "\\bar"); + // strictEqual(path.win32.normalize("a//b//../b"), "a\\b"); + // strictEqual(path.win32.normalize("a//b//./c"), "a\\b\\c"); + // strictEqual(path.win32.normalize("a//b//."), "a\\b"); + // strictEqual( + // path.win32.normalize("//server/share/dir/file.ext"), + // "\\\\server\\share\\dir\\file.ext" + // ); + // strictEqual(path.win32.normalize("/a/b/c/../../../x/y/z"), "\\x\\y\\z"); + // strictEqual(path.win32.normalize("C:"), "C:."); + // strictEqual(path.win32.normalize("C:..\\abc"), "C:..\\abc"); + // strictEqual(path.win32.normalize("C:..\\..\\abc\\..\\def"), "C:..\\..\\def"); + // strictEqual(path.win32.normalize("C:\\."), "C:\\"); + // strictEqual(path.win32.normalize("file:stream"), "file:stream"); + // strictEqual(path.win32.normalize("bar\\foo..\\..\\"), "bar\\"); + // strictEqual(path.win32.normalize("bar\\foo..\\.."), "bar"); + // strictEqual(path.win32.normalize("bar\\foo..\\..\\baz"), "bar\\baz"); + // strictEqual(path.win32.normalize("bar\\foo..\\"), "bar\\foo..\\"); + // strictEqual(path.win32.normalize("bar\\foo.."), "bar\\foo.."); + // strictEqual(path.win32.normalize("..\\foo..\\..\\..\\bar"), "..\\..\\bar"); + // strictEqual( + // path.win32.normalize("..\\...\\..\\.\\...\\..\\..\\bar"), + // "..\\..\\bar" + // ); + // strictEqual( + // path.win32.normalize("../../../foo/../../../bar"), + // "..\\..\\..\\..\\..\\bar" + // ); + // strictEqual( + // path.win32.normalize("../../../foo/../../../bar/../../"), + // "..\\..\\..\\..\\..\\..\\" + // ); + // strictEqual( + // path.win32.normalize("../foobar/barfoo/foo/../../../bar/../../"), + // "..\\..\\" + // ); + // strictEqual( + // path.win32.normalize("../.../../foobar/../../../bar/../../baz"), + // "..\\..\\..\\..\\baz" + // ); + // strictEqual(path.win32.normalize("foo/bar\\baz"), "foo\\bar\\baz"); + + strictEqual( + path.posix.normalize("./fixtures///b/../b/c.js"), + "fixtures/b/c.js" + ); + strictEqual(path.posix.normalize("/foo/../../../bar"), "/bar"); + strictEqual(path.posix.normalize("a//b//../b"), "a/b"); + strictEqual(path.posix.normalize("a//b//./c"), "a/b/c"); + strictEqual(path.posix.normalize("a//b//."), "a/b"); + strictEqual(path.posix.normalize("/a/b/c/../../../x/y/z"), "/x/y/z"); + strictEqual(path.posix.normalize("///..//./foo/.//bar"), "/foo/bar"); + strictEqual(path.posix.normalize("bar/foo../../"), "bar/"); + strictEqual(path.posix.normalize("bar/foo../.."), "bar"); + strictEqual(path.posix.normalize("bar/foo../../baz"), "bar/baz"); + strictEqual(path.posix.normalize("bar/foo../"), "bar/foo../"); + strictEqual(path.posix.normalize("bar/foo.."), "bar/foo.."); + console.log("A"); + strictEqual(path.posix.normalize("../foo../../../bar"), "../../bar"); + console.log("B"); + strictEqual(path.posix.normalize("../.../.././.../../../bar"), "../../bar"); + strictEqual( + path.posix.normalize("../../../foo/../../../bar"), + "../../../../../bar" + ); + strictEqual( + path.posix.normalize("../../../foo/../../../bar/../../"), + "../../../../../../" + ); + strictEqual( + path.posix.normalize("../foobar/barfoo/foo/../../../bar/../../"), + "../../" + ); + strictEqual( + path.posix.normalize("../.../../foobar/../../../bar/../../baz"), + "../../../../baz" + ); + strictEqual(path.posix.normalize("foo/bar\\baz"), "foo/bar\\baz"); +}); + +it("path.resolve", () => { + const failures = []; + const slashRE = /\//g; + const backslashRE = /\\/g; + + const resolveTests = [ + // [ + // path.win32.resolve, + // // Arguments result + // [ + // [["c:/blah\\blah", "d:/games", "c:../a"], "c:\\blah\\a"], + // [["c:/ignore", "d:\\a/b\\c/d", "\\e.exe"], "d:\\e.exe"], + // [["c:/ignore", "c:/some/file"], "c:\\some\\file"], + // [["d:/ignore", "d:some/dir//"], "d:\\ignore\\some\\dir"], + // [["."], process.cwd()], + // [["//server/share", "..", "relative\\"], "\\\\server\\share\\relative"], + // [["c:/", "//"], "c:\\"], + // [["c:/", "//dir"], "c:\\dir"], + // [["c:/", "//server/share"], "\\\\server\\share\\"], + // [["c:/", "//server//share"], "\\\\server\\share\\"], + // [["c:/", "///some//dir"], "c:\\some\\dir"], + // [ + // ["C:\\foo\\tmp.3\\", "..\\tmp.3\\cycles\\root.js"], + // "C:\\foo\\tmp.3\\cycles\\root.js", + // ], + // ], + // ], + [ + path.posix.resolve, + // Arguments result + [ + [["/var/lib", "../", "file/"], "/var/file"], + [["/var/lib", "/../", "file/"], "/file"], + [["a/b/c/", "../../.."], process.cwd()], + [["."], process.cwd()], + [["/some/dir", ".", "/absolute/"], "/absolute"], + [ + ["/foo/tmp.3/", "../tmp.3/cycles/root.js"], + "/foo/tmp.3/cycles/root.js", + ], + ], + ], + ]; + const isWindows = false; + resolveTests.forEach(([resolve, tests]) => { + tests.forEach(([test, expected]) => { + const actual = resolve.apply(null, test); + let actualAlt; + const os = resolve === path.win32.resolve ? "win32" : "posix"; + if (resolve === path.win32.resolve && !isWindows) + actualAlt = actual.replace(backslashRE, "/"); + else if (resolve !== path.win32.resolve && isWindows) + actualAlt = actual.replace(slashRE, "\\"); + + const message = `path.${os}.resolve(${test + .map(JSON.stringify) + .join(",")})\n expect=${JSON.stringify( + expected + )}\n actual=${JSON.stringify(actual)}`; + if (actual !== expected && actualAlt !== expected) failures.push(message); + }); + }); + strictEqual(failures.length, 0, failures.join("\n")); +}); diff --git a/test/bun.js/performance.test.js b/test/bun.js/performance.test.js new file mode 100644 index 000000000..5e8520638 --- /dev/null +++ b/test/bun.js/performance.test.js @@ -0,0 +1,18 @@ +import { expect, it } from "bun:test"; + +it("performance.now() should be monotonic", () => { + const first = performance.now(); + const second = performance.now(); + const third = performance.now(); + const fourth = performance.now(); + const fifth = performance.now(); + const sixth = performance.now(); + expect(first < second).toBe(true); + expect(second < third).toBe(true); + expect(third < fourth).toBe(true); + expect(fourth < fifth).toBe(true); + expect(fifth < sixth).toBe(true); + expect(Bun.nanoseconds() > 0).toBe(true); + expect(Bun.nanoseconds() > sixth).toBe(true); + expect(typeof Bun.nanoseconds() === "number").toBe(true); +}); diff --git a/test/bun.js/process-nexttick.js b/test/bun.js/process-nexttick.js new file mode 100644 index 000000000..337977c0a --- /dev/null +++ b/test/bun.js/process-nexttick.js @@ -0,0 +1,91 @@ +// You can verify this test is correct by copy pasting this into a browser's console and checking it doesn't throw an error. +var run = 0; + +var queueMicrotask = process.nextTick; + +await new Promise((resolve, reject) => { + queueMicrotask(() => { + if (run++ != 0) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + queueMicrotask(() => { + if (run++ != 3) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + }); + }); + queueMicrotask(() => { + if (run++ != 1) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + queueMicrotask(() => { + if (run++ != 4) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + + queueMicrotask(() => { + if (run++ != 6) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + }); + }); + }); + queueMicrotask(() => { + if (run++ != 2) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + queueMicrotask(() => { + if (run++ != 5) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + + queueMicrotask(() => { + if (run++ != 7) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + resolve(true); + }); + }); + }); +}); + +{ + var passed = false; + try { + queueMicrotask(1234); + } catch (exception) { + passed = exception instanceof TypeError; + } + + if (!passed) + throw new Error( + "queueMicrotask should throw a TypeError if the argument is not a function" + ); +} + +{ + var passed = false; + try { + queueMicrotask(); + } catch (exception) { + passed = exception instanceof TypeError; + } + + if (!passed) + throw new Error( + "queueMicrotask should throw a TypeError if the argument is empty" + ); +} + +await new Promise((resolve, reject) => { + process.nextTick( + (first, second) => { + console.log(first, second); + if (first !== 12345 || second !== "hello") + reject(new Error("process.nextTick called with wrong arguments")); + resolve(true); + }, + 12345, + "hello" + ); +}); diff --git a/test/bun.js/process-nexttick.test.js b/test/bun.js/process-nexttick.test.js new file mode 100644 index 000000000..ac53399c0 --- /dev/null +++ b/test/bun.js/process-nexttick.test.js @@ -0,0 +1,93 @@ +import { it } from "bun:test"; + +it("process.nextTick", async () => { + // You can verify this test is correct by copy pasting this into a browser's console and checking it doesn't throw an error. + var run = 0; + var queueMicrotask = process.nextTick; + + await new Promise((resolve, reject) => { + queueMicrotask(() => { + if (run++ != 0) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + queueMicrotask(() => { + if (run++ != 3) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + }); + }); + queueMicrotask(() => { + if (run++ != 1) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + queueMicrotask(() => { + if (run++ != 4) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + + queueMicrotask(() => { + if (run++ != 6) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + }); + }); + }); + queueMicrotask(() => { + if (run++ != 2) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + queueMicrotask(() => { + if (run++ != 5) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + + queueMicrotask(() => { + if (run++ != 7) { + reject(new Error("Microtask execution order is wrong: " + run)); + } + resolve(true); + }); + }); + }); + }); + + { + var passed = false; + try { + queueMicrotask(1234); + } catch (exception) { + passed = exception instanceof TypeError; + } + + if (!passed) + throw new Error( + "queueMicrotask should throw a TypeError if the argument is not a function" + ); + } + + { + var passed = false; + try { + queueMicrotask(); + } catch (exception) { + passed = exception instanceof TypeError; + } + + if (!passed) + throw new Error( + "queueMicrotask should throw a TypeError if the argument is empty" + ); + } + + await new Promise((resolve, reject) => { + process.nextTick( + (first, second) => { + if (first !== 12345 || second !== "hello") + reject(new Error("process.nextTick called with wrong arguments")); + resolve(true); + }, + 12345, + "hello" + ); + }); +}); diff --git a/test/bun.js/process.test.js b/test/bun.js/process.test.js new file mode 100644 index 000000000..f82834a04 --- /dev/null +++ b/test/bun.js/process.test.js @@ -0,0 +1,54 @@ +import { describe, it } from "bun:test"; + +it("process", () => { + // this property isn't implemented yet but it should at least return a string + const isNode = !process.isBun; + + if (!isNode && process.title !== "bun") + throw new Error("process.title is not 'bun'"); + + if (typeof process.env.USER !== "string") + throw new Error("process.env is not an object"); + + if (process.env.USER.length === 0) + throw new Error("process.env is missing a USER property"); + + if (process.platform !== "darwin" && process.platform !== "linux") + throw new Error("process.platform is invalid"); + + if (isNode) throw new Error("process.isBun is invalid"); + + // partially to test it doesn't crash due to various strange types + process.env.BACON = "yummy"; + if (process.env.BACON !== "yummy") { + throw new Error("process.env is not writable"); + } + + delete process.env.BACON; + if (typeof process.env.BACON !== "undefined") { + throw new Error("process.env is not deletable"); + } + + process.env.BACON = "yummy"; + if (process.env.BACON !== "yummy") { + throw new Error("process.env is not re-writable"); + } + + if (JSON.parse(JSON.stringify(process.env)).BACON !== "yummy") { + throw new Error("process.env is not serializable"); + } + + if (typeof JSON.parse(JSON.stringify(process.env)).toJSON !== "undefined") { + throw new Error( + "process.env should call toJSON to hide its internal state" + ); + } + + var { env, ...proces } = process; + console.log(JSON.stringify(proces, null, 2)); + console.log(proces); + + console.log("CWD", process.cwd()); + console.log("SET CWD", process.chdir("../")); + console.log("CWD", process.cwd()); +}); diff --git a/test/bun.js/readFileSync.txt b/test/bun.js/readFileSync.txt new file mode 100644 index 000000000..ddc94b988 --- /dev/null +++ b/test/bun.js/readFileSync.txt @@ -0,0 +1 @@ +File read successfully
\ No newline at end of file diff --git a/test/bun.js/readdir.js b/test/bun.js/readdir.js new file mode 100644 index 000000000..18c111d0a --- /dev/null +++ b/test/bun.js/readdir.js @@ -0,0 +1,9 @@ +const { readdirSync } = require("fs"); + +const count = parseInt(process.env.ITERATIONS || "1", 10) || 1; + +for (let i = 0; i < count; i++) { + readdirSync("."); +} + +console.log(readdirSync(".")); diff --git a/test/bun.js/reportError.test.js b/test/bun.js/reportError.test.js new file mode 100644 index 000000000..e51f93309 --- /dev/null +++ b/test/bun.js/reportError.test.js @@ -0,0 +1,25 @@ +import { it } from "bun:test"; + +it("reportError", () => { + console.log("---BEGIN REPORT ERROR TEST--"); + // make sure we don't crash when given non-sensical types + reportError(new Error("reportError Test!")); + reportError(true); + reportError(false); + reportError(null); + reportError(123); + reportError(Infinity); + reportError(NaN); + reportError(-NaN); + reportError(""); + reportError(new Uint8Array(1)); + reportError(new Uint8Array(0)); + reportError(new ArrayBuffer(0)); + reportError(new ArrayBuffer(1)); + reportError("string"); + reportError([]); + reportError([123, null]); + reportError({}); + reportError([{}]); + console.log("---END REPORT ERROR TEST--"); +}); diff --git a/test/bun.js/require-json.json b/test/bun.js/require-json.json new file mode 100644 index 000000000..6414edc0e --- /dev/null +++ b/test/bun.js/require-json.json @@ -0,0 +1,3 @@ +{ + "hello": -123 +} diff --git a/test/bun.js/resolve-typescript-file.tsx b/test/bun.js/resolve-typescript-file.tsx new file mode 100644 index 000000000..ff8b4c563 --- /dev/null +++ b/test/bun.js/resolve-typescript-file.tsx @@ -0,0 +1 @@ +export default {}; diff --git a/test/bun.js/resolve.test.js b/test/bun.js/resolve.test.js new file mode 100644 index 000000000..56162de4f --- /dev/null +++ b/test/bun.js/resolve.test.js @@ -0,0 +1,100 @@ +import { it, expect } from "bun:test"; +import { mkdirSync, writeFileSync } from "fs"; +import { join } from "path"; + +it("import.meta.resolve", async () => { + expect(await import.meta.resolve("./resolve.test.js")).toBe(import.meta.path); + + expect(await import.meta.resolve("./resolve.test.js", import.meta.path)).toBe( + import.meta.path + ); + + expect( + // optional second param can be any path, including a dir + await import.meta.resolve( + "./bun.js/resolve.test.js", + join(import.meta.path, "../") + ) + ).toBe(import.meta.path); + + // can be a package path + expect( + (await import.meta.resolve("react", import.meta.path)).length > 0 + ).toBe(true); + + // file extensions are optional + expect(await import.meta.resolve("./resolve.test")).toBe(import.meta.path); + + // works with tsconfig.json "paths" + expect(await import.meta.resolve("foo/bar")).toBe( + join(import.meta.path, "../baz.js") + ); + + // works with package.json "exports" + writePackageJSONExportsFixture(); + expect(await import.meta.resolve("package-json-exports/baz")).toBe( + join(import.meta.path, "../node_modules/package-json-exports/foo/bar.js") + ); + + // works with TypeScript compiler edgecases like: + // - If the file ends with .js and it doesn't exist, try again with .ts and .tsx + expect(await import.meta.resolve("./resolve-typescript-file.js")).toBe( + join(import.meta.path, "../resolve-typescript-file.tsx") + ); + expect(await import.meta.resolve("./resolve-typescript-file.tsx")).toBe( + join(import.meta.path, "../resolve-typescript-file.tsx") + ); + + // throws a ResolveError on failure + try { + await import.meta.resolve("THIS FILE DOESNT EXIST"); + throw new Error("Test failed"); + } catch (exception) { + expect(exception instanceof ResolveError).toBe(true); + expect(exception.referrer).toBe(import.meta.path); + expect(exception.name).toBe("ResolveError"); + } +}); + +// the slightly lower level API, which doesn't prefill the second param +// and expects a directory instead of a filepath +it("Bun.resolve", async () => { + expect(await Bun.resolve("./resolve.test.js", import.meta.dir)).toBe( + import.meta.path + ); +}); + +// synchronous +it("Bun.resolveSync", () => { + expect(Bun.resolveSync("./resolve.test.js", import.meta.dir)).toBe( + import.meta.path + ); +}); + +function writePackageJSONExportsFixture() { + try { + mkdirSync( + join(import.meta.dir, "./node_modules/package-json-exports/foo"), + { + recursive: true, + } + ); + } catch (exception) {} + writeFileSync( + join(import.meta.dir, "./node_modules/package-json-exports/foo/bar.js"), + "export const bar = 1;" + ); + writeFileSync( + join(import.meta.dir, "./node_modules/package-json-exports/package.json"), + JSON.stringify( + { + name: "package-json-exports", + exports: { + "./baz": "./foo/bar.js", + }, + }, + null, + 2 + ) + ); +} diff --git a/test/bun.js/response.file.test.js b/test/bun.js/response.file.test.js new file mode 100644 index 000000000..2d0b6506e --- /dev/null +++ b/test/bun.js/response.file.test.js @@ -0,0 +1,218 @@ +import fs from "fs"; +import { it, expect } from "bun:test"; +import path from "path"; +import { gcTick } from "./gc"; + +it("Bun.file not found returns ENOENT", async () => { + try { + await gcTick(); + await Bun.file("/does/not/exist.txt").text(); + await gcTick(); + } catch (exception) { + expect(exception.code).toBe("ENOENT"); + } + await gcTick(); +}); + +it("Bun.write('out.txt', 'string')", async () => { + for (let erase of [true, false]) { + if (erase) { + try { + fs.unlinkSync(path.join("/tmp", "out.txt")); + } catch (e) {} + } + await gcTick(); + expect(await Bun.write("/tmp/out.txt", "string")).toBe("string".length); + await gcTick(); + const out = Bun.file("/tmp/out.txt"); + await gcTick(); + expect(await out.text()).toBe("string"); + await gcTick(); + expect(await out.text()).toBe(fs.readFileSync("/tmp/out.txt", "utf8")); + await gcTick(); + } +}); + +it("Bun.write blob", async () => { + await Bun.write( + Bun.file("/tmp/response-file.test.txt"), + Bun.file(path.join(import.meta.dir, "fetch.js.txt")) + ); + await gcTick(); + await Bun.write(Bun.file("/tmp/response-file.test.txt"), "blah blah blha"); + await gcTick(); + await Bun.write( + Bun.file("/tmp/response-file.test.txt"), + new Uint32Array(1024) + ); + await gcTick(); + await Bun.write("/tmp/response-file.test.txt", new Uint32Array(1024)); + await gcTick(); + expect( + await Bun.write( + new TextEncoder().encode("/tmp/response-file.test.txt"), + new Uint32Array(1024) + ) + ).toBe(new Uint32Array(1024).byteLength); + await gcTick(); +}); + +it("Bun.file -> Bun.file", async () => { + try { + fs.unlinkSync(path.join("/tmp", "fetch.js.in")); + } catch (e) {} + await gcTick(); + try { + fs.unlinkSync(path.join("/tmp", "fetch.js.out")); + } catch (e) {} + await gcTick(); + const file = path.join(import.meta.dir, "fetch.js.txt"); + await gcTick(); + const text = fs.readFileSync(file, "utf8"); + fs.writeFileSync("/tmp/fetch.js.in", text); + await gcTick(); + { + const result = await Bun.write( + Bun.file("/tmp/fetch.js.out"), + Bun.file("/tmp/fetch.js.in") + ); + await gcTick(); + expect(await Bun.file("/tmp/fetch.js.out").text()).toBe(text); + await gcTick(); + } + + { + await Bun.write( + Bun.file("/tmp/fetch.js.in").slice(0, (text.length / 2) | 0), + Bun.file("/tmp/fetch.js.out") + ); + expect(await Bun.file("/tmp/fetch.js.in").text()).toBe( + text.substring(0, (text.length / 2) | 0) + ); + } + + { + await gcTick(); + await Bun.write("/tmp/fetch.js.in", Bun.file("/tmp/fetch.js.out")); + await gcTick(); + expect(await Bun.file("/tmp/fetch.js.in").text()).toBe(text); + } +}); + +it("Bun.file", async () => { + const file = path.join(import.meta.dir, "fetch.js.txt"); + await gcTick(); + expect(await Bun.file(file).text()).toBe(fs.readFileSync(file, "utf8")); + await gcTick(); +}); + +it("Bun.file as a Blob", async () => { + const filePath = path.join(import.meta.path, "../fetch.js.txt"); + const fixture = fs.readFileSync(filePath, "utf8"); + // this is a Blob object with the same interface as the one returned by fetch + // internally, instead of a byte array, it stores the file path! + // this enables several performance optimizations + var blob = Bun.file(filePath); + await gcTick(); + + // no size because we haven't read it from disk yet + expect(blob.size).toBe(0); + await gcTick(); + // now it reads "./fetch.js.txt" from the filesystem + // it's lazy, only loads once we ask for it + // if it fails, the promise will reject at this point + expect(await blob.text()).toBe(fixture); + await gcTick(); + // now that it's loaded, the size updates + expect(blob.size).toBe(fixture.length); + await gcTick(); + // and it only loads once for _all_ blobs pointing to that file path + // until all references are released + expect((await blob.arrayBuffer()).byteLength).toBe(fixture.length); + await gcTick(); + + const array = new Uint8Array(await blob.arrayBuffer()); + await gcTick(); + const text = fixture; + for (let i = 0; i < text.length; i++) { + expect(array[i]).toBe(text.charCodeAt(i)); + } + await gcTick(); + expect(blob.size).toBe(fixture.length); + blob = null; + await gcTick(); + await new Promise((resolve) => setTimeout(resolve, 1)); + // now we're back + var blob = Bun.file(filePath); + expect(blob.size).toBe(0); +}); + +it("Response -> Bun.file", async () => { + const file = path.join(import.meta.dir, "fetch.js.txt"); + await gcTick(); + const text = fs.readFileSync(file, "utf8"); + await gcTick(); + const response = new Response(Bun.file(file)); + await gcTick(); + expect(await response.text()).toBe(text); + await gcTick(); +}); + +it("Bun.file -> Response", async () => { + // ensure the file doesn't already exist + try { + fs.unlinkSync("/tmp/fetch.js.out"); + } catch {} + await gcTick(); + const file = path.join(import.meta.dir, "fetch.js.txt"); + await gcTick(); + const text = fs.readFileSync(file, "utf8"); + await gcTick(); + const resp = await fetch("https://example.com"); + await gcTick(); + + expect(await Bun.write("/tmp/fetch.js.out", resp)).toBe(text.length); + await gcTick(); + expect(await Bun.file("/tmp/fetch.js.out").text()).toBe(text); + await gcTick(); +}); + +it("Response -> Bun.file -> Response -> text", async () => { + await gcTick(); + const file = path.join(import.meta.dir, "fetch.js.txt"); + await gcTick(); + const text = fs.readFileSync(file, "utf8"); + await gcTick(); + const response = new Response(Bun.file(file)); + await gcTick(); + const response2 = response.clone(); + await gcTick(); + expect(await response2.text()).toBe(text); + await gcTick(); +}); + +// If you write nothing to a file, it shouldn't modify it +// If you want to truncate a file, it should be more explicit +it("Bun.write('output.html', '')", async () => { + await Bun.write("/tmp/output.html", "lalalala"); + expect(await Bun.write("/tmp/output.html", "")).toBe(0); + expect(await Bun.file("/tmp/output.html").text()).toBe("lalalala"); +}); + +// Since Bun.file is resolved lazily, this needs to specifically be checked +it("Bun.write('output.html', HTMLRewriter.transform(Bun.file)))", async () => { + var rewriter = new HTMLRewriter(); + rewriter.on("div", { + element(element) { + element.setInnerContent("<blink>it worked!</blink>", { html: true }); + }, + }); + await Bun.write("/tmp/html-rewriter.txt.js", "<div>hello</div>"); + var input = new Response(Bun.file("/tmp/html-rewriter.txt.js")); + var output = rewriter.transform(input); + const outpath = `/tmp/html-rewriter.${Date.now()}.html`; + await Bun.write(outpath, output); + expect(await Bun.file(outpath).text()).toBe( + "<div><blink>it worked!</blink></div>" + ); +}); diff --git a/test/bun.js/serve.test.ts b/test/bun.js/serve.test.ts new file mode 100644 index 000000000..8b785dd25 --- /dev/null +++ b/test/bun.js/serve.test.ts @@ -0,0 +1,82 @@ +import { file, serve } from "bun"; +import { expect, it } from "bun:test"; +import { readFileSync } from "fs"; +import { resolve } from "path"; + +var port = 40000; + +it("should work for a hello world", async () => { + const server = serve({ + port: port++, + fetch(req) { + return new Response(`Hello, world!`); + }, + }); + const response = await fetch(`http://localhost:${server.port}`); + expect(await response.text()).toBe("Hello, world!"); + server.stop(); +}); + +it("should work for a file", async () => { + const fixture = resolve(import.meta.dir, "./fetch.js.txt"); + const textToExpect = readFileSync(fixture, "utf-8"); + + const server = serve({ + port: port++, + fetch(req) { + return new Response(file(fixture)); + }, + }); + const response = await fetch(`http://localhost:${server.port}`); + expect(await response.text()).toBe(textToExpect); + server.stop(); +}); + +it("fetch should work with headers", async () => { + const fixture = resolve(import.meta.dir, "./fetch.js.txt"); + + const server = serve({ + port: port++, + fetch(req) { + if (req.headers.get("X-Foo") !== "bar") { + return new Response("X-Foo header not set", { status: 500 }); + } + return new Response(file(fixture), { + headers: { "X-Both-Ways": "1" }, + }); + }, + }); + const response = await fetch(`http://localhost:${server.port}`, { + headers: { + "X-Foo": "bar", + }, + }); + + expect(response.status).toBe(200); + expect(response.headers.get("X-Both-Ways")).toBe("1"); + server.stop(); +}); + +var count = 200; +it(`should work for a file ${count} times`, async () => { + const fixture = resolve(import.meta.dir, "./fetch.js.txt"); + const textToExpect = readFileSync(fixture, "utf-8"); + var ran = 0; + const server = serve({ + port: port++, + async fetch(req) { + return new Response(file(fixture)); + }, + }); + + // this gets stuck if run about 200 times awaiting all the promises + // when the promises are run altogether, instead of one at a time + // it's hard to say if this only happens here due to some weird stuff with the test runner + // or if it's "real" issue + for (let i = 0; i < count; i++) { + const response = await fetch(`http://localhost:${server.port}`); + expect(await response.text()).toBe(textToExpect); + } + + server.stop(); +}); diff --git a/test/bun.js/setInterval.test.js b/test/bun.js/setInterval.test.js new file mode 100644 index 000000000..f633998cd --- /dev/null +++ b/test/bun.js/setInterval.test.js @@ -0,0 +1,35 @@ +import { it, expect } from "bun:test"; + +it("setInterval", async () => { + var counter = 0; + var start; + const result = await new Promise((resolve, reject) => { + start = performance.now(); + + var id = setInterval(() => { + counter++; + if (counter === 10) { + resolve(counter); + clearInterval(id); + } + }, 1); + }); + + expect(result).toBe(10); + expect(performance.now() - start >= 10).toBe(true); +}); + +it("clearInterval", async () => { + var called = false; + const id = setInterval(() => { + called = true; + expect(false).toBe(true); + }, 1); + clearInterval(id); + await new Promise((resolve, reject) => { + setInterval(() => { + resolve(); + }, 10); + }); + expect(called).toBe(false); +}); diff --git a/test/bun.js/setTimeout.test.js b/test/bun.js/setTimeout.test.js new file mode 100644 index 000000000..55f71712c --- /dev/null +++ b/test/bun.js/setTimeout.test.js @@ -0,0 +1,39 @@ +import { it, expect } from "bun:test"; + +it("setTimeout", async () => { + var lastID = -1; + const result = await new Promise((resolve, reject) => { + var numbers = []; + + for (let i = 1; i < 100; i++) { + const id = setTimeout(() => { + numbers.push(i); + if (i === 99) { + resolve(numbers); + } + }, i); + expect(id > lastID).toBe(true); + lastID = id; + } + }); + + for (let j = 0; j < result.length; j++) { + expect(result[j]).toBe(j + 1); + } + expect(result.length).toBe(99); +}); + +it("clearTimeout", async () => { + var called = false; + const id = setTimeout(() => { + called = true; + expect(false).toBe(true); + }, 1); + clearTimeout(id); + await new Promise((resolve, reject) => { + setTimeout(() => { + resolve(); + }, 10); + }); + expect(called).toBe(false); +}); diff --git a/test/bun.js/shadow.test.js b/test/bun.js/shadow.test.js new file mode 100644 index 000000000..3fffcac90 --- /dev/null +++ b/test/bun.js/shadow.test.js @@ -0,0 +1,10 @@ +import { describe, it, expect } from "bun:test"; + +it("shadow realm works", () => { + const red = new ShadowRealm(); + globalThis.someValue = 1; + // Affects only the ShadowRealm's global + const result = red.evaluate("globalThis.someValue = 2;"); + expect(globalThis.someValue).toBe(1); + expect(result).toBe(2); +}); diff --git a/test/bun.js/sleep.js b/test/bun.js/sleep.js new file mode 100644 index 000000000..080597424 --- /dev/null +++ b/test/bun.js/sleep.js @@ -0,0 +1,10 @@ +const interval = 0.01; +const now = performance.now(); +console.time("Slept"); +Bun.sleepSync(interval); +const elapsed = performance.now() - now; +if (elapsed < interval) { + throw new Error("Didn't sleep"); +} + +console.timeEnd("Slept"); diff --git a/test/bun.js/solid-dom-fixtures/SVG/code.js b/test/bun.js/solid-dom-fixtures/SVG/code.js new file mode 100644 index 000000000..0ffded054 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/SVG/code.js @@ -0,0 +1,74 @@ +const template = ( + <svg width="400" height="180"> + <rect + stroke-width="2" + x="50" + y="20" + rx="20" + ry="20" + width="150" + height="150" + style="fill:red;stroke:black;stroke-width:5;opacity:0.5" + /> + <linearGradient gradientTransform="rotate(25)"> + <stop offset="0%"></stop> + </linearGradient> + </svg> +); + +const template2 = ( + <svg width="400" height="180"> + <rect + className={state.name} + stroke-width={state.width} + x={state.x} + y={state.y} + rx="20" + ry="20" + width="150" + height="150" + style={{ + fill: "red", + stroke: "black", + "stroke-width": props.stroke, + opacity: 0.5, + }} + /> + </svg> +); + +const template3 = ( + <svg width="400" height="180"> + <rect {...props} /> + </svg> +); + +const template4 = <rect x="50" y="20" width="150" height="150" />; + +const template5 = ( + <> + <rect x="50" y="20" width="150" height="150" /> + </> +); + +const template6 = ( + <Component> + <rect x="50" y="20" width="150" height="150" /> + </Component> +); + +const template7 = ( + <svg viewBox={"0 0 160 40"} xmlns="http://www.w3.org/2000/svg"> + <a xlink:href={url}> + <text x="10" y="25"> + MDN Web Docs + </text> + </a> + </svg> +); + +const template8 = ( + <svg viewBox={"0 0 160 40"} xmlns="http://www.w3.org/2000/svg"> + <text x="10" y="25" textContent={text} /> + </svg> +); diff --git a/test/bun.js/solid-dom-fixtures/SVG/output.bun.js b/test/bun.js/solid-dom-fixtures/SVG/output.bun.js new file mode 100644 index 000000000..44d092f15 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/SVG/output.bun.js @@ -0,0 +1,33 @@ +var _tmpl$1 = _template$('<svg width="400" height="180"><rect stroke-width="2" x="50" y="20" rx="20" ry="20" width="150" height="150"/><linearGradient gradientTransform="rotate(25)"><stop offset="0%"/></linearGradient></svg>', 4), _tmpl$2 = _template$('<svg width="400" height="180"><rect rx="20" ry="20" width="150" height="150"/></svg>', 2), _tmpl$3 = _template$('<svg width="400" height="180"><rect/></svg>', 2), _tmpl$4 = _template$('<rect x="50" y="20" width="150" height="150"/>', 0), _tmpl$5 = _template$('<svg viewBox="0 0 160 40" xmlns="http://www.w3.org/2000/svg"><a><text x="10" y="25">MDN Web Docs</text></a></svg>', 6), _tmpl$6 = _template$('<svg viewBox="0 0 160 40" xmlns="http://www.w3.org/2000/svg"><text x="10" y="25"/></svg>', 2); +const template = _tmpl$1.cloneNode(true); +const template2 = () => { + var _el = _tmpl$1.cloneNode(true); + effect(() => { + return setAttribute(_el, "className", state.name); + }); + effect(() => { + return setAttribute(_el, "stroke-width", state.width); + }); + effect(() => { + return setAttribute(_el, "x", state.x); + }); + effect(() => { + return setAttribute(_el, "y", state.y); + }); + ; + return _el; +}; +const template3 = _tmpl$3.cloneNode(true); +const template4 = _tmpl$4.cloneNode(true); +const template5 = ; +const template6 = createComponent(Component, {}); +const template7 = () => { + var _el = _tmpl$4.cloneNode(true); + setAttribute(_el, "xlink:href", url); + return _el; +}; +const template8 = () => { + var _el = _tmpl$5.cloneNode(true); + setAttribute(_el, "textContent", text); + return _el; +}; diff --git a/test/bun.js/solid-dom-fixtures/SVG/output.js b/test/bun.js/solid-dom-fixtures/SVG/output.js new file mode 100644 index 000000000..edac460af --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/SVG/output.js @@ -0,0 +1,108 @@ +import { template as _$template } from "r-dom"; +import { setAttributeNS as _$setAttributeNS } from "r-dom"; +import { createComponent as _$createComponent } from "r-dom"; +import { spread as _$spread } from "r-dom"; +import { setAttribute as _$setAttribute } from "r-dom"; +import { effect as _$effect } from "r-dom"; + +const _tmpl$ = /*#__PURE__*/ _$template( + `<svg width="400" height="180"><rect stroke-width="2" x="50" y="20" rx="20" ry="20" width="150" height="150" style="fill:red;stroke:black;stroke-width:5;opacity:0.5"></rect><linearGradient gradientTransform="rotate(25)"><stop offset="0%"></stop></linearGradient></svg>`, + 8 + ), + _tmpl$2 = /*#__PURE__*/ _$template( + `<svg width="400" height="180"><rect rx="20" ry="20" width="150" height="150"></rect></svg>`, + 4 + ), + _tmpl$3 = /*#__PURE__*/ _$template( + `<svg width="400" height="180"><rect></rect></svg>`, + 4 + ), + _tmpl$4 = /*#__PURE__*/ _$template( + `<svg><rect x="50" y="20" width="150" height="150"></rect></svg>`, + 4, + true + ), + _tmpl$5 = /*#__PURE__*/ _$template( + `<svg viewBox="0 0 160 40" xmlns="http://www.w3.org/2000/svg"><a><text x="10" y="25">MDN Web Docs</text></a></svg>`, + 6 + ), + _tmpl$6 = /*#__PURE__*/ _$template( + `<svg viewBox="0 0 160 40" xmlns="http://www.w3.org/2000/svg"><text x="10" y="25"></text></svg>`, + 4 + ); + +const template = _tmpl$.cloneNode(true); + +const template2 = (() => { + const _el$2 = _tmpl$2.cloneNode(true), + _el$3 = _el$2.firstChild; + + _el$3.style.setProperty("fill", "red"); + + _el$3.style.setProperty("stroke", "black"); + + _el$3.style.setProperty("opacity", "0.5"); + + _$effect( + (_p$) => { + const _v$ = state.name, + _v$2 = state.width, + _v$3 = state.x, + _v$4 = state.y, + _v$5 = props.stroke; + _v$ !== _p$._v$ && _$setAttribute(_el$3, "class", (_p$._v$ = _v$)); + _v$2 !== _p$._v$2 && + _$setAttribute(_el$3, "stroke-width", (_p$._v$2 = _v$2)); + _v$3 !== _p$._v$3 && _$setAttribute(_el$3, "x", (_p$._v$3 = _v$3)); + _v$4 !== _p$._v$4 && _$setAttribute(_el$3, "y", (_p$._v$4 = _v$4)); + _v$5 !== _p$._v$5 && + _el$3.style.setProperty("stroke-width", (_p$._v$5 = _v$5)); + return _p$; + }, + { + _v$: undefined, + _v$2: undefined, + _v$3: undefined, + _v$4: undefined, + _v$5: undefined, + } + ); + + return _el$2; +})(); + +const template3 = (() => { + const _el$4 = _tmpl$3.cloneNode(true), + _el$5 = _el$4.firstChild; + + _$spread(_el$5, props, true, false); + + return _el$4; +})(); + +const template4 = _tmpl$4.cloneNode(true); + +const template5 = _tmpl$4.cloneNode(true); + +const template6 = _$createComponent(Component, { + get children() { + return _tmpl$4.cloneNode(true); + }, +}); + +const template7 = (() => { + const _el$9 = _tmpl$5.cloneNode(true), + _el$10 = _el$9.firstChild; + + _$setAttributeNS(_el$10, "http://www.w3.org/1999/xlink", "xlink:href", url); + + return _el$9; +})(); + +const template8 = (() => { + const _el$11 = _tmpl$6.cloneNode(true), + _el$12 = _el$11.firstChild; + + _el$12.textContent = text; + return _el$11; +})(); diff --git a/test/bun.js/solid-dom-fixtures/attributeExpressions/code.js b/test/bun.js/solid-dom-fixtures/attributeExpressions/code.js new file mode 100644 index 000000000..b64949434 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/attributeExpressions/code.js @@ -0,0 +1,115 @@ +const selected = true; +let id = "my-h1"; +let link; +const template = ( + <div + id="main" + {...results} + classList={{ selected: unknown }} + style={{ color }} + > + <h1 + class="base" + id={id} + {...results()} + disabled + readonly="" + title={welcoming()} + style={{ "background-color": color(), "margin-right": "40px" }} + classList={{ dynamic: dynamic(), selected }} + > + <a href={"/"} ref={link} classList={{ "ccc ddd": true }} readonly={value}> + Welcome + </a> + </h1> + </div> +); + +const template2 = ( + <div {...getProps("test")}> + <div textContent={rowId} /> + <div textContent={row.label} /> + <div innerHTML={"<div/>"} /> + </div> +); + +const template3 = ( + <div + id={/*@once*/ state.id} + style={/*@once*/ { "background-color": state.color }} + name={state.name} + textContent={/*@once*/ state.content} + /> +); + +const template4 = ( + <div class="hi" className={state.class} classList={{ "ccc:ddd": true }} /> +); + +const template5 = <div class="a" className="b"></div>; + +const template6 = <div style={someStyle()} textContent="Hi" />; + +const template7 = ( + <div + style={{ + "background-color": color(), + "margin-right": "40px", + ...props.style, + }} + style:padding-top={props.top} + class:my-class={props.active} + /> +); + +let refTarget; +const template8 = <div ref={refTarget} />; + +const template9 = <div ref={(e) => console.log(e)} />; + +const template10 = <div ref={refFactory()} />; + +const template11 = <div use:something use:another={thing} use:zero={0} />; + +const template12 = <div prop:htmlFor={thing} />; + +const template13 = <input type="checkbox" checked={true} />; + +const template14 = <input type="checkbox" checked={state.visible} />; + +const template15 = <div class="`a">`$`</div>; + +const template16 = ( + <button + class="static" + classList={{ + hi: "k", + }} + type="button" + > + Write + </button> +); + +const template17 = ( + <button + classList={{ + a: true, + b: true, + c: true, + }} + onClick={increment} + > + Hi + </button> +); + +const template18 = ( + <div + {...{ + get [key()]() { + return props.value; + }, + }} + /> +); diff --git a/test/bun.js/solid-dom-fixtures/attributeExpressions/output.bun.js b/test/bun.js/solid-dom-fixtures/attributeExpressions/output.bun.js new file mode 100644 index 000000000..4bb3e1b39 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/attributeExpressions/output.bun.js @@ -0,0 +1,155 @@ +var _tmpl = _template$( + '<div id="main"><h1 class="base" disabled readonly><a href="/">Welcome</a></h1></div>', + 6 + ), + _tmpl$2 = _template$( + '<div><div/><div/><div innerHTML="<div/>"/></div>', + 2 + ), + _tmpl$2 = _template$("<div/>", 0), + _tmpl$3 = _template$('<div class="hi"/>', 0), + _tmpl$5 = _template$('<div class="a" class="b"/>', 0), + _tmpl$5 = _template$('<div textContent="Hi"/>', 0), + _tmpl$6 = _template$("<div use:something use:zero=0/>", 0), + _tmpl$8 = _template$('<input type="checkbox" checked/>', 0), + _tmpl$8 = _template$('<input type="checkbox"/>', 0), + _tmpl$10 = _template$('<div class="`a">`$`</div>', 2), + _tmpl$10 = _template$( + '<button class="static" type="button">Write</button>', + 2 + ), + _tmpl$11 = _template$("<button>Hi</button>", 2); +const selected = true; +let id = "my-h1"; +let link; +const template = () => { + var _el = _tmpl.cloneNode(true), + _el$1 = _el.firstChild, + _el$2 = _el$1.nextSibling; + effect(() => { + return setAttribute(_el, "classList", { selected: unknown }); + }); + setAttribute(_el$1, "id", id); + effect(() => { + return setAttribute(_el$1, "title", welcoming()); + }); + effect(() => { + return setAttribute(_el$1, "classList", { dynamic: dynamic(), selected }); + }); + setAttribute(_el$2, "ref", link); + effect(() => { + return setAttribute(_el$2, "classList", { "ccc ddd": true }); + }); + setAttribute(_el$2, "readonly", value); + return _el; +}; +const template2 = () => { + var _el = _tmpl$1.cloneNode(true), + _el$1 = _el.firstChild; + setAttribute(_el, "textContent", rowId); + effect(() => { + return setAttribute(_el$1, "textContent", row.label); + }); + return _el; +}; +const template3 = () => { + var _el = _tmpl$2.cloneNode(true); + effect(() => { + return setAttribute(_el, "id", state.id); + }); + effect(() => { + return setAttribute(_el, "name", state.name); + }); + effect(() => { + return setAttribute(_el, "textContent", state.content); + }); + return _el; +}; +const template4 = () => { + var _el = _tmpl$3.cloneNode(true); + effect(() => { + return setAttribute(_el, "className", state.class); + }); + effect(() => { + return setAttribute(_el, "classList", { "ccc:ddd": true }); + }); + return _el; +}; +const template5 = _tmpl$5.cloneNode(true); +const template6 = () => { + var _el = _tmpl$5.cloneNode(true); + return _el; +}; +const template7 = () => { + var _el = _tmpl$2.cloneNode(true); + effect(() => { + return setAttribute(_el, "style:padding-top", props.top); + }); + effect(() => { + return setAttribute(_el, "class:my-class", props.active); + }); + return _el; +}; +let refTarget; +const template8 = () => { + var _el = _tmpl$2.cloneNode(true); + setAttribute(_el, "ref", refTarget); + return _el; +}; +const template9 = () => { + var _el = _tmpl$2.cloneNode(true); + effect(() => { + return setAttribute(_el, "ref", (e) => console.log(e)); + }); + return _el; +}; +const template10 = () => { + var _el = _tmpl$2.cloneNode(true); + effect(() => { + return setAttribute(_el, "ref", refFactory()); + }); + return _el; +}; +const template11 = () => { + var _el = _tmpl$6.cloneNode(true); + setAttribute(_el, "use:another", thing); + return _el; +}; +const template12 = () => { + var _el = _tmpl$2.cloneNode(true); + setAttribute(_el, "prop:htmlFor", thing); + return _el; +}; +const template13 = _tmpl$8.cloneNode(true); +const template14 = () => { + var _el = _tmpl$8.cloneNode(true); + effect(() => { + return setAttribute(_el, "checked", state.visible); + }); + return _el; +}; +const template15 = _tmpl$10.cloneNode(true); +const template16 = () => { + var _el = _tmpl$10.cloneNode(true); + effect(() => { + return setAttribute(_el, "classList", { + hi: "k", + }); + }); + return _el; +}; +const template17 = () => { + var _el = _tmpl$11.cloneNode(true); + effect(() => { + return setAttribute(_el, "classList", { + a: true, + b: true, + c: true, + }); + }); + effect(() => { + return (_el.$$click = increment); + }); + return _el; +}; +const template18 = _tmpl$2.cloneNode(true); diff --git a/test/bun.js/solid-dom-fixtures/attributeExpressions/output.js b/test/bun.js/solid-dom-fixtures/attributeExpressions/output.js new file mode 100644 index 000000000..14f700218 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/attributeExpressions/output.js @@ -0,0 +1,241 @@ +const _tmpl$ = /*#__PURE__*/ _$template( + `<div id="main"><h1 class="base selected" id="my-h1" disabled readonly=""><a href="/">Welcome</a></h1></div>`, + 6 + ), + _tmpl$2 = /*#__PURE__*/ _$template( + `<div><div></div><div> </div><div></div></div>`, + 8 + ), + _tmpl$3 = /*#__PURE__*/ _$template(`<div></div>`, 2), + _tmpl$4 = /*#__PURE__*/ _$template(`<div class="a b"></div>`, 2), + _tmpl$5 = /*#__PURE__*/ _$template(`<input type="checkbox">`, 1), + _tmpl$6 = /*#__PURE__*/ _$template(`<div class="\`a">\`$\`</div>`, 2), + _tmpl$7 = /*#__PURE__*/ _$template( + `<button class="static hi" type="button">Write</button>`, + 2 + ), + _tmpl$8 = /*#__PURE__*/ _$template(`<button class="a b c">Hi</button>`, 2); + +const selected = true; +let id = "my-h1"; +let link; + +const template = (() => { + const _el$ = _tmpl$.cloneNode(true), + _el$2 = _el$.firstChild, + _el$3 = _el$2.firstChild; + + _$spread(_el$, results, false, true); + + _el$.classList.toggle("selected", unknown); + + _el$.style.setProperty("color", color); + + _$spread(_el$2, results, false, true); + + _el$2.style.setProperty("margin-right", "40px"); + + const _ref$ = link; + typeof _ref$ === "function" ? _ref$(_el$3) : (link = _el$3); + + _$classList(_el$3, { + "ccc ddd": true, + }); + + _el$3.readOnly = value; + + _$effect( + (_p$) => { + const _v$ = welcoming(), + _v$2 = color(), + _v$3 = !!dynamic(); + + _v$ !== _p$._v$ && _$setAttribute(_el$2, "title", (_p$._v$ = _v$)); + _v$2 !== _p$._v$2 && + _el$2.style.setProperty("background-color", (_p$._v$2 = _v$2)); + _v$3 !== _p$._v$3 && _el$2.classList.toggle("dynamic", (_p$._v$3 = _v$3)); + return _p$; + }, + { + _v$: undefined, + _v$2: undefined, + _v$3: undefined, + } + ); + + return _el$; +})(); + +const template2 = (() => { + const _el$4 = _tmpl$2.cloneNode(true), + _el$5 = _el$4.firstChild, + _el$6 = _el$5.nextSibling, + _el$7 = _el$6.firstChild, + _el$8 = _el$6.nextSibling; + + _$spread(_el$4, () => getProps("test"), false, true); + + _el$5.textContent = rowId; + _el$8.innerHTML = "<div/>"; + + _$effect(() => (_el$7.data = row.label)); + + return _el$4; +})(); + +const template3 = (() => { + const _el$9 = _tmpl$3.cloneNode(true); + + _$setAttribute(_el$9, "id", state.id); + + _el$9.style.setProperty("background-color", state.color); + + _el$9.textContent = state.content; + + _$effect(() => _$setAttribute(_el$9, "name", state.name)); + + return _el$9; +})(); + +const template4 = (() => { + const _el$10 = _tmpl$3.cloneNode(true); + + _$classList(_el$10, { + "ccc:ddd": true, + }); + + _$effect(() => _$className(_el$10, `hi ${state.class || ""}`)); + + return _el$10; +})(); + +const template5 = _tmpl$4.cloneNode(true); + +const template6 = (() => { + const _el$12 = _tmpl$3.cloneNode(true); + + _el$12.textContent = "Hi"; + + _$effect((_$p) => _$style(_el$12, someStyle(), _$p)); + + return _el$12; +})(); + +const template7 = (() => { + const _el$13 = _tmpl$3.cloneNode(true); + + _$effect( + (_p$) => { + const _v$4 = { + "background-color": color(), + "margin-right": "40px", + ...props.style, + }, + _v$5 = props.top, + _v$6 = !!props.active; + + _p$._v$4 = _$style(_el$13, _v$4, _p$._v$4); + _v$5 !== _p$._v$5 && + _el$13.style.setProperty("padding-top", (_p$._v$5 = _v$5)); + _v$6 !== _p$._v$6 && + _el$13.classList.toggle("my-class", (_p$._v$6 = _v$6)); + return _p$; + }, + { + _v$4: undefined, + _v$5: undefined, + _v$6: undefined, + } + ); + + return _el$13; +})(); + +let refTarget; + +const template8 = (() => { + const _el$14 = _tmpl$3.cloneNode(true); + + const _ref$2 = refTarget; + typeof _ref$2 === "function" ? _ref$2(_el$14) : (refTarget = _el$14); + return _el$14; +})(); + +const template9 = (() => { + const _el$15 = _tmpl$3.cloneNode(true); + + ((e) => console.log(e))(_el$15); + + return _el$15; +})(); + +const template10 = (() => { + const _el$16 = _tmpl$3.cloneNode(true); + + const _ref$3 = refFactory(); + + typeof _ref$3 === "function" && _ref$3(_el$16); + return _el$16; +})(); + +const template11 = (() => { + const _el$17 = _tmpl$3.cloneNode(true); + + zero(_el$17, () => 0); + another(_el$17, () => thing); + something(_el$17, () => true); + return _el$17; +})(); + +const template12 = (() => { + const _el$18 = _tmpl$3.cloneNode(true); + + _el$18.htmlFor = thing; + return _el$18; +})(); + +const template13 = (() => { + const _el$19 = _tmpl$5.cloneNode(true); + + _el$19.checked = true; + return _el$19; +})(); + +const template14 = (() => { + const _el$20 = _tmpl$5.cloneNode(true); + + _$effect(() => (_el$20.checked = state.visible)); + + return _el$20; +})(); + +const template15 = _tmpl$6.cloneNode(true); + +const template16 = _tmpl$7.cloneNode(true); + +const template17 = (() => { + const _el$23 = _tmpl$8.cloneNode(true); + + _$addEventListener(_el$23, "click", increment, true); + + return _el$23; +})(); + +const template18 = (() => { + const _el$24 = _tmpl$3.cloneNode(true); + + _$spread( + _el$24, + () => ({ + get [key()]() { + return props.value; + }, + }), + false, + false + ); + + return _el$24; +})(); + +_$delegateEvents(["click"]); diff --git a/test/bun.js/solid-dom-fixtures/components/code.js b/test/bun.js/solid-dom-fixtures/components/code.js new file mode 100644 index 000000000..f3bd159d6 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/components/code.js @@ -0,0 +1,161 @@ +import { Show } from "somewhere"; + +const Child = (props) => { + const [s, set] = createSignal(); + return ( + <> + <div ref={props.ref}>Hello {props.name}</div> + <div ref={set}>{props.children}</div> + </> + ); +}; + +const template = (props) => { + let childRef; + const { content } = props; + return ( + <div> + <Child name="John" {...props} ref={childRef} booleanProperty> + <div>From Parent</div> + </Child> + <Child name="Jason" {...dynamicSpread()} ref={props.ref}> + {/* Comment Node */} + <div>{content}</div> + </Child> + <Context.Consumer ref={props.consumerRef()}> + {(context) => context} + </Context.Consumer> + </div> + ); +}; + +const template2 = ( + <Child + name="Jake" + dynamic={state.data} + stale={/*@once*/ state.data} + handleClick={clickHandler} + hyphen-ated={state.data} + ref={(el) => (e = el)} + /> +); + +const template3 = ( + <Child> + <div /> + <div /> + <div /> + After + </Child> +); + +const [s, set] = createSignal(); +const template4 = <Child ref={set}>{<div />}</Child>; + +const template5 = <Child dynamic={state.dynamic}>{state.dynamic}</Child>; + +// builtIns +const template6 = ( + <For each={state.list} fallback={<Loading />}> + {(item) => <Show when={state.condition}>{item}</Show>} + </For> +); + +const template7 = ( + <Child> + <div /> + {state.dynamic} + </Child> +); + +const template8 = ( + <Child> + {(item) => item} + {(item) => item} + </Child> +); + +const template9 = <_garbage>Hi</_garbage>; + +const template10 = ( + <div> + <Link>new</Link> + {" | "} + <Link>comments</Link> + {" | "} + <Link>show</Link> + {" | "} + <Link>ask</Link> + {" | "} + <Link>jobs</Link> + {" | "} + <Link>submit</Link> + </div> +); + +const template11 = ( + <div> + <Link>new</Link> + {" | "} + <Link>comments</Link> + <Link>show</Link> + {" | "} + <Link>ask</Link> + <Link>jobs</Link> + {" | "} + <Link>submit</Link> + </div> +); + +const template12 = ( + <div> + {" | "} + <Link>comments</Link> + {" | "} + {" | "} + {" | "} + <Link>show</Link> + {" | "} + </div> +); + +class Template13 { + render() { + <Component prop={this.something} onClick={() => this.shouldStay}> + <Nested prop={this.data}>{this.content}</Nested> + </Component>; + } +} + +const Template14 = <Component>{data()}</Component>; + +const Template15 = <Component {...props} />; + +const Template16 = <Component something={something} {...props} />; + +const Template17 = ( + <Pre> + <span>1</span> <span>2</span> <span>3</span> + </Pre> +); +const Template18 = ( + <Pre> + <span>1</span> + <span>2</span> + <span>3</span> + </Pre> +); + +const Template19 = <Component {...s.dynamic()} />; + +const Template20 = <Component class={prop.red ? "red" : "green"} />; + +const template21 = ( + <Component + {...{ + get [key()]() { + return props.value; + }, + }} + /> +); diff --git a/test/bun.js/solid-dom-fixtures/components/output.bun.js b/test/bun.js/solid-dom-fixtures/components/output.bun.js new file mode 100644 index 000000000..5ab4d5614 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/components/output.bun.js @@ -0,0 +1,205 @@ +var _tmpl = _template$("<div><div>From Parent</div><div</div></div>", 9), _tmpl$1 = _template$("<div> | | | | | </div>", 8), _tmpl$2 = _template$("<div> | | | </div>", 8); +import {Show} from "somewhere"; +const Child = (props) => { + const [s, set] = createSignal(); + return ; +}; +const template = (props) => { + let childRef; + const { content } = props; + return () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, createComponent(Child, { + name: "John", + ref: childRef, + booleanProperty: true + }), null); + insert(_tmpl, content, null); + insert(_tmpl, createComponent(Child, { + name: "Jason", + ref: props.ref + }), null); + insert(_tmpl, createComponent(Context.Consumer, { + ref: props.consumerRef(), + get children: [ + (context) => context + ] + }), null); + return _tmpl; + }; +}; +const template2 = createComponent(Child, { + name: "Jake", + dynamic: state.data, + stale: state.data, + handleClick: clickHandler, + "hyphen-ated": state.data, + get ref: () => { + return (el) => e = el; + } +}); +const template3 = createComponent(Child, { + get children: [ + "After" + ] +}); +const [s, set] = createSignal(); +const template4 = createComponent(Child, { + ref: set +}); +const template5 = createComponent(Child, { + dynamic: state.dynamic, + get children: [ + state.dynamic + ] +}); +const template6 = createComponent(For, { + each: state.list, + fallback: , + get children: [ + (item) => createComponent(Show, { + when: state.condition, + get children: [ + item + ] + }) + ] +}); +const template7 = createComponent(Child, { + get children: [ + state.dynamic + ] +}); +const template8 = createComponent(Child, { + get children: [ + (item) => item, + (item) => item + ] +}); +const template9 = createComponent(_garbage, { + get children: [ + "Hi" + ] +}); +const template10 = () => { + var _tmpl$1 = _tmpl$1.cloneNode(true); + insert(_tmpl$1, createComponent(Link, { + get children: [ + "new" + ] + }), null); + insert(_tmpl$1, createComponent(Link, { + get children: [ + "comments" + ] + }), null); + insert(_tmpl$1, createComponent(Link, { + get children: [ + "show" + ] + }), null); + insert(_tmpl$1, createComponent(Link, { + get children: [ + "ask" + ] + }), null); + insert(_tmpl$1, createComponent(Link, { + get children: [ + "jobs" + ] + }), null); + insert(_tmpl$1, createComponent(Link, { + get children: [ + "submit" + ] + }), null); + return _tmpl$1; +}; +const template11 = () => { + var _tmpl$2 = _tmpl$2.cloneNode(true); + insert(_tmpl$2, createComponent(Link, { + get children: [ + "new" + ] + }), null); + insert(_tmpl$2, createComponent(Link, { + get children: [ + "comments" + ] + }), null); + insert(_tmpl$2, createComponent(Link, { + get children: [ + "show" + ] + }), null); + insert(_tmpl$2, createComponent(Link, { + get children: [ + "ask" + ] + }), null); + insert(_tmpl$2, createComponent(Link, { + get children: [ + "jobs" + ] + }), null); + insert(_tmpl$2, createComponent(Link, { + get children: [ + "submit" + ] + }), null); + return _tmpl$2; +}; +const template12 = () => { + var _tmpl$1 = _tmpl$1.cloneNode(true); + insert(_tmpl$1, createComponent(Link, { + get children: [ + "comments" + ] + }), null); + insert(_tmpl$1, createComponent(Link, { + get children: [ + "show" + ] + }), null); + return _tmpl$1; +}; + +class Template13 { + render() { + createComponent(Component, { + prop: this.something, + get onClick: () => { + return () => this.shouldStay; + }, + get children: [ + createComponent(Nested, { + prop: this.data, + get children: [ + this.content + ] + }) + ] + }); + } +} +const Template14 = createComponent(Component, { + get children: [ + data() + ] +}); +const Template15 = createComponent(Component, {}); +const Template16 = createComponent(Component, { + something +}); +const Template17 = createComponent(Pre, { + get children: [ + " ", + " " + ] +}); +const Template18 = createComponent(Pre, {}); +const Template19 = createComponent(Component, {}); +const Template20 = createComponent(Component, { + class: prop.red ? "red" : "green" +}); +const template21 = createComponent(Component, {}); diff --git a/test/bun.js/solid-dom-fixtures/components/output.js b/test/bun.js/solid-dom-fixtures/components/output.js new file mode 100644 index 000000000..0c49d60a3 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/components/output.js @@ -0,0 +1,443 @@ +import { template as _$template } from "r-dom"; +import { memo as _$memo } from "r-dom"; +import { For as _$For } from "r-dom"; +import { createComponent as _$createComponent } from "r-dom"; +import { mergeProps as _$mergeProps } from "r-dom"; +import { insert as _$insert } from "r-dom"; + +const _tmpl$ = /*#__PURE__*/ _$template(`<div>Hello </div>`, 2), + _tmpl$2 = /*#__PURE__*/ _$template(`<div></div>`, 2), + _tmpl$3 = /*#__PURE__*/ _$template(`<div>From Parent</div>`, 2), + _tmpl$4 = /*#__PURE__*/ _$template( + `<div> | <!> | <!> | <!> | <!> | </div>`, + 6 + ), + _tmpl$5 = /*#__PURE__*/ _$template(`<div> | <!> | <!> | </div>`, 4), + _tmpl$6 = /*#__PURE__*/ _$template(`<div> | <!> | | | <!> | </div>`, 4), + _tmpl$7 = /*#__PURE__*/ _$template(`<span>1</span>`, 2), + _tmpl$8 = /*#__PURE__*/ _$template(`<span>2</span>`, 2), + _tmpl$9 = /*#__PURE__*/ _$template(`<span>3</span>`, 2); + +import { Show } from "somewhere"; + +const Child = (props) => { + const [s, set] = createSignal(); + return [ + (() => { + const _el$ = _tmpl$.cloneNode(true), + _el$2 = _el$.firstChild; + + const _ref$ = props.ref; + typeof _ref$ === "function" ? _ref$(_el$) : (props.ref = _el$); + + _$insert(_el$, () => props.name, null); + + return _el$; + })(), + (() => { + const _el$3 = _tmpl$2.cloneNode(true); + + set(_el$3); + + _$insert(_el$3, () => props.children); + + return _el$3; + })(), + ]; +}; + +const template = (props) => { + let childRef; + const { content } = props; + return (() => { + const _el$4 = _tmpl$2.cloneNode(true); + + _$insert( + _el$4, + _$createComponent( + Child, + _$mergeProps( + { + name: "John", + }, + props, + { + ref(r$) { + const _ref$2 = childRef; + typeof _ref$2 === "function" ? _ref$2(r$) : (childRef = r$); + }, + + booleanProperty: true, + + get children() { + return _tmpl$3.cloneNode(true); + }, + } + ) + ), + null + ); + + _$insert( + _el$4, + _$createComponent( + Child, + _$mergeProps( + { + name: "Jason", + }, + dynamicSpread, + { + ref(r$) { + const _ref$3 = props.ref; + typeof _ref$3 === "function" ? _ref$3(r$) : (props.ref = r$); + }, + + get children() { + const _el$6 = _tmpl$2.cloneNode(true); + + _$insert(_el$6, content); + + return _el$6; + }, + } + ) + ), + null + ); + + _$insert( + _el$4, + _$createComponent(Context.Consumer, { + ref(r$) { + const _ref$4 = props.consumerRef(); + + typeof _ref$4 === "function" && _ref$4(r$); + }, + + children: (context) => context, + }), + null + ); + + return _el$4; + })(); +}; + +const template2 = _$createComponent(Child, { + name: "Jake", + + get dynamic() { + return state.data; + }, + + stale: state.data, + handleClick: clickHandler, + + get ["hyphen-ated"]() { + return state.data; + }, + + ref: (el) => (e = el), +}); + +const template3 = _$createComponent(Child, { + get children() { + return [ + _tmpl$2.cloneNode(true), + _tmpl$2.cloneNode(true), + _tmpl$2.cloneNode(true), + "After", + ]; + }, +}); + +const [s, set] = createSignal(); + +const template4 = _$createComponent(Child, { + ref: set, + + get children() { + return _tmpl$2.cloneNode(true); + }, +}); + +const template5 = _$createComponent(Child, { + get dynamic() { + return state.dynamic; + }, + + get children() { + return state.dynamic; + }, +}); // builtIns + +const template6 = _$createComponent(_$For, { + get each() { + return state.list; + }, + + get fallback() { + return _$createComponent(Loading, {}); + }, + + children: (item) => + _$createComponent(Show, { + get when() { + return state.condition; + }, + + children: item, + }), +}); + +const template7 = _$createComponent(Child, { + get children() { + return [_tmpl$2.cloneNode(true), _$memo(() => state.dynamic)]; + }, +}); + +const template8 = _$createComponent(Child, { + get children() { + return [(item) => item, (item) => item]; + }, +}); + +const template9 = _$createComponent(_garbage, { + children: "Hi", +}); + +const template10 = (() => { + const _el$12 = _tmpl$4.cloneNode(true), + _el$13 = _el$12.firstChild, + _el$18 = _el$13.nextSibling, + _el$14 = _el$18.nextSibling, + _el$19 = _el$14.nextSibling, + _el$15 = _el$19.nextSibling, + _el$20 = _el$15.nextSibling, + _el$16 = _el$20.nextSibling, + _el$21 = _el$16.nextSibling, + _el$17 = _el$21.nextSibling; + + _$insert( + _el$12, + _$createComponent(Link, { + children: "new", + }), + _el$13 + ); + + _$insert( + _el$12, + _$createComponent(Link, { + children: "comments", + }), + _el$18 + ); + + _$insert( + _el$12, + _$createComponent(Link, { + children: "show", + }), + _el$19 + ); + + _$insert( + _el$12, + _$createComponent(Link, { + children: "ask", + }), + _el$20 + ); + + _$insert( + _el$12, + _$createComponent(Link, { + children: "jobs", + }), + _el$21 + ); + + _$insert( + _el$12, + _$createComponent(Link, { + children: "submit", + }), + null + ); + + return _el$12; +})(); + +const template11 = (() => { + const _el$22 = _tmpl$5.cloneNode(true), + _el$23 = _el$22.firstChild, + _el$26 = _el$23.nextSibling, + _el$24 = _el$26.nextSibling, + _el$27 = _el$24.nextSibling, + _el$25 = _el$27.nextSibling; + + _$insert( + _el$22, + _$createComponent(Link, { + children: "new", + }), + _el$23 + ); + + _$insert( + _el$22, + _$createComponent(Link, { + children: "comments", + }), + _el$26 + ); + + _$insert( + _el$22, + _$createComponent(Link, { + children: "show", + }), + _el$26 + ); + + _$insert( + _el$22, + _$createComponent(Link, { + children: "ask", + }), + _el$27 + ); + + _$insert( + _el$22, + _$createComponent(Link, { + children: "jobs", + }), + _el$27 + ); + + _$insert( + _el$22, + _$createComponent(Link, { + children: "submit", + }), + null + ); + + return _el$22; +})(); + +const template12 = (() => { + const _el$28 = _tmpl$6.cloneNode(true), + _el$29 = _el$28.firstChild, + _el$34 = _el$29.nextSibling, + _el$30 = _el$34.nextSibling, + _el$35 = _el$30.nextSibling, + _el$33 = _el$35.nextSibling; + + _$insert( + _el$28, + _$createComponent(Link, { + children: "comments", + }), + _el$34 + ); + + _$insert( + _el$28, + _$createComponent(Link, { + children: "show", + }), + _el$35 + ); + + return _el$28; +})(); + +class Template13 { + render() { + const _self$ = this; + + _$createComponent(Component, { + get prop() { + return _self$.something; + }, + + onClick: () => _self$.shouldStay, + + get children() { + return _$createComponent(Nested, { + get prop() { + return _self$.data; + }, + + get children() { + return _self$.content; + }, + }); + }, + }); + } +} + +const Template14 = _$createComponent(Component, { + get children() { + return data(); + }, +}); + +const Template15 = _$createComponent(Component, props); + +const Template16 = _$createComponent( + Component, + _$mergeProps( + { + something: something, + }, + props + ) +); + +const Template17 = _$createComponent(Pre, { + get children() { + return [ + _tmpl$7.cloneNode(true), + " ", + _tmpl$8.cloneNode(true), + " ", + _tmpl$9.cloneNode(true), + ]; + }, +}); + +const Template18 = _$createComponent(Pre, { + get children() { + return [ + _tmpl$7.cloneNode(true), + _tmpl$8.cloneNode(true), + _tmpl$9.cloneNode(true), + ]; + }, +}); + +const Template19 = _$createComponent( + Component, + _$mergeProps(() => s.dynamic()) +); + +const Template20 = _$createComponent(Component, { + get ["class"]() { + return prop.red ? "red" : "green"; + }, +}); + +const template21 = _$createComponent( + Component, + _$mergeProps(() => ({ + get [key()]() { + return props.value; + }, + })) +); diff --git a/test/bun.js/solid-dom-fixtures/conditionalExpressions/code.js b/test/bun.js/solid-dom-fixtures/conditionalExpressions/code.js new file mode 100644 index 000000000..80f1a6a4f --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/conditionalExpressions/code.js @@ -0,0 +1,71 @@ +const template1 = <div>{simple}</div>; + +const template2 = <div>{state.dynamic}</div>; + +const template3 = <div>{simple ? good : bad}</div>; + +const template4 = <div>{simple ? good() : bad}</div>; + +const template5 = <div>{state.dynamic ? good() : bad}</div>; + +const template6 = <div>{state.dynamic && good()}</div>; + +const template7 = ( + <div>{state.count > 5 ? (state.dynamic ? best : good()) : bad}</div> +); + +const template8 = <div>{state.dynamic && state.something && good()}</div>; + +const template9 = <div>{(state.dynamic && good()) || bad}</div>; + +const template10 = ( + <div>{state.a ? "a" : state.b ? "b" : state.c ? "c" : "fallback"}</div> +); + +const template11 = ( + <div>{state.a ? a() : state.b ? b() : state.c ? "c" : "fallback"}</div> +); + +const template12 = <Comp render={state.dynamic ? good() : bad} />; + +// no dynamic predicate +const template13 = <Comp render={state.dynamic ? good : bad} />; + +const template14 = <Comp render={state.dynamic && good()} />; + +// no dynamic predicate +const template15 = <Comp render={state.dynamic && good} />; + +const template16 = <Comp render={state.dynamic || good()} />; + +const template17 = <Comp render={state.dynamic ? <Comp /> : <Comp />} />; + +const template18 = <Comp>{state.dynamic ? <Comp /> : <Comp />}</Comp>; + +const template19 = <div innerHTML={state.dynamic ? <Comp /> : <Comp />} />; + +const template20 = <div>{state.dynamic ? <Comp /> : <Comp />}</div>; + +const template21 = <Comp render={state?.dynamic ? "a" : "b"} />; + +const template22 = <Comp>{state?.dynamic ? "a" : "b"}</Comp>; + +const template23 = <div innerHTML={state?.dynamic ? "a" : "b"} />; + +const template24 = <div>{state?.dynamic ? "a" : "b"}</div>; + +const template25 = <Comp render={state.dynamic ?? <Comp />} />; + +const template26 = <Comp>{state.dynamic ?? <Comp />}</Comp>; + +const template27 = <div innerHTML={state.dynamic ?? <Comp />} />; + +const template28 = <div>{state.dynamic ?? <Comp />}</div>; + +const template29 = <div>{(thing() && thing1()) ?? thing2() ?? thing3()}</div>; + +const template30 = <div>{thing() || thing1() || thing2()}</div>; + +const template31 = ( + <Comp value={count() ? (count() ? count() : count()) : count()} /> +); diff --git a/test/bun.js/solid-dom-fixtures/conditionalExpressions/output.bun.js b/test/bun.js/solid-dom-fixtures/conditionalExpressions/output.bun.js new file mode 100644 index 000000000..36c3f649b --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/conditionalExpressions/output.bun.js @@ -0,0 +1,144 @@ +var _tmpl = template("<div</div>", 2), _tmpl$1 = template("<div/>", 0); +const template1 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, simple, null); + return _tmpl; +}; +const template2 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, state.dynamic, null); + return _tmpl; +}; +const template3 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, simple ? good : bad, null); + return _tmpl; +}; +const template4 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, simple ? good() : bad, null); + return _tmpl; +}; +const template5 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, state.dynamic ? good() : bad, null); + return _tmpl; +}; +const template6 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, state.dynamic && good(), null); + return _tmpl; +}; +const template7 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, state.count > 5 ? state.dynamic ? best : good() : bad, null); + return _tmpl; +}; +const template8 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, state.dynamic && state.something && good(), null); + return _tmpl; +}; +const template9 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, state.dynamic && good() || bad, null); + return _tmpl; +}; +const template10 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, state.a ? "a" : state.b ? "b" : state.c ? "c" : "fallback", null); + return _tmpl; +}; +const template11 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, state.a ? a() : state.b ? b() : state.c ? "c" : "fallback", null); + return _tmpl; +}; +const template12 = createComponent(Comp, { + render: state.dynamic ? good() : bad +}); +const template13 = createComponent(Comp, { + render: state.dynamic ? good : bad +}); +const template14 = createComponent(Comp, { + render: state.dynamic && good() +}); +const template15 = createComponent(Comp, { + render: state.dynamic && good +}); +const template16 = createComponent(Comp, { + render: state.dynamic || good() +}); +const template17 = createComponent(Comp, { + render: state.dynamic ? createComponent(Comp, {}) : createComponent(Comp, {}) +}); +const template18 = createComponent(Comp, { + get children: [ + state.dynamic ? createComponent(Comp, {}) : createComponent(Comp, {}) + ] +}); +const template19 = () => { + var _el = _tmpl$1.cloneNode(true); + effect(() => { + return setAttribute(_el, "innerHTML", state.dynamic ? createComponent(Comp, {}) : createComponent(Comp, {})); + }); + return _el; +}; +const template20 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, state.dynamic ? createComponent(Comp, {}) : createComponent(Comp, {}), null); + return _tmpl; +}; +const template21 = createComponent(Comp, { + render: state?.dynamic ? "a" : "b" +}); +const template22 = createComponent(Comp, { + get children: [ + state?.dynamic ? "a" : "b" + ] +}); +const template23 = () => { + var _el = _tmpl$1.cloneNode(true); + effect(() => { + return setAttribute(_el, "innerHTML", state?.dynamic ? "a" : "b"); + }); + return _el; +}; +const template24 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, state?.dynamic ? "a" : "b", null); + return _tmpl; +}; +const template25 = createComponent(Comp, { + render: state.dynamic ?? createComponent(Comp, {}) +}); +const template26 = createComponent(Comp, { + get children: [ + state.dynamic ?? createComponent(Comp, {}) + ] +}); +const template27 = () => { + var _el = _tmpl$1.cloneNode(true); + effect(() => { + return setAttribute(_el, "innerHTML", state.dynamic ?? createComponent(Comp, {})); + }); + return _el; +}; +const template28 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, state.dynamic ?? createComponent(Comp, {}), null); + return _tmpl; +}; +const template29 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, (thing() && thing1()) ?? thing2() ?? thing3(), null); + return _tmpl; +}; +const template30 = () => { + var _tmpl = _tmpl.cloneNode(true); + insert(_tmpl, thing() || thing1() || thing2(), null); + return _tmpl; +}; +const template31 = createComponent(Comp, { + value: count() ? count() ? count() : count() : count() +}); diff --git a/test/bun.js/solid-dom-fixtures/conditionalExpressions/output.js b/test/bun.js/solid-dom-fixtures/conditionalExpressions/output.js new file mode 100644 index 000000000..1511f4222 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/conditionalExpressions/output.js @@ -0,0 +1,319 @@ +import { template as _$template } from "r-dom"; +import { effect as _$effect } from "r-dom"; +import { createComponent as _$createComponent } from "r-dom"; +import { memo as _$memo } from "r-dom"; +import { insert as _$insert } from "r-dom"; + +const _tmpl$ = /*#__PURE__*/ _$template(`<div></div>`, 2); + +const template1 = (() => { + const _el$ = _tmpl$.cloneNode(true); + + _$insert(_el$, simple); + + return _el$; +})(); + +const template2 = (() => { + const _el$2 = _tmpl$.cloneNode(true); + + _$insert(_el$2, () => state.dynamic); + + return _el$2; +})(); + +const template3 = (() => { + const _el$3 = _tmpl$.cloneNode(true); + + _$insert(_el$3, simple ? good : bad); + + return _el$3; +})(); + +const template4 = (() => { + const _el$4 = _tmpl$.cloneNode(true); + + _$insert(_el$4, () => (simple ? good() : bad)); + + return _el$4; +})(); + +const template5 = (() => { + const _el$5 = _tmpl$.cloneNode(true); + + _$insert( + _el$5, + (() => { + const _c$ = _$memo(() => !!state.dynamic, true); + + return () => (_c$() ? good() : bad); + })() + ); + + return _el$5; +})(); + +const template6 = (() => { + const _el$6 = _tmpl$.cloneNode(true); + + _$insert( + _el$6, + (() => { + const _c$2 = _$memo(() => !!state.dynamic, true); + + return () => _c$2() && good(); + })() + ); + + return _el$6; +})(); + +const template7 = (() => { + const _el$7 = _tmpl$.cloneNode(true); + + _$insert( + _el$7, + (() => { + const _c$3 = _$memo(() => state.count > 5, true); + + return () => + _c$3() + ? (() => { + const _c$4 = _$memo(() => !!state.dynamic, true); + + return () => (_c$4() ? best : good()); + })() + : bad; + })() + ); + + return _el$7; +})(); + +const template8 = (() => { + const _el$8 = _tmpl$.cloneNode(true); + + _$insert( + _el$8, + (() => { + const _c$5 = _$memo(() => !!(state.dynamic && state.something), true); + + return () => _c$5() && good(); + })() + ); + + return _el$8; +})(); + +const template9 = (() => { + const _el$9 = _tmpl$.cloneNode(true); + + _$insert( + _el$9, + (() => { + const _c$6 = _$memo(() => !!state.dynamic, true); + + return () => (_c$6() && good()) || bad; + })() + ); + + return _el$9; +})(); + +const template10 = (() => { + const _el$10 = _tmpl$.cloneNode(true); + + _$insert(_el$10, () => + state.a ? "a" : state.b ? "b" : state.c ? "c" : "fallback" + ); + + return _el$10; +})(); + +const template11 = (() => { + const _el$11 = _tmpl$.cloneNode(true); + + _$insert( + _el$11, + (() => { + const _c$7 = _$memo(() => !!state.a, true); + + return () => + _c$7() + ? a() + : (() => { + const _c$8 = _$memo(() => !!state.b, true); + + return () => (_c$8() ? b() : state.c ? "c" : "fallback"); + })(); + })() + ); + + return _el$11; +})(); + +const template12 = _$createComponent(Comp, { + get render() { + return _$memo(() => !!state.dynamic, true)() ? good() : bad; + }, +}); // no dynamic predicate + +const template13 = _$createComponent(Comp, { + get render() { + return state.dynamic ? good : bad; + }, +}); + +const template14 = _$createComponent(Comp, { + get render() { + return _$memo(() => !!state.dynamic, true)() && good(); + }, +}); // no dynamic predicate + +const template15 = _$createComponent(Comp, { + get render() { + return state.dynamic && good; + }, +}); + +const template16 = _$createComponent(Comp, { + get render() { + return state.dynamic || good(); + }, +}); + +const template17 = _$createComponent(Comp, { + get render() { + return _$memo(() => !!state.dynamic, true)() + ? _$createComponent(Comp, {}) + : _$createComponent(Comp, {}); + }, +}); + +const template18 = _$createComponent(Comp, { + get children() { + return _$memo(() => !!state.dynamic, true)() + ? _$createComponent(Comp, {}) + : _$createComponent(Comp, {}); + }, +}); + +const template19 = (() => { + const _el$12 = _tmpl$.cloneNode(true); + + _$effect( + () => + (_el$12.innerHTML = state.dynamic + ? _$createComponent(Comp, {}) + : _$createComponent(Comp, {})) + ); + + return _el$12; +})(); + +const template20 = (() => { + const _el$13 = _tmpl$.cloneNode(true); + + _$insert( + _el$13, + (() => { + const _c$9 = _$memo(() => !!state.dynamic, true); + + return () => + _c$9() ? _$createComponent(Comp, {}) : _$createComponent(Comp, {}); + })() + ); + + return _el$13; +})(); + +const template21 = _$createComponent(Comp, { + get render() { + return state?.dynamic ? "a" : "b"; + }, +}); + +const template22 = _$createComponent(Comp, { + get children() { + return state?.dynamic ? "a" : "b"; + }, +}); + +const template23 = (() => { + const _el$14 = _tmpl$.cloneNode(true); + + _$effect(() => (_el$14.innerHTML = state?.dynamic ? "a" : "b")); + + return _el$14; +})(); + +const template24 = (() => { + const _el$15 = _tmpl$.cloneNode(true); + + _$insert(_el$15, () => (state?.dynamic ? "a" : "b")); + + return _el$15; +})(); + +const template25 = _$createComponent(Comp, { + get render() { + return state.dynamic ?? _$createComponent(Comp, {}); + }, +}); + +const template26 = _$createComponent(Comp, { + get children() { + return state.dynamic ?? _$createComponent(Comp, {}); + }, +}); + +const template27 = (() => { + const _el$16 = _tmpl$.cloneNode(true); + + _$effect( + () => (_el$16.innerHTML = state.dynamic ?? _$createComponent(Comp, {})) + ); + + return _el$16; +})(); + +const template28 = (() => { + const _el$17 = _tmpl$.cloneNode(true); + + _$insert(_el$17, () => state.dynamic ?? _$createComponent(Comp, {})); + + return _el$17; +})(); + +const template29 = (() => { + const _el$18 = _tmpl$.cloneNode(true); + + _$insert( + _el$18, + (() => { + const _c$10 = _$memo(() => !!thing(), true); + + return () => (_c$10() && thing1()) ?? thing2() ?? thing3(); + })() + ); + + return _el$18; +})(); + +const template30 = (() => { + const _el$19 = _tmpl$.cloneNode(true); + + _$insert(_el$19, () => thing() || thing1() || thing2()); + + return _el$19; +})(); + +const template31 = _$createComponent(Comp, { + get value() { + return _$memo(() => !!count(), true)() + ? _$memo(() => !!count(), true)() + ? count() + : count() + : count(); + }, +}); diff --git a/test/bun.js/solid-dom-fixtures/customElements/code.js b/test/bun.js/solid-dom-fixtures/customElements/code.js new file mode 100644 index 000000000..f2e2bd02d --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/customElements/code.js @@ -0,0 +1,29 @@ +const template = ( + <my-element + some-attr={name} + notProp={data} + attr:my-attr={data} + prop:someProp={data} + /> +); + +const template2 = ( + <my-element + some-attr={state.name} + notProp={state.data} + attr:my-attr={state.data} + prop:someProp={state.data} + /> +); + +const template3 = ( + <my-element> + <header slot="head">Title</header> + </my-element> +); + +const template4 = ( + <> + <slot name="head"></slot> + </> +); diff --git a/test/bun.js/solid-dom-fixtures/customElements/output.bun.js b/test/bun.js/solid-dom-fixtures/customElements/output.bun.js new file mode 100644 index 000000000..79c46280c --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/customElements/output.bun.js @@ -0,0 +1,27 @@ +var _tmpl = _template$("<my-element/>", 0), _tmpl$2 = _template$('<my-element><header slot="head">Title</header></my-element>', 4); +const template = () => { + var _el = _tmpl.cloneNode(true); + setAttribute(_el, "some-attr", name); + setAttribute(_el, "notProp", data); + setAttribute(_el, "attr:my-attr", data); + setAttribute(_el, "prop:someProp", data); + return _el; +}; +const template2 = () => { + var _el = _tmpl.cloneNode(true); + effect(() => { + return setAttribute(_el, "some-attr", state.name); + }); + effect(() => { + return setAttribute(_el, "notProp", state.data); + }); + effect(() => { + return setAttribute(_el, "attr:my-attr", state.data); + }); + effect(() => { + return setAttribute(_el, "prop:someProp", state.data); + }); + return _el; +}; +const template3 = _tmpl$2.cloneNode(true); +const template4 = ; diff --git a/test/bun.js/solid-dom-fixtures/customElements/output.js b/test/bun.js/solid-dom-fixtures/customElements/output.js new file mode 100644 index 000000000..79274ce2c --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/customElements/output.js @@ -0,0 +1,66 @@ +import { template as _$template } from "r-dom"; +import { effect as _$effect } from "r-dom"; +import { getOwner as _$getOwner } from "r-dom"; +import { setAttribute as _$setAttribute } from "r-dom"; + +const _tmpl$ = /*#__PURE__*/ _$template(`<my-element></my-element>`, 2), + _tmpl$2 = /*#__PURE__*/ _$template( + `<my-element><header slot="head">Title</header></my-element>`, + 4 + ), + _tmpl$3 = /*#__PURE__*/ _$template(`<slot name="head"></slot>`, 2); + +const template = (() => { + const _el$ = document.importNode(_tmpl$, true); + + _el$.someAttr = name; + _el$.notprop = data; + + _$setAttribute(_el$, "my-attr", data); + + _el$.someProp = data; + _el$._$owner = _$getOwner(); + return _el$; +})(); + +const template2 = (() => { + const _el$2 = document.importNode(_tmpl$, true); + + _el$2._$owner = _$getOwner(); + + _$effect( + (_p$) => { + const _v$ = state.name, + _v$2 = state.data, + _v$3 = state.data, + _v$4 = state.data; + _v$ !== _p$._v$ && (_el$2.someAttr = _p$._v$ = _v$); + _v$2 !== _p$._v$2 && (_el$2.notprop = _p$._v$2 = _v$2); + _v$3 !== _p$._v$3 && _$setAttribute(_el$2, "my-attr", (_p$._v$3 = _v$3)); + _v$4 !== _p$._v$4 && (_el$2.someProp = _p$._v$4 = _v$4); + return _p$; + }, + { + _v$: undefined, + _v$2: undefined, + _v$3: undefined, + _v$4: undefined, + } + ); + + return _el$2; +})(); + +const template3 = (() => { + const _el$3 = document.importNode(_tmpl$2, true); + + _el$3._$owner = _$getOwner(); + return _el$3; +})(); + +const template4 = (() => { + const _el$4 = _tmpl$3.cloneNode(true); + + _el$4._$owner = _$getOwner(); + return _el$4; +})(); diff --git a/test/bun.js/solid-dom-fixtures/eventExpressions/code.js b/test/bun.js/solid-dom-fixtures/eventExpressions/code.js new file mode 100644 index 000000000..78bc5e199 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/eventExpressions/code.js @@ -0,0 +1,32 @@ +function hoisted1() { + console.log("hoisted"); +} +const hoisted2 = () => console.log("hoisted delegated"); + +const template = ( + <div id="main"> + <button onchange={() => console.log("bound")}>Change Bound</button> + <button onChange={[(id) => console.log("bound", id), id]}> + Change Bound + </button> + <button onchange={handler}>Change Bound</button> + <button onchange={[handler]}>Change Bound</button> + <button onchange={hoisted1}>Change Bound</button> + <button onclick={() => console.log("delegated")}>Click Delegated</button> + <button onClick={[(id) => console.log("delegated", id), rowId]}> + Click Delegated + </button> + <button onClick={handler}>Click Delegated</button> + <button onClick={[handler]}>Click Delegated</button> + <button onClick={hoisted2}>Click Delegated</button> + <button + on:click={() => console.log("listener")} + on:CAPS-ev={() => console.log("custom")} + > + Click Listener + </button> + <button oncapture:camelClick={() => console.log("listener")}> + Click Capture + </button> + </div> +); diff --git a/test/bun.js/solid-dom-fixtures/eventExpressions/output.bun.js b/test/bun.js/solid-dom-fixtures/eventExpressions/output.bun.js new file mode 100644 index 000000000..5d90654f9 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/eventExpressions/output.bun.js @@ -0,0 +1,57 @@ +var _tmpl$1 = _template$( + '<div id="main"><button>Change Bound</button><button>Change Bound</button><button>Change Bound</button><button>Change Bound</button><button>Change Bound</button><button>Click Delegated</button><button>Click Delegated</button><button>Click Delegated</button><button>Click Delegated</button><button>Click Delegated</button><button>Click Listener</button><button>Click Capture</button></div>', + 26 +); +function hoisted1() { + console.log("hoisted"); +} +const hoisted2 = () => console.log("hoisted delegated"); +const template = () => { + var _el = _tmpl.cloneNode(true), + _el$1 = _el.firstChild, + _el$2 = _el$1.nextSibling, + _el$3 = _el$2.nextSibling, + _el$4 = _el$3.nextSibling, + _el$5 = _el$4.nextSibling, + _el$6 = _el$5.nextSibling, + _el$7 = _el$6.nextSibling, + _el$8 = _el$7.nextSibling, + _el$9 = _el$8.nextSibling, + _el$10 = _el$9.nextSibling, + _el$11 = _el$10.nextSibling; + effect(() => { + return setAttribute(_el, "onchange", () => console.log("bound")); + }); + effect(() => { + return setAttribute(_el$1, "onChange", [ + (id) => console.log("bound", id), + id, + ]); + }); + setAttribute(_el$2, "onchange", handler); + effect(() => { + return setAttribute(_el$3, "onchange", [handler]); + }); + setAttribute(_el$4, "onchange", hoisted1); + _el$5.$$click = () => console.log("delegated"); + effect(() => { + return (_el$6.$$click = [(id) => console.log("delegated", id), rowId]); + }); + effect(() => { + return (_el$7.$$click = handler); + }); + effect(() => { + return (_el$8.$$click = [handler]); + }); + effect(() => { + return (_el$9.$$click = hoisted2); + }); + _el$10.addEventListener("click", () => console.log("listener")); + _el$10.addEventListener("CAPS-ev", () => console.log("custom")); + _el$11.addEventListener( + "apture:camelClick", + () => console.log("listener"), + true + ); + return _el; +}; diff --git a/test/bun.js/solid-dom-fixtures/eventExpressions/output.js b/test/bun.js/solid-dom-fixtures/eventExpressions/output.js new file mode 100644 index 000000000..c24a1f89f --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/eventExpressions/output.js @@ -0,0 +1,63 @@ +import { template as _$template } from "r-dom"; +import { delegateEvents as _$delegateEvents } from "r-dom"; +import { addEventListener as _$addEventListener } from "r-dom"; + +const _tmpl$ = /*#__PURE__*/ _$template( + `<div id="main"><button>Change Bound</button><button>Change Bound</button><button>Change Bound</button><button>Change Bound</button><button>Change Bound</button><button>Click Delegated</button><button>Click Delegated</button><button>Click Delegated</button><button>Click Delegated</button><button>Click Delegated</button><button>Click Listener</button><button>Click Capture</button></div>`, + 26 +); + +function hoisted1() { + console.log("hoisted"); +} + +const hoisted2 = () => console.log("hoisted delegated"); + +const template = (() => { + const _el$ = _tmpl$.cloneNode(true), + _el$2 = _el$.firstChild, + _el$3 = _el$2.nextSibling, + _el$4 = _el$3.nextSibling, + _el$5 = _el$4.nextSibling, + _el$6 = _el$5.nextSibling, + _el$7 = _el$6.nextSibling, + _el$8 = _el$7.nextSibling, + _el$9 = _el$8.nextSibling, + _el$10 = _el$9.nextSibling, + _el$11 = _el$10.nextSibling, + _el$12 = _el$11.nextSibling, + _el$13 = _el$12.nextSibling; + + _el$2.addEventListener("change", () => console.log("bound")); + + _el$3.addEventListener("change", (e) => + ((id) => console.log("bound", id))(id, e) + ); + + _$addEventListener(_el$4, "change", handler); + + _el$5.addEventListener("change", handler); + + _el$6.addEventListener("change", hoisted1); + + _el$7.$$click = () => console.log("delegated"); + + _el$8.$$click = (id) => console.log("delegated", id); + + _el$8.$$clickData = rowId; + + _$addEventListener(_el$9, "click", handler, true); + + _el$10.$$click = handler; + _el$11.$$click = hoisted2; + + _el$12.addEventListener("click", () => console.log("listener")); + + _el$12.addEventListener("CAPS-ev", () => console.log("custom")); + + _el$13.addEventListener("camelClick", () => console.log("listener"), true); + + return _el$; +})(); + +_$delegateEvents(["click"]); diff --git a/test/bun.js/solid-dom-fixtures/fragments/code.js b/test/bun.js/solid-dom-fixtures/fragments/code.js new file mode 100644 index 000000000..0b6021e44 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/fragments/code.js @@ -0,0 +1,83 @@ +const multiStatic = ( + <> + <div>First</div> + <div>Last</div> + </> +); + +const multiExpression = ( + <> + <div>First</div> + {inserted} + <div>Last</div> + After + </> +); + +const multiDynamic = ( + <> + <div id={state.first}>First</div> + {state.inserted} + <div id={state.last}>Last</div> + After + </> +); + +const singleExpression = <>{inserted}</>; + +const singleDynamic = <>{inserted()}</>; + +const firstStatic = ( + <> + {inserted} + <div /> + </> +); + +const firstDynamic = ( + <> + {inserted()} + <div /> + </> +); + +const firstComponent = ( + <> + <Component /> + <div /> + </> +); + +const lastStatic = ( + <> + <div /> + {inserted} + </> +); + +const lastDynamic = ( + <> + <div /> + {inserted()} + </> +); + +const lastComponent = ( + <> + <div /> + <Component /> + </> +); + +const spaces = ( + <> + <span>1</span> <span>2</span> <span>3</span> + </> +); +const multiLineTrailing = ( + <> + <span>1</span> + <span>2</span> + <span>3</span> + </> +); diff --git a/test/bun.js/solid-dom-fixtures/fragments/output.bun.js b/test/bun.js/solid-dom-fixtures/fragments/output.bun.js new file mode 100644 index 000000000..54d980cee --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/fragments/output.bun.js @@ -0,0 +1,13 @@ +const multiStatic = ; +const multiExpression = ; +const multiDynamic = ; +const singleExpression = ; +const singleDynamic = ; +const firstStatic = ; +const firstDynamic = ; +const firstComponent = ; +const lastStatic = ; +const lastDynamic = ; +const lastComponent = ; +const spaces = ; +const multiLineTrailing = ; diff --git a/test/bun.js/solid-dom-fixtures/fragments/output.js b/test/bun.js/solid-dom-fixtures/fragments/output.js new file mode 100644 index 000000000..5fe0c767c --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/fragments/output.js @@ -0,0 +1,66 @@ +import { template as _$template } from "r-dom"; +import { createComponent as _$createComponent } from "r-dom"; +import { memo as _$memo } from "r-dom"; +import { setAttribute as _$setAttribute } from "r-dom"; +import { effect as _$effect } from "r-dom"; + +const _tmpl$ = /*#__PURE__*/ _$template(`<div>First</div>`, 2), + _tmpl$2 = /*#__PURE__*/ _$template(`<div>Last</div>`, 2), + _tmpl$3 = /*#__PURE__*/ _$template(`<div></div>`, 2), + _tmpl$4 = /*#__PURE__*/ _$template(`<span>1</span>`, 2), + _tmpl$5 = /*#__PURE__*/ _$template(`<span>2</span>`, 2), + _tmpl$6 = /*#__PURE__*/ _$template(`<span>3</span>`, 2); + +const multiStatic = [_tmpl$.cloneNode(true), _tmpl$2.cloneNode(true)]; +const multiExpression = [ + _tmpl$.cloneNode(true), + inserted, + _tmpl$2.cloneNode(true), + "After", +]; +const multiDynamic = [ + (() => { + const _el$5 = _tmpl$.cloneNode(true); + + _$effect(() => _$setAttribute(_el$5, "id", state.first)); + + return _el$5; + })(), + _$memo(() => state.inserted), + (() => { + const _el$6 = _tmpl$2.cloneNode(true); + + _$effect(() => _$setAttribute(_el$6, "id", state.last)); + + return _el$6; + })(), + "After", +]; +const singleExpression = inserted; + +const singleDynamic = _$memo(inserted); + +const firstStatic = [inserted, _tmpl$3.cloneNode(true)]; +const firstDynamic = [_$memo(inserted), _tmpl$3.cloneNode(true)]; +const firstComponent = [ + _$createComponent(Component, {}), + _tmpl$3.cloneNode(true), +]; +const lastStatic = [_tmpl$3.cloneNode(true), inserted]; +const lastDynamic = [_tmpl$3.cloneNode(true), _$memo(inserted)]; +const lastComponent = [ + _tmpl$3.cloneNode(true), + _$createComponent(Component, {}), +]; +const spaces = [ + _tmpl$4.cloneNode(true), + " ", + _tmpl$5.cloneNode(true), + " ", + _tmpl$6.cloneNode(true), +]; +const multiLineTrailing = [ + _tmpl$4.cloneNode(true), + _tmpl$5.cloneNode(true), + _tmpl$6.cloneNode(true), +]; diff --git a/test/bun.js/solid-dom-fixtures/insertChildren/code.js b/test/bun.js/solid-dom-fixtures/insertChildren/code.js new file mode 100644 index 000000000..41d3d017e --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/insertChildren/code.js @@ -0,0 +1,36 @@ +const children = <div />; +const dynamic = { + children, +}; +const template = <Module children={children} />; +const template2 = <module children={children} />; +const template3 = <module children={children}>Hello</module>; +const template4 = ( + <module children={children}> + <Hello /> + </module> +); +const template5 = <module children={dynamic.children} />; +const template6 = <Module children={dynamic.children} />; +const template7 = <module {...dynamic} />; +const template8 = <module {...dynamic}>Hello</module>; +const template9 = <module {...dynamic}>{dynamic.children}</module>; +const template10 = <Module {...dynamic}>Hello</Module>; +const template11 = <module children={/*@once*/ state.children} />; +const template12 = <Module children={/*@once*/ state.children} />; +const template13 = <module>{...children}</module>; +const template14 = <Module>{...children}</Module>; +const template15 = <module>{...dynamic.children}</module>; +const template16 = <Module>{...dynamic.children}</Module>; +const template18 = <module>Hi {...children}</module>; +const template19 = <Module>Hi {...children}</Module>; +const template20 = <module>{children()}</module>; +const template21 = <Module>{children()}</Module>; +const template22 = <module>{state.children()}</module>; +const template23 = <Module>{state.children()}</Module>; + +const tiles = []; +tiles.push(<div>Test 1</div>); +const template24 = <div>{tiles}</div>; + +const comma = <div>{(expression(), "static")}</div>; diff --git a/test/bun.js/solid-dom-fixtures/insertChildren/output.js b/test/bun.js/solid-dom-fixtures/insertChildren/output.js new file mode 100644 index 000000000..9ad937742 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/insertChildren/output.js @@ -0,0 +1,185 @@ +import { template as _$template } from "r-dom"; +import { mergeProps as _$mergeProps } from "r-dom"; +import { spread as _$spread } from "r-dom"; +import { insert as _$insert } from "r-dom"; +import { createComponent as _$createComponent } from "r-dom"; + +const _tmpl$ = /*#__PURE__*/ _$template(`<div></div>`, 2), + _tmpl$2 = /*#__PURE__*/ _$template(`<module></module>`, 2), + _tmpl$3 = /*#__PURE__*/ _$template(`<module>Hello</module>`, 2), + _tmpl$4 = /*#__PURE__*/ _$template(`<module>Hi </module>`, 2), + _tmpl$5 = /*#__PURE__*/ _$template(`<div>Test 1</div>`, 2); + +const children = _tmpl$.cloneNode(true); + +const dynamic = { + children, +}; + +const template = _$createComponent(Module, { + children: children, +}); + +const template2 = (() => { + const _el$2 = _tmpl$2.cloneNode(true); + + _$insert(_el$2, children); + + return _el$2; +})(); + +const template3 = _tmpl$3.cloneNode(true); + +const template4 = (() => { + const _el$4 = _tmpl$2.cloneNode(true); + + _$insert(_el$4, _$createComponent(Hello, {})); + + return _el$4; +})(); + +const template5 = (() => { + const _el$5 = _tmpl$2.cloneNode(true); + + _$insert(_el$5, () => dynamic.children); + + return _el$5; +})(); + +const template6 = _$createComponent(Module, { + get children() { + return dynamic.children; + }, +}); + +const template7 = (() => { + const _el$6 = _tmpl$2.cloneNode(true); + + _$spread(_el$6, dynamic, false, false); + + return _el$6; +})(); + +const template8 = (() => { + const _el$7 = _tmpl$3.cloneNode(true); + + _$spread(_el$7, dynamic, false, true); + + return _el$7; +})(); + +const template9 = (() => { + const _el$8 = _tmpl$2.cloneNode(true); + + _$spread(_el$8, dynamic, false, true); + + _$insert(_el$8, () => dynamic.children); + + return _el$8; +})(); + +const template10 = _$createComponent( + Module, + _$mergeProps(dynamic, { + children: "Hello", + }) +); + +const template11 = (() => { + const _el$9 = _tmpl$2.cloneNode(true); + + _$insert(_el$9, state.children); + + return _el$9; +})(); + +const template12 = _$createComponent(Module, { + children: state.children, +}); + +const template13 = (() => { + const _el$10 = _tmpl$2.cloneNode(true); + + _$insert(_el$10, children); + + return _el$10; +})(); + +const template14 = _$createComponent(Module, { + children: children, +}); + +const template15 = (() => { + const _el$11 = _tmpl$2.cloneNode(true); + + _$insert(_el$11, () => dynamic.children); + + return _el$11; +})(); + +const template16 = _$createComponent(Module, { + get children() { + return dynamic.children; + }, +}); + +const template18 = (() => { + const _el$12 = _tmpl$4.cloneNode(true); + + _$insert(_el$12, children, null); + + return _el$12; +})(); + +const template19 = _$createComponent(Module, { + get children() { + return ["Hi ", children]; + }, +}); + +const template20 = (() => { + const _el$13 = _tmpl$2.cloneNode(true); + + _$insert(_el$13, children); + + return _el$13; +})(); + +const template21 = _$createComponent(Module, { + get children() { + return children(); + }, +}); + +const template22 = (() => { + const _el$14 = _tmpl$2.cloneNode(true); + + _$insert(_el$14, () => state.children()); + + return _el$14; +})(); + +const template23 = _$createComponent(Module, { + get children() { + return state.children(); + }, +}); + +const tiles = []; +tiles.push(_tmpl$5.cloneNode(true)); + +const template24 = (() => { + const _el$16 = _tmpl$.cloneNode(true); + + _$insert(_el$16, tiles); + + return _el$16; +})(); + +const comma = (() => { + const _el$17 = _tmpl$.cloneNode(true); + + _$insert(_el$17, () => (expression(), "static")); + + return _el$17; +})(); diff --git a/test/bun.js/solid-dom-fixtures/namespaceElements/code.js b/test/bun.js/solid-dom-fixtures/namespaceElements/code.js new file mode 100644 index 000000000..7ad410329 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/namespaceElements/code.js @@ -0,0 +1,6 @@ +const template = <module.A />; +const template2 = <module.a.B />; +const template3 = <module.A.B />; +const template4 = <module.a-b />; +const template5 = <module.a-b.c-d />; +const template6 = <namespace:tag />; diff --git a/test/bun.js/solid-dom-fixtures/namespaceElements/output.js b/test/bun.js/solid-dom-fixtures/namespaceElements/output.js new file mode 100644 index 000000000..162ffb140 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/namespaceElements/output.js @@ -0,0 +1,16 @@ +import { template as _$template } from "r-dom"; +import { createComponent as _$createComponent } from "r-dom"; + +const _tmpl$ = /*#__PURE__*/ _$template(`<namespace:tag></namespace:tag>`, 2); + +const template = _$createComponent(module.A, {}); + +const template2 = _$createComponent(module.a.B, {}); + +const template3 = _$createComponent(module.A.B, {}); + +const template4 = _$createComponent(module["a-b"], {}); + +const template5 = _$createComponent(module["a-b"]["c-d"], {}); + +const template6 = _tmpl$.cloneNode(true); diff --git a/test/bun.js/solid-dom-fixtures/simpleElements/code.js b/test/bun.js/solid-dom-fixtures/simpleElements/code.js new file mode 100644 index 000000000..c3537ee7d --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/simpleElements/code.js @@ -0,0 +1,9 @@ +const template = ( + <div id="main"> + <style>{"div { color: red; }"}</style> + <h1>Welcome</h1> + <label for={"entry"}>Edit:</label> + <input id="entry" type="text" /> + {/* Comment Node */} + </div> +); diff --git a/test/bun.js/solid-dom-fixtures/simpleElements/output.bun.js b/test/bun.js/solid-dom-fixtures/simpleElements/output.bun.js new file mode 100644 index 000000000..72d61c1e3 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/simpleElements/output.bun.js @@ -0,0 +1,5 @@ +var _tmpl$1 = _template$( + '<div id="main"><style>div { color: red; }</style><h1>Welcome</h1><label for="entry">Edit:</label><input id="entry" type="text"/></div>', + 8 +); +const template = _tmpl$1.cloneNode(true); diff --git a/test/bun.js/solid-dom-fixtures/simpleElements/output.js b/test/bun.js/solid-dom-fixtures/simpleElements/output.js new file mode 100644 index 000000000..5d16f6767 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/simpleElements/output.js @@ -0,0 +1,8 @@ +import { template as _$template } from "r-dom"; + +const _tmpl$ = /*#__PURE__*/ _$template( + `<div id="main"><style>div { color: red; }</style><h1>Welcome</h1><label for="entry">Edit:</label><input id="entry" type="text"></div>`, + 9 +); + +const template = _tmpl$.cloneNode(true); diff --git a/test/bun.js/solid-dom-fixtures/textInterpolation/code.js b/test/bun.js/solid-dom-fixtures/textInterpolation/code.js new file mode 100644 index 000000000..21698ea89 --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/textInterpolation/code.js @@ -0,0 +1,72 @@ +const trailing = <span>Hello </span>; +const leading = <span> John</span>; + +/* prettier-ignore */ +const extraSpaces = <span>Hello John</span>; + +const trailingExpr = <span>Hello {name}</span>; +const leadingExpr = <span>{greeting} John</span>; + +/* prettier-ignore */ +const multiExpr = <span>{greeting} {name}</span>; + +/* prettier-ignore */ +const multiExprSpaced = <span> {greeting} {name} </span>; + +/* prettier-ignore */ +const multiExprTogether = <span> {greeting}{name} </span>; + +/* prettier-ignore */ +const multiLine = <span> + + Hello + +</span> + +/* prettier-ignore */ +const multiLineTrailingSpace = <span> + Hello + John +</span> + +/* prettier-ignore */ +const multiLineNoTrailingSpace = <span> + Hello + John +</span> + +/* prettier-ignore */ +const escape = <span> + <Hi> +</span> + +/* prettier-ignore */ +const escape2 = <Comp> + <Hi> +</Comp> + +/* prettier-ignore */ +const escape3 = <> + <Hi> +</> + +const injection = <span>Hi{"<script>alert();</script>"}</span>; + +let value = "World"; +const evaluated = <span>Hello {value + "!"}</span>; + +let number = 4 + 5; +const evaluatedNonString = <span>4 + 5 = {number}</span>; + +const newLineLiteral = ( + <div> + {s} + {"\n"}d + </div> +); + +const trailingSpace = <div>{expr}</div>; + +const trailingSpaceComp = <Comp>{expr}</Comp>; + +const trailingSpaceFrag = <>{expr}</>; diff --git a/test/bun.js/solid-dom-fixtures/textInterpolation/output.bun.js b/test/bun.js/solid-dom-fixtures/textInterpolation/output.bun.js new file mode 100644 index 000000000..eb4c5347a --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/textInterpolation/output.bun.js @@ -0,0 +1,71 @@ +var _tmpl$1 = template("<span>Hello </span>", 2), _tmpl$2 = template("<span> John</span>", 2), _tmpl$3 = template("<span>Hello John</span>", 2), _tmpl$3 = template("<span> </span>", 4), _tmpl$4 = template("<span> </span>", 4), _tmpl$5 = template("<span> </span>", 4), _tmpl$7 = template("<span>Hello</span>", 2), _tmpl$8 = template("<span>Hello John</span>", 2), _tmpl$9 = template("<span>Β <Hi>Β </span>", 2), _tmpl$10 = template("<span>Hi<script>alert();</script></span>", 2), _tmpl$10 = template("<span>4 + 5 = </span>", 3), _tmpl$11 = template("<div>\nd</div>", 3), _tmpl$12 = template("<div</div>", 2); +const trailing = _tmpl$1.cloneNode(true); +const leading = _tmpl$2.cloneNode(true); +const extraSpaces = _tmpl$3.cloneNode(true); +const trailingExpr = () => { + var _tmpl$1 = _tmpl$1.cloneNode(true); + insert(_tmpl$1, name, null); + return _tmpl$1; +}; +const leadingExpr = () => { + var _tmpl$2 = _tmpl$2.cloneNode(true); + insert(_tmpl$2, greeting, null); + return _tmpl$2; +}; +const multiExpr = () => { + var _tmpl$3 = _tmpl$3.cloneNode(true); + insert(_tmpl$3, greeting, null); + insert(_tmpl$3, name, null); + return _tmpl$3; +}; +const multiExprSpaced = () => { + var _tmpl$4 = _tmpl$4.cloneNode(true); + insert(_tmpl$4, greeting, null); + insert(_tmpl$4, name, null); + return _tmpl$4; +}; +const multiExprTogether = () => { + var _tmpl$5 = _tmpl$5.cloneNode(true); + insert(_tmpl$5, greeting, null); + insert(_tmpl$5, name, null); + return _tmpl$5; +}; +const multiLine = _tmpl$7.cloneNode(true); +const multiLineTrailingSpace = _tmpl$8.cloneNode(true); +const multiLineNoTrailingSpace = _tmpl$8.cloneNode(true); +const escape = _tmpl$9.cloneNode(true); +const escape2 = createComponent(Comp, { + get children: [ + "\xA0<Hi>\xA0" + ] +}); +const escape3 = ; +const injection = _tmpl$10.cloneNode(true); +let value = "World"; +const evaluated = () => { + var _tmpl$1 = _tmpl$1.cloneNode(true); + insert(_tmpl$1, value + "!", null); + return _tmpl$1; +}; +let number = 4 + 5; +const evaluatedNonString = () => { + var _tmpl$10 = _tmpl$10.cloneNode(true); + insert(_tmpl$10, number, null); + return _tmpl$10; +}; +const newLineLiteral = () => { + var _tmpl$11 = _tmpl$11.cloneNode(true); + insert(_tmpl$11, s, null); + return _tmpl$11; +}; +const trailingSpace = () => { + var _tmpl$12 = _tmpl$12.cloneNode(true); + insert(_tmpl$12, expr, null); + return _tmpl$12; +}; +const trailingSpaceComp = createComponent(Comp, { + get children: [ + expr + ] +}); +const trailingSpaceFrag = ; diff --git a/test/bun.js/solid-dom-fixtures/textInterpolation/output.js b/test/bun.js/solid-dom-fixtures/textInterpolation/output.js new file mode 100644 index 000000000..b86a631fb --- /dev/null +++ b/test/bun.js/solid-dom-fixtures/textInterpolation/output.js @@ -0,0 +1,144 @@ +import { template as _$template } from "r-dom"; +import { createComponent as _$createComponent } from "r-dom"; +import { insert as _$insert } from "r-dom"; + +const _tmpl$ = /*#__PURE__*/ _$template(`<span>Hello </span>`, 2), + _tmpl$2 = /*#__PURE__*/ _$template(`<span> John</span>`, 2), + _tmpl$3 = /*#__PURE__*/ _$template(`<span>Hello John</span>`, 2), + _tmpl$4 = /*#__PURE__*/ _$template(`<span> </span>`, 2), + _tmpl$5 = /*#__PURE__*/ _$template(`<span> <!> <!> </span>`, 4), + _tmpl$6 = /*#__PURE__*/ _$template(`<span> <!> </span>`, 3), + _tmpl$7 = /*#__PURE__*/ _$template(`<span>Hello</span>`, 2), + _tmpl$8 = /*#__PURE__*/ _$template(`<span> <Hi> </span>`, 2), + _tmpl$9 = /*#__PURE__*/ _$template( + `<span>Hi<script>alert();</script></span>`, + 2 + ), + _tmpl$10 = /*#__PURE__*/ _$template(`<span>Hello World!</span>`, 2), + _tmpl$11 = /*#__PURE__*/ _$template(`<span>4 + 5 = 9</span>`, 2), + _tmpl$12 = /*#__PURE__*/ _$template( + `<div> +d</div>`, + 2 + ), + _tmpl$13 = /*#__PURE__*/ _$template(`<div></div>`, 2); + +const trailing = _tmpl$.cloneNode(true); + +const leading = _tmpl$2.cloneNode(true); +/* prettier-ignore */ + +const extraSpaces = _tmpl$3.cloneNode(true); + +const trailingExpr = (() => { + const _el$4 = _tmpl$.cloneNode(true), + _el$5 = _el$4.firstChild; + + _$insert(_el$4, name, null); + + return _el$4; +})(); + +const leadingExpr = (() => { + const _el$6 = _tmpl$2.cloneNode(true), + _el$7 = _el$6.firstChild; + + _$insert(_el$6, greeting, _el$7); + + return _el$6; +})(); +/* prettier-ignore */ + +const multiExpr = (() => { + const _el$8 = _tmpl$4.cloneNode(true), + _el$9 = _el$8.firstChild; + + _$insert(_el$8, greeting, _el$9); + + _$insert(_el$8, name, null); + + return _el$8; +})(); +/* prettier-ignore */ + +const multiExprSpaced = (() => { + const _el$10 = _tmpl$5.cloneNode(true), + _el$11 = _el$10.firstChild, + _el$14 = _el$11.nextSibling, + _el$12 = _el$14.nextSibling, + _el$15 = _el$12.nextSibling, + _el$13 = _el$15.nextSibling; + + _$insert(_el$10, greeting, _el$14); + + _$insert(_el$10, name, _el$15); + + return _el$10; +})(); +/* prettier-ignore */ + +const multiExprTogether = (() => { + const _el$16 = _tmpl$6.cloneNode(true), + _el$17 = _el$16.firstChild, + _el$19 = _el$17.nextSibling, + _el$18 = _el$19.nextSibling; + + _$insert(_el$16, greeting, _el$19); + + _$insert(_el$16, name, _el$19); + + return _el$16; +})(); +/* prettier-ignore */ + +const multiLine = _tmpl$7.cloneNode(true); +/* prettier-ignore */ + +const multiLineTrailingSpace = _tmpl$3.cloneNode(true); +/* prettier-ignore */ + +const multiLineNoTrailingSpace = _tmpl$3.cloneNode(true); +/* prettier-ignore */ + +const escape = _tmpl$8.cloneNode(true); +/* prettier-ignore */ + +const escape2 = _$createComponent(Comp, { + children: "\xA0<Hi>\xA0" +}); +/* prettier-ignore */ + +const escape3 = "\xA0<Hi>\xA0"; + +const injection = _tmpl$9.cloneNode(true); + +let value = "World"; + +const evaluated = _tmpl$10.cloneNode(true); + +let number = 4 + 5; + +const evaluatedNonString = _tmpl$11.cloneNode(true); + +const newLineLiteral = (() => { + const _el$27 = _tmpl$12.cloneNode(true), + _el$28 = _el$27.firstChild; + + _$insert(_el$27, s, _el$28); + + return _el$27; +})(); + +const trailingSpace = (() => { + const _el$29 = _tmpl$13.cloneNode(true); + + _$insert(_el$29, expr); + + return _el$29; +})(); + +const trailingSpaceComp = _$createComponent(Comp, { + children: expr, +}); + +const trailingSpaceFrag = expr; diff --git a/test/bun.js/some-fs.js b/test/bun.js/some-fs.js new file mode 100644 index 000000000..e6b31f162 --- /dev/null +++ b/test/bun.js/some-fs.js @@ -0,0 +1,51 @@ +const { mkdirSync, existsSync } = require("fs"); + +var performance = globalThis.performance; +if (!performance) { + try { + performance = require("perf_hooks").performance; + } catch (e) {} +} + +const count = parseInt(process.env.ITERATIONS || "1", 10) || 1; +var tempdir = `/tmp/some-fs-test/dir/${Date.now()}/hi`; + +for (let i = 0; i < count; i++) { + tempdir += `/${i.toString(36)}`; +} + +if (existsSync(tempdir)) { + throw new Error( + `existsSync reports ${tempdir} exists, but it probably does not` + ); +} + +var origTempDir = tempdir; +var iterations = new Array(count * count).fill(""); +var total = 0; +for (let i = 0; i < count; i++) { + for (let j = 0; j < count; j++) { + iterations[total++] = `${origTempDir}/${j.toString(36)}-${i.toString(36)}`; + } +} +tempdir = origTempDir; +mkdirSync(origTempDir, { recursive: true }); +const recurse = { recursive: false }; +const start = performance.now(); +for (let i = 0; i < total; i++) { + mkdirSync(iterations[i], recurse); +} + +console.log("MKDIR " + total + " depth took:", performance.now() - start, "ms"); + +if (!existsSync(tempdir)) { + throw new Error( + "Expected directory to exist after mkdirSync, but it doesn't" + ); +} + +if (mkdirSync(tempdir, { recursive: true })) { + throw new Error( + "mkdirSync shouldn't return directory name on existing directories" + ); +} diff --git a/test/bun.js/sql-raw.test.js b/test/bun.js/sql-raw.test.js new file mode 100644 index 000000000..ea7f72bd6 --- /dev/null +++ b/test/bun.js/sql-raw.test.js @@ -0,0 +1,71 @@ +import { expect, it } from "bun:test"; + +var SQL = globalThis[Symbol.for("Bun.lazy")]("sqlite"); + +it("works", () => { + const handle = SQL.open("/tmp/northwind.sqlite"); + + const stmt = SQL.prepare( + handle, + 'SELECT * FROM "Order" WHERE OrderDate > date($date)' + ); + expect(stmt.toString()).toBe( + `SELECT * FROM "Order" WHERE OrderDate > date(NULL)` + ); + + expect( + Array.isArray( + stmt.all({ + // do the conversion this way so that this test runs in multiple timezones + $date: new Date( + new Date(1996, 8, 1, 0, 0, 0, 0).toUTCString() + ).toISOString(), + }) + ) + ).toBe(true); + expect(stmt.toString()).toBe( + `SELECT * FROM "Order" WHERE OrderDate > date('1996-09-01T07:00:00.000Z')` + ); + + var ran = stmt.run({ + $date: new Date( + new Date(1997, 8, 1, 0, 0, 0, 0).toUTCString() + ).toISOString(), + }); + expect(Array.isArray(ran)).toBe(false); + expect(ran === undefined).toBe(true); + expect(stmt.toString()).toBe( + `SELECT * FROM "Order" WHERE OrderDate > date('1997-09-01T07:00:00.000Z')` + ); + + expect( + Array.isArray( + stmt.get({ + $date: new Date( + new Date(1998, 8, 1, 0, 0, 0, 0).toUTCString() + ).toISOString(), + }) + ) + ).toBe(false); + expect(stmt.toString()).toBe( + `SELECT * FROM "Order" WHERE OrderDate > date('1998-09-01T07:00:00.000Z')` + ); + expect(stmt.paramsCount).toBe(1); + expect(stmt.columnsCount).toBe(14); + expect(stmt.columns.length).toBe(14); + stmt.finalize(); + SQL.close(handle); +}); + +it("SQL.run works", () => { + const handle = SQL.open("/tmp/northwind.sqlite"); + expect(typeof handle).toBe("number"); + + expect( + SQL.run(handle, 'SELECT * FROM "Order" WHERE OrderDate > date($date)', { + $date: new Date(1996, 8, 1).toISOString(), + }) + ).toBe(undefined); + + SQL.close(handle); +}); diff --git a/test/bun.js/sqlite.test.js b/test/bun.js/sqlite.test.js new file mode 100644 index 000000000..2250f97f0 --- /dev/null +++ b/test/bun.js/sqlite.test.js @@ -0,0 +1,430 @@ +import { expect, it } from "bun:test"; +import { Database, constants } from "bun:sqlite"; + +var encode = (text) => Buffer.from(text); + +it("Database.open", () => { + // in a folder which doesn't exist + try { + Database.open( + "/this/database/does/not/exist.sqlite", + constants.SQLITE_OPEN_READWRITE + ); + throw new Error("Expected an error to be thrown"); + } catch (error) { + expect(error.message).toBe("unable to open database file"); + } + + // in a file which doesn't exist + try { + Database.open( + `/tmp/database-${Math.random()}.sqlite`, + constants.SQLITE_OPEN_READWRITE + ); + throw new Error("Expected an error to be thrown"); + } catch (error) { + expect(error.message).toBe("unable to open database file"); + } + + // in a file which doesn't exist + try { + Database.open(`/tmp/database-${Math.random()}.sqlite`, { readonly: true }); + throw new Error("Expected an error to be thrown"); + } catch (error) { + expect(error.message).toBe("unable to open database file"); + } + + // in a file which doesn't exist + try { + Database.open(`/tmp/database-${Math.random()}.sqlite`, { readwrite: true }); + throw new Error("Expected an error to be thrown"); + } catch (error) { + expect(error.message).toBe("unable to open database file"); + } + + // create works + { + var db = Database.open(`/tmp/database-${Math.random()}.sqlite`, { + create: true, + }); + db.close(); + } + + // this should not throw + // it creates an in-memory db + new Database().close(); +}); + +it("creates", () => { + const db = Database.open(":memory:"); + db.exec( + "CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT, value INTEGER, created TEXT, deci FLOAT, blobby BLOB)" + ); + const stmt = db.prepare( + "INSERT INTO test (name, value, deci, created, blobby) VALUES (?, ?, ?, ?, ?)" + ); + + stmt.run([ + "foo", + 1, + Math.fround(1.111), + new Date(1995, 12, 19).toISOString(), + encode("Hello World"), + ]); + stmt.run([ + "bar", + 2, + Math.fround(2.222), + new Date(1995, 12, 19).toISOString(), + encode("Hello World"), + ]); + stmt.run([ + "baz", + 3, + Math.fround(3.333), + new Date(1995, 12, 19).toISOString(), + encode("Hello World"), + ]); + + stmt.finalize(); + + const stmt2 = db.prepare("SELECT * FROM test"); + expect(JSON.stringify(stmt2.get())).toBe( + JSON.stringify({ + id: 1, + name: "foo", + value: 1, + created: new Date(1995, 12, 19).toISOString(), + deci: Math.fround(1.111), + blobby: encode("Hello World"), + }) + ); + + expect(JSON.stringify(stmt2.all())).toBe( + JSON.stringify([ + { + id: 1, + name: "foo", + value: 1, + created: new Date(1995, 12, 19).toISOString(), + deci: Math.fround(1.111), + blobby: encode("Hello World"), + }, + { + id: 2, + name: "bar", + value: 2, + created: new Date(1995, 12, 19).toISOString(), + deci: Math.fround(2.222), + blobby: encode("Hello World"), + }, + { + id: 3, + name: "baz", + value: 3, + created: new Date(1995, 12, 19).toISOString(), + deci: Math.fround(3.333), + blobby: encode("Hello World"), + }, + ]) + ); + expect(stmt2.run()).toBe(undefined); + + // not necessary to run but it's a good practice + stmt2.finalize(); +}); + +it("typechecks", () => { + const db = Database.open(":memory:"); + db.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)"); + db.exec('INSERT INTO test (name) VALUES ("Hello")'); + db.exec('INSERT INTO test (name) VALUES ("World")'); + + const q = db.prepare("SELECT * FROM test WHERE (name = ?)"); + + var expectfail = (val) => { + try { + q.run([val]); + throw new Error("Expected error"); + } catch (e) { + expect(e.message !== "Expected error").toBe(true); + expect(e.name).toBe("TypeError"); + } + + try { + q.all([val]); + throw new Error("Expected error"); + } catch (e) { + expect(e.message !== "Expected error").toBe(true); + expect(e.name).toBe("TypeError"); + } + + try { + q.get([val]); + throw new Error("Expected error"); + } catch (e) { + expect(e.message !== "Expected error").toBe(true); + expect(e.name).toBe("TypeError"); + } + }; + + expectfail(Symbol("oh hai")); + expectfail(new Date()); + expectfail(class Foo {}); + expectfail(() => class Foo {}); + expectfail(new RangeError("what")); + expectfail(new Map()); + expectfail(new Map([["foo", "bar"]])); + expectfail(new Set()); + expectfail(new Set([1, 2, 3])); +}); + +it("db.query supports TypedArray", () => { + const db = Database.open(":memory:"); + + db.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, blobby BLOB)"); + + const stmt = db.prepare("INSERT INTO test (blobby) VALUES (?)"); + stmt.run([encode("Hello World")]); + stmt.finalize(); + + const stmt2 = db.prepare("SELECT * FROM test"); + expect(JSON.stringify(stmt2.get())).toBe( + JSON.stringify({ + id: 1, + blobby: encode("Hello World"), + }) + ); + + const stmt3 = db.prepare("SELECT * FROM test WHERE (blobby = ?)"); + + expect(JSON.stringify(stmt3.get([encode("Hello World")]))).toBe( + JSON.stringify({ + id: 1, + blobby: encode("Hello World"), + }) + ); + + expect( + JSON.stringify( + db + .query("SELECT * FROM test WHERE (blobby = ?)") + .get([encode("Hello World")]) + ) + ).toBe( + JSON.stringify({ + id: 1, + blobby: encode("Hello World"), + }) + ); + + expect(stmt3.get([encode("Hello World NOT")])).toBe(null); +}); + +it("supports serialize/deserialize", () => { + const db = Database.open(":memory:"); + db.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)"); + db.exec('INSERT INTO test (name) VALUES ("Hello")'); + db.exec('INSERT INTO test (name) VALUES ("World")'); + + const input = db.serialize(); + const db2 = new Database(input); + + const stmt = db2.prepare("SELECT * FROM test"); + expect(JSON.stringify(stmt.get())).toBe( + JSON.stringify({ + id: 1, + name: "Hello", + }) + ); + + expect(JSON.stringify(stmt.all())).toBe( + JSON.stringify([ + { + id: 1, + name: "Hello", + }, + { + id: 2, + name: "World", + }, + ]) + ); + db2.exec("insert into test (name) values ('foo')"); + expect(JSON.stringify(stmt.all())).toBe( + JSON.stringify([ + { + id: 1, + name: "Hello", + }, + { + id: 2, + name: "World", + }, + { + id: 3, + name: "foo", + }, + ]) + ); + + const db3 = new Database(input, { readonly: true }); + try { + db3.exec("insert into test (name) values ('foo')"); + throw new Error("Expected error"); + } catch (e) { + expect(e.message).toBe("attempt to write a readonly database"); + } +}); + +it("db.query()", () => { + const db = Database.open(":memory:"); + db.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)"); + + expect(db[Symbol.for("Bun.Database.cache.count")]).toBe(0); + + var q = db.query("SELECT * FROM test WHERE name = ?"); + expect(q.get("Hello") === null).toBe(true); + + db.exec('INSERT INTO test (name) VALUES ("Hello")'); + db.exec('INSERT INTO test (name) VALUES ("World")'); + + var rows = db.query("SELECT * FROM test WHERE name = ?").all(["Hello"]); + + expect(JSON.stringify(rows)).toBe(JSON.stringify([{ id: 1, name: "Hello" }])); + + rows = db.query("SELECT * FROM test WHERE name = ?").all(["World"]); + + // if this fails, it means the query caching failed to update + expect(JSON.stringify(rows)).toBe(JSON.stringify([{ id: 2, name: "World" }])); + + rows = db.query("SELECT * FROM test WHERE name = ?").all(["Hello"]); + expect(JSON.stringify(rows)).toBe(JSON.stringify([{ id: 1, name: "Hello" }])); + + // check that the query is cached + expect(db[Symbol.for("Bun.Database.cache.count")]).toBe(1); + + db.clearQueryCache(); + + // check clearing the cache decremented the counter + expect(db[Symbol.for("Bun.Database.cache.count")]).toBe(0); + + q.finalize(); + try { + // check clearing the cache decremented the counter + + q.all(["Hello"]); + throw new Error("Should have thrown"); + } catch (e) { + expect(e.message !== "Should have thrown").toBe(true); + } + + // check that invalid queries are not cached + // and invalid queries throw + try { + db.query("SELECT * FROM BACON", ["Hello"]).all(); + throw new Error("Should have thrown"); + } catch (e) { + expect(e.message !== "Should have thrown").toBe(true); + expect(db[Symbol.for("Bun.Database.cache.count")]).toBe(0); + } + + // check that it supports multiple arguments + expect( + JSON.stringify( + db + .query("SELECT * FROM test where (name = ? OR name = ?)") + .all(["Hello", "Fooooo"]) + ) + ).toBe(JSON.stringify([{ id: 1, name: "Hello" }])); + expect( + JSON.stringify( + db + .query("SELECT * FROM test where (name = ? OR name = ?)") + .all("Hello", "Fooooo") + ) + ).toBe(JSON.stringify([{ id: 1, name: "Hello" }])); + + // throws if insufficeint arguments + try { + db.query("SELECT * FROM test where (name = ? OR name = ?)").all("Hello"); + } catch (e) { + expect(e.message).toBe("Expected 2 values, got 1"); + } + + // named parameters + expect( + JSON.stringify( + db + .query("SELECT * FROM test where (name = $hello OR name = $goodbye)") + .all({ + $hello: "Hello", + $goodbye: "Fooooo", + }) + ) + ).toBe(JSON.stringify([{ id: 1, name: "Hello" }])); + + db.close(); + + // Check that a closed database doesn't crash + // and does throw an error when trying to run a query + try { + db.query("SELECT * FROM test WHERE name = ?").all(["Hello"]); + throw new Error("Should have thrown"); + } catch (e) { + expect(e.message !== "Should have thrown").toBe(true); + } + + // check that we can call close multiple times + // it should not throw so that your code doesn't break + db.close(); + db.close(); + db.close(); +}); + +it("db.transaction()", () => { + const db = Database.open(":memory:"); + + db.exec( + "CREATE TABLE cats (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE, age INTEGER)" + ); + + const insert = db.prepare( + "INSERT INTO cats (name, age) VALUES (@name, @age)" + ); + + expect(db.inTransaction).toBe(false); + const insertMany = db.transaction((cats) => { + expect(db.inTransaction).toBe(true); + try { + for (const cat of cats) insert.run(cat); + } catch (exception) { + throw exception; + } + }); + + try { + insertMany([ + { "@name": "Joey", "@age": 2 }, + { "@name": "Sally", "@age": 4 }, + { "@name": "Junior", "@age": 1 }, + { "@name": "Sally", "@age": 4 }, + ]); + throw new Error("Should have thrown"); + } catch (exception) { + expect(exception.message).toBe("constraint failed"); + } + + expect(db.inTransaction).toBe(false); + expect(db.query("SELECT * FROM cats").all().length).toBe(0); + + expect(db.inTransaction).toBe(false); + insertMany([ + { "@name": "Joey", "@age": 2 }, + { "@name": "Sally", "@age": 4 }, + { "@name": "Junior", "@age": 1 }, + ]); + expect(db.inTransaction).toBe(false); + expect(db.query("SELECT * FROM cats").all().length).toBe(3); + expect(db.inTransaction).toBe(false); +}); diff --git a/test/bun.js/streams.test.js b/test/bun.js/streams.test.js new file mode 100644 index 000000000..ccbea1d09 --- /dev/null +++ b/test/bun.js/streams.test.js @@ -0,0 +1,317 @@ +import { file, readableStreamToArrayBuffer, readableStreamToArray } from "bun"; +import { expect, it, beforeEach, afterEach } from "bun:test"; +import { writeFileSync } from "node:fs"; +import { gc } from "./gc"; +new Uint8Array(); + +beforeEach(() => gc()); +afterEach(() => gc()); + +it("exists globally", () => { + expect(typeof ReadableStream).toBe("function"); + expect(typeof ReadableStreamBYOBReader).toBe("function"); + expect(typeof ReadableStreamBYOBRequest).toBe("function"); + expect(typeof ReadableStreamDefaultController).toBe("function"); + expect(typeof ReadableStreamDefaultReader).toBe("function"); + expect(typeof TransformStream).toBe("function"); + expect(typeof TransformStreamDefaultController).toBe("function"); + expect(typeof WritableStream).toBe("function"); + expect(typeof WritableStreamDefaultController).toBe("function"); + expect(typeof WritableStreamDefaultWriter).toBe("function"); + expect(typeof ByteLengthQueuingStrategy).toBe("function"); + expect(typeof CountQueuingStrategy).toBe("function"); +}); + +it("ReadableStream (direct)", async () => { + var stream = new ReadableStream({ + pull(controller) { + controller.write("hello"); + controller.write("world"); + controller.close(); + }, + cancel() {}, + type: "direct", + }); + var reader = stream.getReader(); + const chunk = await reader.read(); + expect(chunk.value.join("")).toBe(Buffer.from("helloworld").join("")); + expect((await reader.read()).done).toBe(true); + expect((await reader.read()).done).toBe(true); +}); + +it("ReadableStream (bytes)", async () => { + var stream = new ReadableStream({ + start(controller) { + controller.enqueue(Buffer.from("abdefgh")); + }, + pull(controller) {}, + cancel() {}, + type: "bytes", + }); + const chunks = []; + const chunk = await stream.getReader().read(); + chunks.push(chunk.value); + expect(chunks[0].join("")).toBe(Buffer.from("abdefgh").join("")); +}); + +it("ReadableStream (default)", async () => { + var stream = new ReadableStream({ + start(controller) { + controller.enqueue(Buffer.from("abdefgh")); + controller.close(); + }, + pull(controller) {}, + cancel() {}, + }); + const chunks = []; + const chunk = await stream.getReader().read(); + chunks.push(chunk.value); + expect(chunks[0].join("")).toBe(Buffer.from("abdefgh").join("")); +}); + +it("readableStreamToArray", async () => { + var queue = [Buffer.from("abdefgh")]; + var stream = new ReadableStream({ + pull(controller) { + var chunk = queue.shift(); + if (chunk) { + controller.enqueue(chunk); + } else { + controller.close(); + } + }, + cancel() {}, + type: "bytes", + }); + + const chunks = await readableStreamToArray(stream); + + expect(chunks[0].join("")).toBe(Buffer.from("abdefgh").join("")); +}); + +it("readableStreamToArrayBuffer (bytes)", async () => { + var queue = [Buffer.from("abdefgh")]; + var stream = new ReadableStream({ + pull(controller) { + var chunk = queue.shift(); + if (chunk) { + controller.enqueue(chunk); + } else { + controller.close(); + } + }, + cancel() {}, + type: "bytes", + }); + const buffer = await readableStreamToArrayBuffer(stream); + expect(new TextDecoder().decode(new Uint8Array(buffer))).toBe("abdefgh"); +}); + +it("readableStreamToArrayBuffer (default)", async () => { + var queue = [Buffer.from("abdefgh")]; + var stream = new ReadableStream({ + pull(controller) { + var chunk = queue.shift(); + if (chunk) { + controller.enqueue(chunk); + } else { + controller.close(); + } + }, + cancel() {}, + }); + + const buffer = await readableStreamToArrayBuffer(stream); + expect(new TextDecoder().decode(new Uint8Array(buffer))).toBe("abdefgh"); +}); + +it("ReadableStream for Blob", async () => { + var blob = new Blob(["abdefgh", "ijklmnop"]); + expect(await blob.text()).toBe("abdefghijklmnop"); + var stream; + try { + stream = blob.stream(); + stream = blob.stream(); + } catch (e) { + console.error(e); + console.error(e.stack); + } + const chunks = []; + var reader; + reader = stream.getReader(); + + while (true) { + var chunk; + try { + chunk = await reader.read(); + } catch (e) { + console.error(e); + console.error(e.stack); + } + + if (chunk.done) break; + chunks.push(new TextDecoder().decode(chunk.value)); + } + expect(chunks.join("")).toBe( + new TextDecoder().decode(Buffer.from("abdefghijklmnop")) + ); +}); + +it("ReadableStream for File", async () => { + var blob = file(import.meta.dir + "/fetch.js.txt"); + var stream = blob.stream(24); + const chunks = []; + var reader = stream.getReader(); + stream = undefined; + while (true) { + const chunk = await reader.read(); + gc(true); + if (chunk.done) break; + chunks.push(chunk.value); + expect(chunk.value.byteLength <= 24).toBe(true); + gc(true); + } + reader = undefined; + const output = new Uint8Array(await blob.arrayBuffer()).join(""); + const input = chunks.map((a) => a.join("")).join(""); + expect(output).toBe(input); + gc(true); +}); + +it("ReadableStream for File errors", async () => { + try { + var blob = file(import.meta.dir + "/fetch.js.txt.notfound"); + blob.stream().getReader(); + throw new Error("should not reach here"); + } catch (e) { + expect(e.code).toBe("ENOENT"); + expect(e.syscall).toBe("open"); + } +}); + +it("ReadableStream for empty blob closes immediately", async () => { + var blob = new Blob([]); + var stream = blob.stream(); + const chunks = []; + var reader = stream.getReader(); + while (true) { + const chunk = await reader.read(); + if (chunk.done) break; + chunks.push(chunk.value); + } + + expect(chunks.length).toBe(0); +}); + +it("ReadableStream for empty file closes immediately", async () => { + writeFileSync("/tmp/bun-empty-file-123456", ""); + var blob = file("/tmp/bun-empty-file-123456"); + var stream; + try { + stream = blob.stream(); + } catch (e) { + console.error(e.stack); + } + const chunks = []; + var reader = stream.getReader(); + while (true) { + const chunk = await reader.read(); + if (chunk.done) break; + chunks.push(chunk.value); + } + + expect(chunks.length).toBe(0); +}); + +it("new Response(stream).arrayBuffer() (bytes)", async () => { + var queue = [Buffer.from("abdefgh")]; + var stream = new ReadableStream({ + pull(controller) { + var chunk = queue.shift(); + if (chunk) { + controller.enqueue(chunk); + } else { + controller.close(); + } + }, + cancel() {}, + type: "bytes", + }); + const buffer = await new Response(stream).arrayBuffer(); + expect(new TextDecoder().decode(new Uint8Array(buffer))).toBe("abdefgh"); +}); + +it("new Response(stream).arrayBuffer() (default)", async () => { + var queue = [Buffer.from("abdefgh")]; + var stream = new ReadableStream({ + pull(controller) { + var chunk = queue.shift(); + if (chunk) { + controller.enqueue(chunk); + } else { + controller.close(); + } + }, + cancel() {}, + }); + const buffer = await new Response(stream).arrayBuffer(); + expect(new TextDecoder().decode(new Uint8Array(buffer))).toBe("abdefgh"); +}); + +it("new Response(stream).text() (default)", async () => { + var queue = [Buffer.from("abdefgh")]; + var stream = new ReadableStream({ + pull(controller) { + var chunk = queue.shift(); + if (chunk) { + controller.enqueue(chunk); + } else { + controller.close(); + } + }, + cancel() {}, + }); + const text = await new Response(stream).text(); + expect(text).toBe("abdefgh"); +}); + +it("new Response(stream).json() (default)", async () => { + var queue = [Buffer.from(JSON.stringify({ hello: true }))]; + var stream = new ReadableStream({ + pull(controller) { + var chunk = queue.shift(); + if (chunk) { + controller.enqueue(chunk); + } else { + controller.close(); + } + }, + cancel() {}, + }); + const json = await new Response(stream).json(); + expect(json.hello).toBe(true); +}); + +it("new Response(stream).blob() (default)", async () => { + var queue = [Buffer.from(JSON.stringify({ hello: true }))]; + var stream = new ReadableStream({ + pull(controller) { + var chunk = queue.shift(); + if (chunk) { + controller.enqueue(chunk); + } else { + controller.close(); + } + }, + cancel() {}, + }); + const blob = await new Response(stream).blob(); + expect(await blob.text()).toBe('{"hello":true}'); +}); + +it("Blob.stream() -> new Response(stream).text()", async () => { + var blob = new Blob(["abdefgh"]); + var stream = blob.stream(); + const text = await new Response(stream).text(); + expect(text).toBe("abdefgh"); +}); diff --git a/test/bun.js/text-encoder.test.js b/test/bun.js/text-encoder.test.js new file mode 100644 index 000000000..5687e0222 --- /dev/null +++ b/test/bun.js/text-encoder.test.js @@ -0,0 +1,212 @@ +import { expect, it, describe } from "bun:test"; +import { gc as gcTrace } from "./gc"; + +const getByteLength = (str) => { + // returns the byte length of an utf8 string + var s = str.length; + for (var i = str.length - 1; i >= 0; i--) { + var code = str.charCodeAt(i); + if (code > 0x7f && code <= 0x7ff) s++; + else if (code > 0x7ff && code <= 0xffff) s += 2; + if (code >= 0xdc00 && code <= 0xdfff) i--; //trail surrogate + } + return s; +}; + +describe("TextDecoder", () => { + it("should decode ascii text", () => { + const decoder = new TextDecoder("latin1"); + gcTrace(true); + expect(decoder.encoding).toBe("windows-1252"); + gcTrace(true); + expect(decoder.decode(new Uint8Array([0x41, 0x42, 0x43]))).toBe("ABC"); + gcTrace(true); + const result = [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]; + gcTrace(true); + expect(decoder.decode(Uint8Array.from(result))).toBe( + String.fromCharCode(...result) + ); + gcTrace(true); + }); + + it("should decode unicode text", () => { + const decoder = new TextDecoder(); + gcTrace(true); + var text = `β€οΈ Red Heart`; + + const bytes = [ + 226, 157, 164, 239, 184, 143, 32, 82, 101, 100, 32, 72, 101, 97, 114, 116, + ]; + const decoded = decoder.decode(Uint8Array.from(bytes)); + expect(decoder.encoding).toBe("utf-8"); + + gcTrace(true); + + for (let i = 0; i < text.length; i++) { + expect(decoded.charCodeAt(i)).toBe(text.charCodeAt(i)); + } + expect(decoded).toHaveLength(text.length); + gcTrace(true); + }); + + it("should decode unicode text with multiple consecutive emoji", () => { + const decoder = new TextDecoder(); + const encoder = new TextEncoder(); + gcTrace(true); + var text = `β€οΈβ€οΈβ€οΈβ€οΈβ€οΈβ€οΈ Red Heart`; + + text += ` β¨ Sparkles π₯ Fire π π π π π π
π π€£ π₯² βΊοΈ π π π π π π π π₯° π π π π π π π π π€ͺ π€¨ π§ π€ π π₯Έ π€© π₯³ π π π π π π π βΉοΈ π£ π π« π© π₯Ί π’ π π€ π π‘ π€¬ π€― π³ π₯΅ π₯Ά π± π¨ π°`; + gcTrace(true); + expect(decoder.decode(encoder.encode(text))).toBe(text); + gcTrace(true); + const bytes = new Uint8Array(getByteLength(text) * 8); + gcTrace(true); + const amount = encoder.encodeInto(text, bytes); + gcTrace(true); + expect(decoder.decode(bytes.subarray(0, amount.written))).toBe(text); + gcTrace(true); + }); +}); + +describe("TextEncoder", () => { + it("should encode latin1 text", () => { + gcTrace(true); + const text = "Hello World!"; + const encoder = new TextEncoder(); + gcTrace(true); + const encoded = encoder.encode(text); + gcTrace(true); + expect(encoded instanceof Uint8Array).toBe(true); + expect(encoded.length).toBe(text.length); + gcTrace(true); + const result = [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]; + for (let i = 0; i < result.length; i++) { + expect(encoded[i]).toBe(result[i]); + } + }); + + it("should encode long latin1 text", async () => { + const text = "Hello World!".repeat(1000); + const encoder = new TextEncoder(); + gcTrace(true); + const encoded = encoder.encode(text); + gcTrace(true); + expect(encoded instanceof Uint8Array).toBe(true); + expect(encoded.length).toBe(text.length); + gcTrace(true); + const decoded = new TextDecoder().decode(encoded); + expect(decoded).toBe(text); + gcTrace(); + await new Promise((resolve) => setTimeout(resolve, 1)); + gcTrace(); + expect(decoded).toBe(text); + }); + + it("should encode latin1 rope text", () => { + var text = "Hello"; + text += " "; + text += "World!"; + + gcTrace(true); + const encoder = new TextEncoder(); + const encoded = encoder.encode(text); + gcTrace(true); + const into = new Uint8Array(100); + const out = encoder.encodeInto(text, into); + gcTrace(true); + expect(out.read).toBe(text.length); + expect(out.written).toBe(encoded.length); + + expect(encoded instanceof Uint8Array).toBe(true); + const result = [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]; + for (let i = 0; i < result.length; i++) { + expect(encoded[i]).toBe(result[i]); + expect(encoded[i]).toBe(into[i]); + } + expect(encoded.length).toBe(getByteLength(text)); + }); + + it("should encode utf-16 text", () => { + var text = `β€οΈ Red Heart + β¨ Sparkles + π₯ Fire + `; + var encoder = new TextEncoder(); + var decoder = new TextDecoder(); + gcTrace(true); + expect(decoder.decode(encoder.encode(text))).toBe(text); + gcTrace(true); + }); + + // this test is from a web platform test in WebKit + describe("should use a unicode replacement character for invalid surrogate pairs", () => { + var bad = [ + { + encoding: "utf-16le", + input: [0x00, 0xd8], + expected: "\uFFFD", + name: "lone surrogate lead", + }, + { + encoding: "utf-16le", + input: [0x00, 0xdc], + expected: "\uFFFD", + name: "lone surrogate trail", + }, + { + encoding: "utf-16le", + input: [0x00, 0xd8, 0x00, 0x00], + expected: "\uFFFD\u0000", + name: "unmatched surrogate lead", + }, + { + encoding: "utf-16le", + input: [0x00, 0xdc, 0x00, 0x00], + expected: "\uFFFD\u0000", + name: "unmatched surrogate trail", + }, + { + encoding: "utf-16le", + input: [0x00, 0xdc, 0x00, 0xd8], + expected: "\uFFFD\uFFFD", + name: "swapped surrogate pair", + }, + ]; + + bad.forEach(function (t) { + it(t.encoding + " - " + t.name, () => { + gcTrace(true); + expect( + new TextDecoder(t.encoding).decode(new Uint8Array(t.input)) + ).toBe(t.expected); + expect( + new TextDecoder(t.encoding).decode( + new Uint16Array(new Uint8Array(t.input).buffer) + ) + ).toBe(t.expected); + gcTrace(true); + }); + // test(function () { + // assert_throws_js(TypeError, function () { + // new TextDecoder(t.encoding, { fatal: true }).decode( + // new Uint8Array(t.input) + // ); + // }); + // }, t.encoding + " - " + t.name + " (fatal flag set)"); + }); + }); + + it("should encode utf-16 rope text", () => { + gcTrace(true); + var textReal = `β€οΈ Red Heart β¨ Sparkles π₯ Fire`; + + var a = textReal.split(""); + var text = ""; + for (let j of a) { + text += j; + } + + var encoder = new TextEncoder(); + expect(new TextDecoder().decode(encoder.encode(text))).toBe(textReal); + }); +}); diff --git a/test/bun.js/toml-fixture.toml b/test/bun.js/toml-fixture.toml new file mode 100644 index 000000000..090563ef7 --- /dev/null +++ b/test/bun.js/toml-fixture.toml @@ -0,0 +1,39 @@ + +framework = "next" +origin = "http://localhost:5000" +inline.array = [1234, 4, 5, 6] + + +[macros] +react-relay = { "graphql" = "node_modules/bun-macro-relay/bun-macro-relay.tsx" } + +[install.scopes] +"@mybigcompany2" = { "token" = "123456", "url" = "https://registry.mybigcompany.com" } +"@mybigcompany3" = { "token" = "123456", "url" = "https://registry.mybigcompany.com", "three" = 4 } + + +[install.scopes."@mybigcompany"] +token = "123456" +url = "https://registry.mybigcompany.com" + +[bundle.packages] +"@emotion/react" = true + + +[dev] +foo = 123 +"foo.bar" = "baz" +"abba.baba" = "baba" +dabba = -123 +doo = 123.456 +one.two.three = 4 + +[[array]] +entry_one = "one" +entry_two = "two" + +[[array]] +entry_one = "three" + +[[array.nested]] +entry_one = "four" diff --git a/test/bun.js/toml.test.js b/test/bun.js/toml.test.js new file mode 100644 index 000000000..44141b2d4 --- /dev/null +++ b/test/bun.js/toml.test.js @@ -0,0 +1,30 @@ +import { describe, it, expect } from "bun:test"; +import { gc } from "./gc"; + +it("syntax", async () => { + gc(); + + const toml = (await import("./toml-fixture.toml")).default; + gc(); + + expect(toml.framework).toBe("next"); + expect(toml.bundle.packages["@emotion/react"]).toBe(true); + expect(toml.array[0].entry_one).toBe("one"); + expect(toml.array[0].entry_two).toBe("two"); + expect(toml.array[1].entry_one).toBe("three"); + expect(toml.array[1].entry_two).toBe(undefined); + expect(toml.array[1].nested[0].entry_one).toBe("four"); + expect(toml.dev.one.two.three).toBe(4); + expect(toml.dev.foo).toBe(123); + expect(toml.inline.array[0]).toBe(1234); + expect(toml.inline.array[1]).toBe(4); + expect(toml.dev["foo.bar"]).toBe("baz"); + expect(toml.install.scopes["@mybigcompany"].url).toBe( + "https://registry.mybigcompany.com" + ); + expect(toml.install.scopes["@mybigcompany2"].url).toBe( + "https://registry.mybigcompany.com" + ); + expect(toml.install.scopes["@mybigcompany3"].three).toBe(4); + gc(); +}); diff --git a/test/bun.js/transpiler.test.js b/test/bun.js/transpiler.test.js new file mode 100644 index 000000000..f8da4c18c --- /dev/null +++ b/test/bun.js/transpiler.test.js @@ -0,0 +1,1675 @@ +import { expect, it, describe } from "bun:test"; + +describe("Bun.Transpiler", () => { + describe("exports.replace", () => { + const transpiler = new Bun.Transpiler({ + exports: { + replace: { + // export var foo = function() { } + // => + // export var foo = "bar"; + foo: "bar", + + // export const getStaticProps = /* code */ + // => + // export var __N_SSG = true; + getStaticProps: ["__N_SSG", true], + getStaticPaths: ["__N_SSG", true], + // export function getStaticProps(ctx) { /* code */ } + // => + // export var __N_SSP = true; + getServerSideProps: ["__N_SSP", true], + }, + + // Explicitly remove the top-level export, even if it is in use by + // another part of the file + eliminate: ["loader", "localVarToRemove"], + }, + /* only per-file for now, so this isn't good yet */ + treeShaking: true, + + // remove non-bare unused exports, even if they may have side effects + // Consistent with tsc & esbuild, this is enabled by default for TypeScript files + // this flag lets you enable it for JavaScript files + // this already existed, just wasn't exposed in the API + trimUnusedImports: true, + }); + + it("a deletes dead exports and any imports only referenced in dead regions", () => { + const out = transpiler.transformSync(` + import {getUserById} from './my-database'; + + export async function getStaticProps(ctx){ + return { props: { user: await getUserById(ctx.params.id) } }; + } + + export default function MyComponent({user}) { + getStaticProps(); + return <div id='user'>{user.name}</div>; + } + `); + }); + + it("deletes dead exports and any imports only referenced in dead regions", () => { + const output = transpiler.transformSync(` + import deadFS from 'fs'; + import liveFS from 'fs'; + + export var deleteMe = 100; + + export function loader() { + deadFS.readFileSync("/etc/passwd"); + liveFS.readFileSync("/etc/passwd"); + } + + export function action() { + require("foo"); + liveFS.readFileSync("/etc/passwd") + deleteMe = 101; + } + + export function baz() { + require("bar"); + } + `); + expect(output.includes("loader")).toBe(false); + expect(output.includes("react")).toBe(false); + expect(output.includes("action")).toBe(true); + expect(output.includes("deadFS")).toBe(false); + expect(output.includes("liveFS")).toBe(true); + }); + + it("supports replacing exports", () => { + const output = transpiler.transformSync(` + import deadFS from 'fs'; + import anotherDeadFS from 'fs'; + import liveFS from 'fs'; + + export var localVarToRemove = deadFS.readFileSync("/etc/passwd"); + export var localVarToReplace = 1; + + var getStaticProps = function () { + deadFS.readFileSync("/etc/passwd") + }; + + export {getStaticProps} + + export function baz() { + liveFS.readFileSync("/etc/passwd"); + require("bar"); + } + `); + expect(output.includes("loader")).toBe(false); + expect(output.includes("react")).toBe(false); + expect(output.includes("deadFS")).toBe(false); + expect(output.includes("default")).toBe(false); + expect(output.includes("anotherDeadFS")).toBe(false); + expect(output.includes("liveFS")).toBe(true); + expect(output.includes("__N_SSG")).toBe(true); + expect(output.includes("localVarToReplace")).toBe(true); + expect(output.includes("localVarToRemove")).toBe(false); + }); + }); + + const transpiler = new Bun.Transpiler({ + loader: "tsx", + define: { + "process.env.NODE_ENV": JSON.stringify("development"), + user_undefined: "undefined", + }, + macro: { + react: { + bacon: `${import.meta.dir}/macro-check.js`, + }, + }, + platform: "browser", + }); + const bunTranspiler = new Bun.Transpiler({ + loader: "tsx", + define: { + "process.env.NODE_ENV": JSON.stringify("development"), + user_undefined: "undefined", + }, + platform: "bun", + macro: { + inline: { + whatDidIPass: `${import.meta.dir}/inline.macro.js`, + }, + react: { + bacon: `${import.meta.dir}/macro-check.js`, + }, + }, + }); + + const code = `import { useParams } from "remix"; + import type { LoaderFunction, ActionFunction } from "remix"; + import { type xx } from 'mod'; + import { type xx as yy } from 'mod'; + import { type 'xx' as yy } from 'mod'; + import { type if as yy } from 'mod'; + import React, { type ReactNode, Component as Romponent, Component } from 'react'; + + + export const loader: LoaderFunction = async ({ + params + }) => { + console.log(params.postId); + }; + + export const action: ActionFunction = async ({ + params + }) => { + console.log(params.postId); + }; + + export default function PostRoute() { + const params = useParams(); + console.log(params.postId); + } + + + + + + `; + + it("JSX", () => { + var bun = new Bun.Transpiler({ + loader: "jsx", + define: { + "process.env.NODE_ENV": JSON.stringify("development"), + }, + }); + expect(bun.transformSync("export var foo = <div foo />")).toBe( + `export var foo = jsx("div", { + foo: true +}, undefined, false, undefined, this); +` + ); + expect(bun.transformSync("export var foo = <div foo={foo} />")).toBe( + `export var foo = jsx("div", { + foo +}, undefined, false, undefined, this); +` + ); + expect(bun.transformSync("export var foo = <div {...foo} />")).toBe( + `export var foo = jsx("div", { + ...foo +}, undefined, false, undefined, this); +` + ); + + expect(bun.transformSync("export var hi = <div {foo} />")).toBe( + `export var hi = jsx("div", { + foo +}, undefined, false, undefined, this); +` + ); + expect(bun.transformSync("export var hi = <div {foo.bar.baz} />")).toBe( + `export var hi = jsx("div", { + baz: foo.bar.baz +}, undefined, false, undefined, this); +` + ); + expect(bun.transformSync("export var hi = <div {foo?.bar?.baz} />")).toBe( + `export var hi = jsx("div", { + baz: foo?.bar?.baz +}, undefined, false, undefined, this); +` + ); + expect( + bun.transformSync("export var hi = <div {foo['baz'].bar?.baz} />") + ).toBe( + `export var hi = jsx("div", { + baz: foo["baz"].bar?.baz +}, undefined, false, undefined, this); +` + ); + + // cursed + expect( + bun.transformSync( + "export var hi = <div {foo[{name: () => true}.name].hi} />" + ) + ).toBe( + `export var hi = jsx("div", { + hi: foo[{ name: () => true }.name].hi +}, undefined, false, undefined, this); +` + ); + expect( + bun.transformSync("export var hi = <Foo {process.env.NODE_ENV} />") + ).toBe( + `export var hi = jsx(Foo, { + NODE_ENV: "development" +}, undefined, false, undefined, this); +` + ); + + expect( + bun.transformSync("export var hi = <div {foo['baz'].bar?.baz} />") + ).toBe( + `export var hi = jsx("div", { + baz: foo["baz"].bar?.baz +}, undefined, false, undefined, this); +` + ); + try { + bun.transformSync("export var hi = <div {foo}={foo}= />"); + throw new Error("Expected error"); + } catch (e) { + expect(e.errors[0].message.includes('Expected ">"')).toBe(true); + } + + expect( + bun.transformSync("export var hi = <div {Foo}><Foo></Foo></div>") + ).toBe( + `export var hi = jsx("div", { + Foo, + children: jsx(Foo, {}, undefined, false, undefined, this) +}, undefined, false, undefined, this); +` + ); + expect( + bun.transformSync("export var hi = <div {Foo}><Foo></Foo></div>") + ).toBe( + `export var hi = jsx("div", { + Foo, + children: jsx(Foo, {}, undefined, false, undefined, this) +}, undefined, false, undefined, this); +` + ); + + expect(bun.transformSync("export var hi = <div>{123}}</div>").trim()).toBe( + `export var hi = jsx("div", { + children: [ + 123, + "}" + ] +}, undefined, true, undefined, this); + `.trim() + ); + }); + + describe("inline JSX", () => { + const inliner = new Bun.Transpiler({ + loader: "tsx", + define: { + "process.env.NODE_ENV": JSON.stringify("production"), + user_undefined: "undefined", + }, + platform: "bun", + jsxOptimizationInline: true, + treeShaking: false, + }); + + it("inlines static JSX into object literals", () => { + expect( + inliner + .transformSync( + ` +export var hi = <div>{123}</div> +export var hiWithKey = <div key="hey">{123}</div> +export var hiWithRef = <div ref={foo}>{123}</div> + +export var ComponentThatChecksDefaultProps = <Hello></Hello> +export var ComponentThatChecksDefaultPropsAndHasChildren = <Hello>my child</Hello> +export var ComponentThatHasSpreadCausesDeopt = <Hello {...spread} /> + +`.trim() + ) + .trim() + ).toBe( + `var $$typeof = Symbol.for("react.element"); +export var hi = { + $$typeof, + type: "div", + key: null, + ref: null, + props: { + children: 123 + }, + _owner: null +}; +export var hiWithKey = { + $$typeof, + type: "div", + key: "hey", + ref: null, + props: { + children: 123 + }, + _owner: null +}; +export var hiWithRef = jsx("div", { + ref: foo, + children: 123 +}); +export var ComponentThatChecksDefaultProps = { + $$typeof, + type: Hello, + key: null, + ref: null, + props: Hello.defaultProps || {}, + _owner: null +}; +export var ComponentThatChecksDefaultPropsAndHasChildren = { + $$typeof, + type: Hello, + key: null, + ref: null, + props: __merge({ + children: "my child" + }, Hello.defaultProps), + _owner: null +}; +export var ComponentThatHasSpreadCausesDeopt = jsx(Hello, { + ...spread +}); +`.trim() + ); + }); + }); + + it("require with a dynamic non-string expression", () => { + var nodeTranspiler = new Bun.Transpiler({ platform: "node" }); + expect(nodeTranspiler.transformSync("require('hi' + bar)")).toBe( + 'require("hi" + bar);\n' + ); + }); + + it("CommonJS", () => { + var nodeTranspiler = new Bun.Transpiler({ platform: "node" }); + expect(nodeTranspiler.transformSync("module.require('hi' + 123)")).toBe( + 'require("hi" + 123);\n' + ); + + expect( + nodeTranspiler.transformSync("module.require(1 ? 'foo' : 'bar')") + ).toBe('require("foo");\n'); + expect(nodeTranspiler.transformSync("require(1 ? 'foo' : 'bar')")).toBe( + 'require("foo");\n' + ); + + expect( + nodeTranspiler.transformSync("module.require(unknown ? 'foo' : 'bar')") + ).toBe('unknown ? require("foo") : require("bar");\n'); + }); + + describe("regressions", () => { + it("unexpected super", () => { + const input = ` + 'use strict'; + + const ErrorReportingMixinBase = require('./mixin-base'); + const PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin'); + const Mixin = require('../../utils/mixin'); + + class ErrorReportingPreprocessorMixin extends ErrorReportingMixinBase { + constructor(preprocessor, opts) { + super(preprocessor, opts); + + this.posTracker = Mixin.install(preprocessor, PositionTrackingPreprocessorMixin); + this.lastErrOffset = -1; + } + + _reportError(code) { + //NOTE: avoid reporting error twice on advance/retreat + if (this.lastErrOffset !== this.posTracker.offset) { + this.lastErrOffset = this.posTracker.offset; + super._reportError(code); + } + } + } + + module.exports = ErrorReportingPreprocessorMixin; + + +`; + expect(transpiler.transformSync(input, "js").length > 0).toBe(true); + }); + }); + + describe("scanImports", () => { + it("reports import paths, excluding types", () => { + const imports = transpiler.scanImports(code, "tsx"); + expect(imports.filter(({ path }) => path === "remix")).toHaveLength(1); + expect(imports.filter(({ path }) => path === "mod")).toHaveLength(0); + expect(imports.filter(({ path }) => path === "react")).toHaveLength(1); + expect(imports).toHaveLength(2); + }); + }); + + const parsed = ( + code, + trim = true, + autoExport = false, + transpiler_ = transpiler + ) => { + if (autoExport) { + code = "export default (" + code + ")"; + } + + var out = transpiler_.transformSync(code, "js"); + if (autoExport && out.startsWith("export default ")) { + out = out.substring("export default ".length); + } + + if (trim) { + out = out.trim(); + + if (out.endsWith(";")) { + out = out.substring(0, out.length - 1); + } + + return out.trim(); + } + + return out; + }; + + const expectPrinted = (code, out) => { + expect(parsed(code, true, true)).toBe(out); + }; + + const expectPrinted_ = (code, out) => { + expect(parsed(code, !out.endsWith(";\n"), false)).toBe(out); + }; + + const expectBunPrinted_ = (code, out) => { + expect(parsed(code, !out.endsWith(";\n"), false, bunTranspiler)).toBe(out); + }; + + const expectParseError = (code, message) => { + try { + parsed(code, false, false); + } catch (er) { + var err = er; + if (er instanceof AggregateError) { + err = err.errors[0]; + } + + expect(er.message).toBe(message); + + return; + } + + throw new Error("Expected parse error for code\n\t" + code); + }; + const ts = { + parsed: (code, trim = true, autoExport = false) => { + if (autoExport) { + code = "export default (" + code + ")"; + } + + var out = transpiler.transformSync(code, "ts"); + if (autoExport && out.startsWith("export default ")) { + out = out.substring("export default ".length); + } + + if (trim) { + out = out.trim(); + + if (out.endsWith(";")) { + out = out.substring(0, out.length - 1); + } + + return out.trim(); + } + + return out; + }, + + expectPrinted: (code, out) => { + expect(ts.parsed(code, true, true)).toBe(out); + }, + + expectPrinted_: (code, out) => { + expect(ts.parsed(code, !out.endsWith(";\n"), false)).toBe(out); + }, + + expectParseError: (code, message) => { + try { + ts.parsed(code, false, false); + } catch (er) { + var err = er; + if (er instanceof AggregateError) { + err = err.errors[0]; + } + + expect(er.message).toBe(message); + + return; + } + + throw new Error("Expected parse error for code\n\t" + code); + }, + }; + + describe("parser", () => { + it("arrays", () => { + expectPrinted("[]", "[]"); + expectPrinted("[,]", "[,]"); + expectPrinted("[1]", "[1]"); + expectPrinted("[1,]", "[1]"); + expectPrinted("[,1]", "[, 1]"); + expectPrinted("[1,2]", "[1, 2]"); + expectPrinted("[,1,2]", "[, 1, 2]"); + expectPrinted("[1,,2]", "[1, , 2]"); + expectPrinted("[1,2,]", "[1, 2]"); + expectPrinted("[1,2,,]", "[1, 2, ,]"); + }); + + it("exponentiation", () => { + expectPrinted("(delete x) ** 0", "(delete x) ** 0"); + expectPrinted("(delete x.prop) ** 0", "(delete x.prop) ** 0"); + expectPrinted("(delete x[0]) ** 0", "(delete x[0]) ** 0"); + + expectPrinted("(delete x?.prop) ** 0", "(delete x?.prop) ** 0"); + + expectPrinted("(void x) ** 0", "(void x) ** 0"); + expectPrinted("(typeof x) ** 0", "(typeof x) ** 0"); + expectPrinted("(+x) ** 0", "(+x) ** 0"); + expectPrinted("(-x) ** 0", "(-x) ** 0"); + expectPrinted("(~x) ** 0", "(~x) ** 0"); + expectPrinted("(!x) ** 0", "(!x) ** 0"); + expectPrinted("(await x) ** 0", "(await x) ** 0"); + expectPrinted("(await -x) ** 0", "(await -x) ** 0"); + + expectPrinted("--x ** 2", "--x ** 2"); + expectPrinted("++x ** 2", "++x ** 2"); + expectPrinted("x-- ** 2", "x-- ** 2"); + expectPrinted("x++ ** 2", "x++ ** 2"); + + expectPrinted("(-x) ** 2", "(-x) ** 2"); + expectPrinted("(+x) ** 2", "(+x) ** 2"); + expectPrinted("(~x) ** 2", "(~x) ** 2"); + expectPrinted("(!x) ** 2", "(!x) ** 2"); + expectPrinted("(-1) ** 2", "(-1) ** 2"); + expectPrinted("(+1) ** 2", "1 ** 2"); + expectPrinted("(~1) ** 2", "(~1) ** 2"); + expectPrinted("(!1) ** 2", "false ** 2"); + expectPrinted("(void x) ** 2", "(void x) ** 2"); + expectPrinted("(delete x) ** 2", "(delete x) ** 2"); + expectPrinted("(typeof x) ** 2", "(typeof x) ** 2"); + expectPrinted("undefined ** 2", "undefined ** 2"); + + expectParseError("-x ** 2", "Unexpected **"); + expectParseError("+x ** 2", "Unexpected **"); + expectParseError("~x ** 2", "Unexpected **"); + expectParseError("!x ** 2", "Unexpected **"); + expectParseError("void x ** 2", "Unexpected **"); + expectParseError("delete x ** 2", "Unexpected **"); + expectParseError("typeof x ** 2", "Unexpected **"); + + expectParseError("-x.y() ** 2", "Unexpected **"); + expectParseError("+x.y() ** 2", "Unexpected **"); + expectParseError("~x.y() ** 2", "Unexpected **"); + expectParseError("!x.y() ** 2", "Unexpected **"); + expectParseError("void x.y() ** 2", "Unexpected **"); + expectParseError("delete x.y() ** 2", "Unexpected **"); + expectParseError("typeof x.y() ** 2", "Unexpected **"); + + expectParseError("delete x ** 0", "Unexpected **"); + expectParseError("delete x.prop ** 0", "Unexpected **"); + expectParseError("delete x[0] ** 0", "Unexpected **"); + expectParseError("delete x?.prop ** 0", "Unexpected **"); + expectParseError("void x ** 0", "Unexpected **"); + expectParseError("typeof x ** 0", "Unexpected **"); + expectParseError("+x ** 0", "Unexpected **"); + expectParseError("-x ** 0", "Unexpected **"); + expectParseError("~x ** 0", "Unexpected **"); + expectParseError("!x ** 0", "Unexpected **"); + expectParseError("await x ** 0", "Unexpected **"); + expectParseError("await -x ** 0", "Unexpected **"); + }); + + it("await", () => { + expectPrinted("await x", "await x"); + expectPrinted("await +x", "await +x"); + expectPrinted("await -x", "await -x"); + expectPrinted("await ~x", "await ~x"); + expectPrinted("await !x", "await !x"); + expectPrinted("await --x", "await --x"); + expectPrinted("await ++x", "await ++x"); + expectPrinted("await x--", "await x--"); + expectPrinted("await x++", "await x++"); + expectPrinted("await void x", "await void x"); + expectPrinted("await typeof x", "await typeof x"); + expectPrinted("await (x * y)", "await (x * y)"); + expectPrinted("await (x ** y)", "await (x ** y)"); + + expectPrinted_( + "async function f() { await delete x }", + "async function f() {\n await delete x;\n}" + ); + + // expectParseError( + // "await delete x", + // "Delete of a bare identifier cannot be used in an ECMAScript module" + // ); + }); + + it("import assert", () => { + expectPrinted_( + `import json from "./foo.json" assert { type: "json" };`, + `import json from "./foo.json"` + ); + expectPrinted_( + `import json from "./foo.json";`, + `import json from "./foo.json"` + ); + expectPrinted_( + `import("./foo.json", { type: "json" });`, + `import("./foo.json")` + ); + }); + + it("import with unicode escape", () => { + expectPrinted_( + `import { name } from 'mod\\u1011';`, + `import {name} from "mod\\u1011"` + ); + }); + + it("fold string addition", () => { + expectPrinted_( + `export const foo = "a" + "b";`, + `export const foo = "ab"` + ); + expectPrinted_( + `export const foo = "F" + "0" + "F" + "0123456789" + "ABCDEF" + "0123456789ABCDEFF0123456789ABCDEF00" + "b";`, + `export const foo = "F0F0123456789ABCDEF0123456789ABCDEFF0123456789ABCDEF00b"` + ); + expectPrinted_( + `export const foo = "a" + 1 + "b";`, + `export const foo = "a" + 1 + "b"` + ); + expectPrinted_( + `export const foo = "a" + "b" + 1 + "b";`, + `export const foo = "ab" + 1 + "b"` + ); + expectPrinted_( + `export const foo = "a" + "b" + 1 + "b" + "c";`, + `export const foo = "ab" + 1 + "bc"` + ); + }); + + it("numeric constants", () => { + expectBunPrinted_("export const foo = 1 + 2", "export const foo = 3"); + expectBunPrinted_("export const foo = 1 - 2", "export const foo = -1"); + expectBunPrinted_("export const foo = 1 * 2", "export const foo = 2"); + }); + + it("pass objects to macros", () => { + var object = { + helloooooooo: { + message: [12345], + }, + }; + + const output = bunTranspiler.transformSync( + ` + import {whatDidIPass} from 'inline'; + + export function foo() { + return whatDidIPass(); + } + `, + object + ); + expect(output).toBe(`export function foo() { + return { + helloooooooo: { + message: [ + 12345 + ] + } + }; +} +`); + }); + + it("rewrite string to length", () => { + expectPrinted_( + `export const foo = "a".length + "b".length;`, + `export const foo = 1 + 1` + ); + expectBunPrinted_( + `export const foo = "a".length + "b".length;`, + `export const foo = 2` + ); + }); + + describe("Bun.js", () => { + it("require -> import.meta.require", () => { + expectBunPrinted_( + `export const foo = require('bar.node')`, + `export const foo = import.meta.require("bar.node")` + ); + }); + + it("require.resolve -> import.meta.resolveSync", () => { + expectBunPrinted_( + `export const foo = require.resolve('bar.node')`, + `export const foo = import.meta.resolveSync("bar.node")` + ); + }); + + it('require.resolve(path, {paths: ["blah"]}) -> import.meta.resolveSync', () => { + expectBunPrinted_( + `export const foo = require.resolve('bar.node', {paths: ["blah"]})`, + `export const foo = import.meta.resolveSync("bar.node", { paths: ["blah"] })` + ); + }); + }); + + describe("Browsers", () => { + it('require.resolve("my-module") -> "/resolved/my-module"', () => { + // the module resolver & linker doesn't run with Bun.Transpiler + // so in this test, it becomes the same path string + expectPrinted_( + `export const foo = require.resolve('my-module')`, + `export const foo = "my-module"` + ); + }); + }); + + it("define", () => { + expectPrinted_( + `export default typeof user_undefined === 'undefined';`, + `export default true` + ); + expectPrinted_( + `export default typeof user_undefined !== 'undefined';`, + `export default false` + ); + + expectPrinted_( + `export default typeof user_undefined !== 'undefined';`, + `export default false` + ); + expectPrinted_(`export default !user_undefined;`, `export default true`); + }); + + it("decls", () => { + // expectParseError("var x = 0", ""); + // expectParseError("let x = 0", ""); + // expectParseError("const x = 0", ""); + // expectParseError("for (var x = 0;;) ;", ""); + // expectParseError("for (let x = 0;;) ;", ""); + // expectParseError("for (const x = 0;;) ;", ""); + + // expectParseError("for (var x in y) ;", ""); + // expectParseError("for (let x in y) ;", ""); + // expectParseError("for (const x in y) ;", ""); + // expectParseError("for (var x of y) ;", ""); + // expectParseError("for (let x of y) ;", ""); + // expectParseError("for (const x of y) ;", ""); + + // expectParseError("var x", ""); + // expectParseError("let x", ""); + expectParseError("const x", 'The constant "x" must be initialized'); + expectParseError("const {}", "This constant must be initialized"); + expectParseError("const []", "This constant must be initialized"); + // expectParseError("for (var x;;) ;", ""); + // expectParseError("for (let x;;) ;", ""); + expectParseError( + "for (const x;;) ;", + 'The constant "x" must be initialized' + ); + expectParseError( + "for (const {};;) ;", + "This constant must be initialized" + ); + expectParseError( + "for (const [];;) ;", + "This constant must be initialized" + ); + + // Make sure bindings are visited during parsing + expectPrinted_("var {[x]: y} = {}", "var { [x]: y } = {}"); + expectPrinted_("var {...x} = {}", "var { ...x } = {}"); + + // Test destructuring patterns + expectPrinted_("var [...x] = []", "var [...x] = []"); + expectPrinted_("var {...x} = {}", "var { ...x } = {}"); + + expectPrinted_( + "export var foo = ([...x] = []) => {}", + "export var foo = ([...x] = []) => {\n}" + ); + + expectPrinted_( + "export var foo = ({...x} = {}) => {}", + "export var foo = ({ ...x } = {}) => {\n}" + ); + + expectParseError("var [...x,] = []", 'Unexpected "," after rest pattern'); + expectParseError("var {...x,} = {}", 'Unexpected "," after rest pattern'); + expectParseError( + "export default function() { return ([...x,] = []) => {} }", + "Unexpected trailing comma after rest element" + ); + expectParseError( + "({...x,} = {}) => {}", + "Unexpected trailing comma after rest element" + ); + + expectPrinted_("[b, ...c] = d", "[b, ...c] = d"); + expectPrinted_("([b, ...c] = d)", "[b, ...c] = d"); + expectPrinted_("({b, ...c} = d)", "({ b, ...c } = d)"); + expectPrinted_("({a = b} = c)", "({ a = b } = c)"); + expectPrinted_("({a: b = c} = d)", "({ a: b = c } = d)"); + expectPrinted_("({a: b.c} = d)", "({ a: b.c } = d)"); + expectPrinted_("[a = {}] = b", "[a = {}] = b"); + expectPrinted_("[[...a, b].x] = c", "[[...a, b].x] = c"); + expectPrinted_("[{...a, b}.x] = c", "[{ ...a, b }.x] = c"); + expectPrinted_("({x: [...a, b].x} = c)", "({ x: [...a, b].x } = c)"); + expectPrinted_("({x: {...a, b}.x} = c)", "({ x: { ...a, b }.x } = c)"); + expectPrinted_("[x = [...a, b]] = c", "[x = [...a, b]] = c"); + expectPrinted_("[x = {...a, b}] = c", "[x = { ...a, b }] = c"); + expectPrinted_("({x = [...a, b]} = c)", "({ x = [...a, b] } = c)"); + expectPrinted_("({x = {...a, b}} = c)", "({ x = { ...a, b } } = c)"); + + expectPrinted_("(x = y)", "x = y"); + expectPrinted_("([] = [])", "[] = []"); + expectPrinted_("({} = {})", "({} = {})"); + expectPrinted_("([[]] = [[]])", "[[]] = [[]]"); + expectPrinted_("({x: {}} = {x: {}})", "({ x: {} } = { x: {} })"); + expectPrinted_("(x) = y", "x = y"); + expectParseError("([]) = []", "Invalid assignment target"); + expectParseError("({}) = {}", "Invalid assignment target"); + expectParseError("[([])] = [[]]", "Invalid assignment target"); + expectParseError("({x: ({})} = {x: {}})", "Invalid assignment target"); + expectParseError( + "(([]) = []) => {}", + "Unexpected parentheses in binding pattern" + ); + expectParseError( + "(({}) = {}) => {}", + "Unexpected parentheses in binding pattern" + ); + expectParseError("function f(([]) = []) {}", "Parse error"); + expectParseError( + "function f(({}) = {}) {}", + "Parse error" + // 'Expected identifier but found "("\n' + ); + + expectPrinted_("for (x in y) ;", "for (x in y) {\n}"); + expectPrinted_("for ([] in y) ;", "for ([] in y) {\n}"); + expectPrinted_("for ({} in y) ;", "for ({} in y) {\n}"); + expectPrinted_("for ((x) in y) ;", "for (x in y) {\n}"); + expectParseError("for (([]) in y) ;", "Invalid assignment target"); + expectParseError("for (({}) in y) ;", "Invalid assignment target"); + + expectPrinted_("for (x of y) ;", "for (x of y) {\n}"); + expectPrinted_("for ([] of y) ;", "for ([] of y) {\n}"); + expectPrinted_("for ({} of y) ;", "for ({} of y) {\n}"); + expectPrinted_("for ((x) of y) ;", "for (x of y) {\n}"); + expectParseError("for (([]) of y) ;", "Invalid assignment target"); + expectParseError("for (({}) of y) ;", "Invalid assignment target"); + + expectParseError("[[...a, b]] = c", 'Unexpected "," after rest pattern'); + expectParseError("[{...a, b}] = c", 'Unexpected "," after rest pattern'); + expectParseError( + "({x: [...a, b]} = c)", + 'Unexpected "," after rest pattern' + ); + expectParseError( + "({x: {...a, b}} = c)", + 'Unexpected "," after rest pattern' + ); + expectParseError("[b, ...c,] = d", 'Unexpected "," after rest pattern'); + expectParseError("([b, ...c,] = d)", 'Unexpected "," after rest pattern'); + expectParseError("({b, ...c,} = d)", 'Unexpected "," after rest pattern'); + expectParseError("({a = b})", 'Unexpected "="'); + expectParseError("({x = {a = b}} = c)", 'Unexpected "="'); + expectParseError("[a = {b = c}] = d", 'Unexpected "="'); + + expectPrinted_( + "for ([{a = {}}] in b) {}", + "for ([{ a = {} }] in b) {\n}" + ); + expectPrinted_( + "for ([{a = {}}] of b) {}", + "for ([{ a = {} }] of b) {\n}" + ); + expectPrinted_("for ({a = {}} in b) {}", "for ({ a = {} } in b) {\n}"); + expectPrinted_("for ({a = {}} of b) {}", "for ({ a = {} } of b) {\n}"); + + expectParseError("({a = {}} in b)", 'Unexpected "="'); + expectParseError("[{a = {}}]\nof()", 'Unexpected "="'); + expectParseError( + "for ([...a, b] in c) {}", + 'Unexpected "," after rest pattern' + ); + expectParseError( + "for ([...a, b] of c) {}", + 'Unexpected "," after rest pattern' + ); + }); + + it("regexp", () => { + expectPrinted("/x/g", "/x/g"); + expectPrinted("/x/i", "/x/i"); + expectPrinted("/x/m", "/x/m"); + expectPrinted("/x/s", "/x/s"); + expectPrinted("/x/u", "/x/u"); + expectPrinted("/x/y", "/x/y"); + expectPrinted("/gimme/g", "/gimme/g"); + expectPrinted("/gimgim/g", "/gimgim/g"); + + expectParseError( + "/x/msuygig", + 'Duplicate flag "g" in regular expression' + ); + }); + + it("identifier escapes", () => { + expectPrinted_("var _\u0076\u0061\u0072", "var _var"); + expectParseError( + "var \u0076\u0061\u0072", + 'Expected identifier but found "\u0076\u0061\u0072"' + ); + expectParseError( + "\\u0076\\u0061\\u0072 foo", + "Unexpected \\u0076\\u0061\\u0072" + ); + + expectPrinted_("foo._\u0076\u0061\u0072", "foo._var"); + expectPrinted_("foo.\u0076\u0061\u0072", "foo.var"); + + // expectParseError("\u200Ca", 'Unexpected "\\u200c"'); + // expectParseError("\u200Da", 'Unexpected "\\u200d"'); + }); + }); + + it("private identifiers", () => { + expectParseError("#foo", "Unexpected #foo"); + expectParseError("#foo in this", "Unexpected #foo"); + expectParseError("this.#foo", 'Expected identifier but found "#foo"'); + expectParseError("this?.#foo", 'Expected identifier but found "#foo"'); + expectParseError("({ #foo: 1 })", 'Expected identifier but found "#foo"'); + expectParseError( + "class Foo { x = { #foo: 1 } }", + 'Expected identifier but found "#foo"' + ); + expectParseError("class Foo { x = #foo }", 'Expected "in" but found "}"'); + expectParseError( + "class Foo { #foo; foo() { delete this.#foo } }", + 'Deleting the private name "#foo" is forbidden' + ); + expectParseError( + "class Foo { #foo; foo() { delete this?.#foo } }", + 'Deleting the private name "#foo" is forbidden' + ); + expectParseError( + "class Foo extends Bar { #foo; foo() { super.#foo } }", + 'Expected identifier but found "#foo"' + ); + expectParseError( + "class Foo { #foo = () => { for (#foo in this) ; } }", + "Unexpected #foo" + ); + expectParseError( + "class Foo { #foo = () => { for (x = #foo in this) ; } }", + "Unexpected #foo" + ); + expectPrinted_("class Foo { #foo }", "class Foo {\n #foo;\n}"); + expectPrinted_("class Foo { #foo = 1 }", "class Foo {\n #foo = 1;\n}"); + expectPrinted_( + "class Foo { #foo = #foo in this }", + "class Foo {\n #foo = #foo in this;\n}" + ); + expectPrinted_( + "class Foo { #foo = #foo in (#bar in this); #bar }", + "class Foo {\n #foo = #foo in (#bar in this);\n #bar;\n}" + ); + expectPrinted_( + "class Foo { #foo() {} }", + "class Foo {\n #foo() {\n }\n}" + ); + expectPrinted_( + "class Foo { get #foo() {} }", + "class Foo {\n get #foo() {\n }\n}" + ); + expectPrinted_( + "class Foo { set #foo(x) {} }", + "class Foo {\n set #foo(x) {\n }\n}" + ); + expectPrinted_( + "class Foo { static #foo }", + "class Foo {\n static #foo;\n}" + ); + expectPrinted_( + "class Foo { static #foo = 1 }", + "class Foo {\n static #foo = 1;\n}" + ); + expectPrinted_( + "class Foo { static #foo() {} }", + "class Foo {\n static #foo() {\n }\n}" + ); + expectPrinted_( + "class Foo { static get #foo() {} }", + "class Foo {\n static get #foo() {\n }\n}" + ); + expectPrinted_( + "class Foo { static set #foo(x) {} }", + "class Foo {\n static set #foo(x) {\n }\n}" + ); + + expectParseError( + "class Foo { #foo = #foo in #bar in this; #bar }", + "Unexpected #bar" + ); + + expectParseError( + "class Foo { #constructor }", + 'Invalid field name "#constructor"' + ); + expectParseError( + "class Foo { #constructor() {} }", + 'Invalid method name "#constructor"' + ); + expectParseError( + "class Foo { static #constructor }", + 'Invalid field name "#constructor"' + ); + expectParseError( + "class Foo { static #constructor() {} }", + 'Invalid method name "#constructor"' + ); + expectParseError( + "class Foo { #\\u0063onstructor }", + 'Invalid field name "#constructor"' + ); + expectParseError( + "class Foo { #\\u0063onstructor() {} }", + 'Invalid method name "#constructor"' + ); + expectParseError( + "class Foo { static #\\u0063onstructor }", + 'Invalid field name "#constructor"' + ); + expectParseError( + "class Foo { static #\\u0063onstructor() {} }", + 'Invalid method name "#constructor"' + ); + const errorText = '"#foo" has already been declared'; + expectParseError("class Foo { #foo; #foo }", errorText); + expectParseError("class Foo { #foo; static #foo }", errorText); + expectParseError("class Foo { static #foo; #foo }", errorText); + expectParseError("class Foo { #foo; #foo() {} }", errorText); + expectParseError("class Foo { #foo; get #foo() {} }", errorText); + expectParseError("class Foo { #foo; set #foo(x) {} }", errorText); + expectParseError("class Foo { #foo() {} #foo }", errorText); + expectParseError("class Foo { get #foo() {} #foo }", errorText); + expectParseError("class Foo { set #foo(x) {} #foo }", errorText); + expectParseError("class Foo { get #foo() {} get #foo() {} }", errorText); + expectParseError("class Foo { set #foo(x) {} set #foo(x) {} }", errorText); + expectParseError( + "class Foo { get #foo() {} set #foo(x) {} #foo }", + errorText + ); + expectParseError( + "class Foo { set #foo(x) {} get #foo() {} #foo }", + errorText + ); + + expectPrinted_( + "class Foo { get #foo() {} set #foo(x) { this.#foo } }", + "class Foo {\n get #foo() {\n }\n set #foo(x) {\n this.#foo;\n }\n}" + ); + expectPrinted_( + "class Foo { set #foo(x) { this.#foo } get #foo() {} }", + "class Foo {\n set #foo(x) {\n this.#foo;\n }\n get #foo() {\n }\n}" + ); + expectPrinted_( + "class Foo { #foo } class Bar { #foo }", + "class Foo {\n #foo;\n}\n\nclass Bar {\n #foo;\n}" + ); + expectPrinted_( + "class Foo { foo = this.#foo; #foo }", + "class Foo {\n foo = this.#foo;\n #foo;\n}" + ); + expectPrinted_( + "class Foo { foo = this?.#foo; #foo }", + "class Foo {\n foo = this?.#foo;\n #foo;\n}" + ); + expectParseError( + "class Foo { #foo } class Bar { foo = this.#foo }", + 'Private name "#foo" must be declared in an enclosing class' + ); + expectParseError( + "class Foo { #foo } class Bar { foo = this?.#foo }", + 'Private name "#foo" must be declared in an enclosing class' + ); + expectParseError( + "class Foo { #foo } class Bar { foo = #foo in this }", + 'Private name "#foo" must be declared in an enclosing class' + ); + + expectPrinted_( + `class Foo { + #if + #im() { return this.#im(this.#if) } + static #sf + static #sm() { return this.#sm(this.#sf) } + foo() { + return class { + #inner() { + return [this.#im, this?.#inner, this?.x.#if] + } + } + } +} +`, + `class Foo { + #if; + #im() { + return this.#im(this.#if); + } + static #sf; + static #sm() { + return this.#sm(this.#sf); + } + foo() { + return class { + #inner() { + return [this.#im, this?.#inner, this?.x.#if]; + } + }; + } +}` + ); + }); + + it("type only exports", () => { + let { expectPrinted_, expectParseError } = ts; + expectPrinted_("export type {foo, bar as baz} from 'bar'", ""); + expectPrinted_("export type {foo, bar as baz}", ""); + expectPrinted_("export type {foo} from 'bar'; x", "x"); + expectPrinted_("export type {foo} from 'bar'\nx", "x"); + expectPrinted_("export type {default} from 'bar'", ""); + expectPrinted_( + "export { type } from 'mod'; type", + 'export { type } from "mod";\ntype' + ); + expectPrinted_( + "export { type, as } from 'mod'", + 'export { type, as } from "mod"' + ); + expectPrinted_( + "export { x, type foo } from 'mod'; x", + 'export { x } from "mod";\nx' + ); + expectPrinted_( + "export { x, type as } from 'mod'; x", + 'export { x } from "mod";\nx' + ); + expectPrinted_( + "export { x, type foo as bar } from 'mod'; x", + 'export { x } from "mod";\nx' + ); + expectPrinted_( + "export { x, type foo as as } from 'mod'; x", + 'export { x } from "mod";\nx' + ); + expectPrinted_( + "export { type as as } from 'mod'; as", + 'export { type as as } from "mod";\nas' + ); + expectPrinted_( + "export { type as foo } from 'mod'; foo", + 'export { type as foo } from "mod";\nfoo' + ); + expectPrinted_( + "export { type as type } from 'mod'; type", + 'export { type } from "mod";\ntype' + ); + expectPrinted_( + "export { x, type as as foo } from 'mod'; x", + 'export { x } from "mod";\nx' + ); + expectPrinted_( + "export { x, type as as as } from 'mod'; x", + 'export { x } from "mod";\nx' + ); + expectPrinted_( + "export { x, type type as as } from 'mod'; x", + 'export { x } from "mod";\nx' + ); + expectPrinted_( + "export { x, \\u0074ype y }; let x, y", + "export { x };\nlet x, y" + ); + expectPrinted_( + "export { x, \\u0074ype y } from 'mod'", + 'export { x } from "mod"' + ); + expectPrinted_( + "export { x, type if } from 'mod'", + 'export { x } from "mod"' + ); + expectPrinted_("export { x, type y as if }; let x", "export { x };\nlet x"); + expectPrinted_("export { type x };", ""); + }); + + it("delete + optional chain", () => { + expectPrinted_("delete foo.bar.baz", "delete foo.bar.baz"); + expectPrinted_("delete foo?.bar.baz", "delete foo?.bar.baz"); + expectPrinted_("delete foo?.bar?.baz", "delete foo?.bar?.baz"); + }); + + it("useDefineForConst TypeScript class initialization", () => { + var { expectPrinted_ } = ts; + expectPrinted_( + ` +class Foo { + constructor(public x: string = "hey") {} + bar: number; +} +`.trim(), + ` +class Foo { + x; + constructor(x = "hey") { + this.x = x; + } + bar; +} +`.trim() + ); + }); + + it("class static blocks", () => { + expectPrinted_( + "class Foo { static {} }", + "class Foo {\n static {\n }\n}" + ); + expectPrinted_( + "class Foo { static {} x = 1 }", + "class Foo {\n static {\n }\n x = 1;\n}" + ); + expectPrinted_( + "class Foo { static { this.foo() } }", + "class Foo {\n static {\n this.foo();\n }\n}" + ); + + expectParseError( + "class Foo { static { yield } }", + '"yield" is a reserved word and cannot be used in strict mode' + ); + expectParseError( + "class Foo { static { await } }", + 'The keyword "await" cannot be used here' + ); + expectParseError( + "class Foo { static { return } }", + "A return statement cannot be used here" + ); + expectParseError( + "class Foo { static { break } }", + 'Cannot use "break" here' + ); + expectParseError( + "class Foo { static { continue } }", + 'Cannot use "continue" here' + ); + expectParseError( + "x: { class Foo { static { break x } } }", + 'There is no containing label named "x"' + ); + expectParseError( + "x: { class Foo { static { continue x } } }", + 'There is no containing label named "x"' + ); + + expectParseError( + "class Foo { get #x() { this.#x = 1 } }", + 'Writing to getter-only property "#x" will throw' + ); + expectParseError( + "class Foo { get #x() { this.#x += 1 } }", + 'Writing to getter-only property "#x" will throw' + ); + expectParseError( + "class Foo { set #x(x) { this.#x } }", + 'Reading from setter-only property "#x" will throw' + ); + expectParseError( + "class Foo { set #x(x) { this.#x += 1 } }", + 'Reading from setter-only property "#x" will throw' + ); + + // Writing to method warnings + expectParseError( + "class Foo { #x() { this.#x = 1 } }", + 'Writing to read-only method "#x" will throw' + ); + expectParseError( + "class Foo { #x() { this.#x += 1 } }", + 'Writing to read-only method "#x" will throw' + ); + }); + + describe("simplification", () => { + it("unary operator", () => { + expectPrinted("a = !(b, c)", "a = (b , !c)"); + }); + + it("constant folding", () => { + expectPrinted("1 && 2", "2"); + expectPrinted("1 || 2", "1"); + expectPrinted("0 && 1", "0"); + expectPrinted("0 || 1", "1"); + + expectPrinted("null ?? 1", "1"); + expectPrinted("undefined ?? 1", "1"); + expectPrinted("0 ?? 1", "0"); + expectPrinted("false ?? 1", "false"); + expectPrinted('"" ?? 1', '""'); + + expectPrinted("typeof undefined", '"undefined"'); + expectPrinted("typeof null", '"object"'); + expectPrinted("typeof false", '"boolean"'); + expectPrinted("typeof true", '"boolean"'); + expectPrinted("typeof 123", '"number"'); + expectPrinted("typeof 123n", '"bigint"'); + expectPrinted("typeof 'abc'", '"string"'); + expectPrinted("typeof function() {}", '"function"'); + expectPrinted("typeof (() => {})", '"function"'); + expectPrinted("typeof {}", "typeof {}"); + expectPrinted("typeof []", "typeof []"); + + expectPrinted("undefined === undefined", "true"); + expectPrinted("undefined !== undefined", "false"); + expectPrinted("undefined == undefined", "true"); + expectPrinted("undefined != undefined", "false"); + + expectPrinted("null === null", "true"); + expectPrinted("null !== null", "false"); + expectPrinted("null == null", "true"); + expectPrinted("null != null", "false"); + + expectPrinted("undefined === null", "undefined === null"); + expectPrinted("undefined !== null", "undefined !== null"); + expectPrinted("undefined == null", "undefined == null"); + expectPrinted("undefined != null", "undefined != null"); + + expectPrinted("true === true", "true"); + expectPrinted("true === false", "false"); + expectPrinted("true !== true", "false"); + expectPrinted("true !== false", "true"); + expectPrinted("true == true", "true"); + expectPrinted("true == false", "false"); + expectPrinted("true != true", "false"); + expectPrinted("true != false", "true"); + + expectPrinted("1 === 1", "true"); + expectPrinted("1 === 2", "false"); + expectPrinted("1 === '1'", '1 === "1"'); + expectPrinted("1 == 1", "true"); + expectPrinted("1 == 2", "false"); + expectPrinted("1 == '1'", '1 == "1"'); + + expectPrinted("1 !== 1", "false"); + expectPrinted("1 !== 2", "true"); + expectPrinted("1 !== '1'", '1 !== "1"'); + expectPrinted("1 != 1", "false"); + expectPrinted("1 != 2", "true"); + expectPrinted("1 != '1'", '1 != "1"'); + + expectPrinted("'a' === '\\x61'", "true"); + expectPrinted("'a' === '\\x62'", "false"); + expectPrinted("'a' === 'abc'", "false"); + expectPrinted("'a' !== '\\x61'", "false"); + expectPrinted("'a' !== '\\x62'", "true"); + expectPrinted("'a' !== 'abc'", "true"); + expectPrinted("'a' == '\\x61'", "true"); + expectPrinted("'a' == '\\x62'", "false"); + expectPrinted("'a' == 'abc'", "false"); + expectPrinted("'a' != '\\x61'", "false"); + expectPrinted("'a' != '\\x62'", "true"); + expectPrinted("'a' != 'abc'", "true"); + + expectPrinted("'a' + 'b'", '"ab"'); + expectPrinted("'a' + 'bc'", '"abc"'); + expectPrinted("'ab' + 'c'", '"abc"'); + expectPrinted("x + 'a' + 'b'", 'x + "ab"'); + expectPrinted("x + 'a' + 'bc'", 'x + "abc"'); + expectPrinted("x + 'ab' + 'c'", 'x + "abc"'); + expectPrinted("'a' + 1", '"a" + 1'); + expectPrinted("x * 'a' + 'b'", 'x * "a" + "b"'); + + expectPrinted("'string' + `template`", `"stringtemplate"`); + + expectPrinted("`template` + 'string'", "`templatestring`"); + + // TODO: string template simplification + // expectPrinted("'string' + `a${foo}b`", "`stringa${foo}b`"); + // expectPrinted("'string' + tag`template`", '"string" + tag`template`;'); + // expectPrinted("`a${foo}b` + 'string'", "`a${foo}bstring`"); + // expectPrinted("tag`template` + 'string'", 'tag`template` + "string"'); + // expectPrinted("`template` + `a${foo}b`", "`templatea${foo}b`"); + // expectPrinted("`a${foo}b` + `template`", "`a${foo}btemplate`"); + // expectPrinted("`a${foo}b` + `x${bar}y`", "`a${foo}bx${bar}y`"); + // expectPrinted( + // "`a${i}${j}bb` + `xxx${bar}yyyy`", + // "`a${i}${j}bbxxx${bar}yyyy`" + // ); + // expectPrinted( + // "`a${foo}bb` + `xxx${i}${j}yyyy`", + // "`a${foo}bbxxx${i}${j}yyyy`" + // ); + // expectPrinted( + // "`template` + tag`template2`", + // "`template` + tag`template2`" + // ); + // expectPrinted( + // "tag`template` + `template2`", + // "tag`template` + `template2`" + // ); + + expectPrinted("123", "123"); + expectPrinted("123 .toString()", "123 .toString()"); + expectPrinted("-123", "-123"); + expectPrinted("(-123).toString()", "(-123).toString()"); + expectPrinted("-0", "-0"); + expectPrinted("(-0).toString()", "(-0).toString()"); + expectPrinted("-0 === 0", "true"); + + expectPrinted("NaN", "NaN"); + expectPrinted("NaN.toString()", "NaN.toString()"); + expectPrinted("NaN === NaN", "false"); + + expectPrinted("Infinity", "Infinity"); + expectPrinted("Infinity.toString()", "Infinity.toString()"); + expectPrinted("(-Infinity).toString()", "(-Infinity).toString()"); + expectPrinted("Infinity === Infinity", "true"); + expectPrinted("Infinity === -Infinity", "false"); + + expectPrinted("123n === 1_2_3n", "true"); + }); + describe("type coercions", () => { + const dead = ` + if ("") { + TEST_FAIL + } + + if (false) { + TEST_FAIL + } + + if (0) { + TEST_FAIL + } + + if (void 0) { + TEST_FAIL + } + + if (null) { + TEST_FAIL + } + + var should_be_true = typeof "" === "string" || false + var should_be_false = typeof "" !== "string" && TEST_FAIL; + var should_be_false_2 = typeof true === "string" && TEST_FAIL; + var should_be_false_3 = typeof false === "string" && TEST_FAIL; + var should_be_false_4 = typeof 123n === "string" && TEST_FAIL; + var should_be_false_5 = typeof function(){} === "string" && TEST_FAIL; + var should_be_kept = typeof globalThis.BACON === "string" && TEST_OK; + var should_be_kept_1 = typeof TEST_OK === "string"; + + var should_be_kept_2 = TEST_OK ?? true; + var should_be_kept_4 = { "TEST_OK": true } ?? TEST_FAIL; + var should_be_false_6 = false ?? TEST_FAIL; + var should_be_true_7 = true ?? TEST_FAIL; + `; + const out = transpiler.transformSync(dead); + + for (let line of out.split("\n")) { + it(line, () => { + if (line.includes("should_be_kept")) { + expect(line.includes("TEST_OK")).toBe(true); + } + + if (line.includes("should_be_false")) { + if (!line.includes("= false")) + throw new Error(`Expected false in "${line}"`); + expect(line.includes("= false")).toBe(true); + } + + if (line.includes("TEST_FAIL")) { + throw new Error(`"${line}"\n\tshould not contain TEST_FAIL`); + } + }); + } + }); + }); + + describe("scan", () => { + it("reports all export names", () => { + const { imports, exports } = transpiler.scan(code); + + expect(exports[0]).toBe("action"); + expect(exports[2]).toBe("loader"); + expect(exports[1]).toBe("default"); + expect(exports).toHaveLength(3); + + expect(imports.filter(({ path }) => path === "remix")).toHaveLength(1); + expect(imports.filter(({ path }) => path === "mod")).toHaveLength(0); + expect(imports.filter(({ path }) => path === "react")).toHaveLength(1); + expect(imports).toHaveLength(2); + }); + }); + + describe("transform", () => { + it("supports macros", async () => { + const out = await transpiler.transform(` + import {keepSecondArgument} from 'macro:${ + import.meta.dir + }/macro-check.js'; + + export default keepSecondArgument("Test failed", "Test passed"); + export function otherNamesStillWork() {} + `); + expect(out.includes("Test failed")).toBe(false); + expect(out.includes("Test passed")).toBe(true); + + // ensure both the import and the macro function call are removed + expect(out.includes("keepSecondArgument")).toBe(false); + expect(out.includes("otherNamesStillWork")).toBe(true); + }); + + it("sync supports macros", () => { + const out = transpiler.transformSync(` + import {keepSecondArgument} from 'macro:${ + import.meta.dir + }/macro-check.js'; + + export default keepSecondArgument("Test failed", "Test passed"); + export function otherNamesStillWork() { + + } + `); + expect(out.includes("Test failed")).toBe(false); + expect(out.includes("Test passed")).toBe(true); + + expect(out.includes("keepSecondArgument")).toBe(false); + expect(out.includes("otherNamesStillWork")).toBe(true); + }); + + const importLines = [ + "import {createElement, bacon} from 'react';", + "import {bacon, createElement} from 'react';", + ]; + describe("sync supports macros remap", () => { + for (let importLine of importLines) { + it(importLine, () => { + var thisCode = ` + ${importLine} + + export default bacon("Test failed", "Test passed"); + export function otherNamesStillWork() { + return createElement("div"); + } + + `; + var out = transpiler.transformSync(thisCode); + try { + expect(out.includes("Test failed")).toBe(false); + expect(out.includes("Test passed")).toBe(true); + + expect(out.includes("bacon")).toBe(false); + expect(out.includes("createElement")).toBe(true); + } catch (e) { + console.log("Failing code:\n\n" + out + "\n"); + throw e; + } + }); + } + }); + + it("macro remap removes import statement if its the only used one", () => { + const out = transpiler.transformSync(` + import {bacon} from 'react'; + + export default bacon("Test failed", "Test passed"); + `); + + expect(out.includes("Test failed")).toBe(false); + expect(out.includes("Test passed")).toBe(true); + + expect(out.includes("bacon")).toBe(false); + expect(out.includes("import")).toBe(false); + }); + + it("removes types", () => { + expect(code.includes("mod")).toBe(true); + expect(code.includes("xx")).toBe(true); + expect(code.includes("ActionFunction")).toBe(true); + expect(code.includes("LoaderFunction")).toBe(true); + expect(code.includes("ReactNode")).toBe(true); + expect(code.includes("React")).toBe(true); + expect(code.includes("Component")).toBe(true); + const out = transpiler.transformSync(code); + + expect(out.includes("ActionFunction")).toBe(false); + expect(out.includes("LoaderFunction")).toBe(false); + expect(out.includes("mod")).toBe(false); + expect(out.includes("xx")).toBe(false); + expect(out.includes("ReactNode")).toBe(false); + const { exports } = transpiler.scan(out); + exports.sort(); + + expect(exports[0]).toBe("action"); + expect(exports[2]).toBe("loader"); + expect(exports[1]).toBe("default"); + expect(exports).toHaveLength(3); + }); + }); +}); diff --git a/test/bun.js/tsconfig.json b/test/bun.js/tsconfig.json new file mode 100644 index 000000000..9a6c36e06 --- /dev/null +++ b/test/bun.js/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "lib": ["ESNext"], + "module": "esnext", + "target": "esnext", + "noEmit": true, + "allowJs": true, + "typeRoots": ["../../types"], + "types": ["bun"], + "allowSyntheticDefaultImports": true, + "baseUrl": ".", + "paths": { + "foo/bar": ["baz.js"] + } + } +} diff --git a/test/bun.js/unsafe.test.js b/test/bun.js/unsafe.test.js new file mode 100644 index 000000000..741dc0241 --- /dev/null +++ b/test/bun.js/unsafe.test.js @@ -0,0 +1,51 @@ +import { test, expect, it, describe } from "bun:test"; +import { gc } from "./gc"; + +it("arrayBufferToString u8", async () => { + var encoder = new TextEncoder(); + const bytes = encoder.encode("hello world"); + gc(true); + expect(Bun.unsafe.arrayBufferToString(bytes)).toBe("hello world"); + gc(true); + await new Promise((resolve) => setTimeout(resolve, 0)); + gc(true); +}); + +it("arrayBufferToString ArrayBuffer", async () => { + var encoder = new TextEncoder(); + var bytes = encoder.encode("hello world"); + gc(true); + const out = Bun.unsafe.arrayBufferToString(bytes.buffer); + expect(out).toBe("hello world"); + gc(true); + await new Promise((resolve) => setTimeout(resolve, 0)); + globalThis.bytes = bytes; + gc(true); + expect(out).toBe("hello world"); +}); + +it("arrayBufferToString u16", () => { + var encoder = new TextEncoder(); + const bytes = encoder.encode("hello world"); + var uint16 = new Uint16Array(bytes.byteLength); + uint16.set(bytes); + const charCodes = Bun.unsafe + .arrayBufferToString(uint16) + .split("") + .map((a) => a.charCodeAt(0)); + gc(true); + for (let i = 0; i < charCodes.length; i++) { + expect("hello world"[i]).toBe(String.fromCharCode(charCodes[i])); + } + gc(true); + expect(charCodes.length).toBe("hello world".length); + gc(true); +}); + +it("Bun.allocUnsafe", () => { + var buffer = Bun.allocUnsafe(1024); + expect(buffer instanceof Uint8Array).toBe(true); + expect(buffer.length).toBe(1024); + buffer[0] = 0; + expect(buffer[0]).toBe(0); +}); diff --git a/test/bun.js/url.test.ts b/test/bun.js/url.test.ts new file mode 100644 index 000000000..37ea2008b --- /dev/null +++ b/test/bun.js/url.test.ts @@ -0,0 +1,102 @@ +import { describe, it, expect } from "bun:test"; + +describe("url", () => { + it("prints", () => { + expect(Bun.inspect(new URL("https://example.com"))).toBe( + "https://example.com/" + ); + + expect( + Bun.inspect( + new URL( + "https://github.com/Jarred-Sumner/bun/issues/135?hello%20i%20have%20spaces%20thank%20you%20good%20night" + ) + ) + ).toBe( + "https://github.com/Jarred-Sumner/bun/issues/135?hello%20i%20have%20spaces%20thank%20you%20good%20night" + ); + }); + it("works", () => { + const inputs: [ + [ + string, + { + hash: string; + host: string; + hostname: string; + href: string; + origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + username: string; + } + ] + ] = [ + [ + "https://username:password@api.foo.bar.com:9999/baz/okay/i/123?ran=out&of=things#to-use-as-a-placeholder", + { + hash: "#to-use-as-a-placeholder", + host: "api.foo.bar.com:9999", + hostname: "api.foo.bar.com", + href: "https://username:password@api.foo.bar.com:9999/baz/okay/i/123?ran=out&of=things#to-use-as-a-placeholder", + origin: "https://api.foo.bar.com:9999", + password: "password", + pathname: "/baz/okay/i/123", + port: "9999", + protocol: "https:", + search: "?ran=out&of=things", + username: "username", + }, + ], + [ + "https://url.spec.whatwg.org/#url-serializing", + { + hash: "#url-serializing", + host: "url.spec.whatwg.org", + hostname: "url.spec.whatwg.org", + href: "https://url.spec.whatwg.org/#url-serializing", + origin: "https://url.spec.whatwg.org", + password: "", + pathname: "/", + port: "", + protocol: "https:", + search: "", + username: "", + }, + ], + [ + "https://url.spec.whatwg.org#url-serializing", + { + hash: "#url-serializing", + host: "url.spec.whatwg.org", + hostname: "url.spec.whatwg.org", + href: "https://url.spec.whatwg.org/#url-serializing", + origin: "https://url.spec.whatwg.org", + password: "", + pathname: "/", + port: "", + protocol: "https:", + search: "", + username: "", + }, + ], + ]; + + for (let [url, values] of inputs) { + const result = new URL(url); + expect(result.hash).toBe(values.hash); + expect(result.host).toBe(values.host); + expect(result.hostname).toBe(values.hostname); + expect(result.href).toBe(values.href); + expect(result.password).toBe(values.password); + expect(result.pathname).toBe(values.pathname); + expect(result.port).toBe(values.port); + expect(result.protocol).toBe(values.protocol); + expect(result.search).toBe(values.search); + expect(result.username).toBe(values.username); + } + }); +}); diff --git a/test/bun.js/wasm-return-1-test.zig b/test/bun.js/wasm-return-1-test.zig new file mode 100644 index 000000000..d46bdae92 --- /dev/null +++ b/test/bun.js/wasm-return-1-test.zig @@ -0,0 +1,5 @@ +export fn hello() i32 { + return 1; +} + +pub fn main() void {} diff --git a/test/bun.js/wasm.js b/test/bun.js/wasm.js new file mode 100644 index 000000000..a4daaaffe --- /dev/null +++ b/test/bun.js/wasm.js @@ -0,0 +1 @@ +import * as wasm from "./wasm-return-1-test.wasm"; diff --git a/test/bun.js/wasm.test.js b/test/bun.js/wasm.test.js new file mode 100644 index 000000000..ab88d5beb --- /dev/null +++ b/test/bun.js/wasm.test.js @@ -0,0 +1,20 @@ +import { it } from "bun:test"; +// import * as wasm from "./wasm-return-1-test.wasm"; + +// import { readFileSync } from "fs"; + +// it("wasm readFileSync", async () => { +// console.log("here"); +// console.log(wasm.hello()); +// }); + +// it("wasm import", async () => { +// console.log("heyt"); +// try { +// console.log("hi"); +// expect(wasm.hello()).toBe(1); +// } catch (err) { +// console.error(err); +// throw err; +// } +// }); diff --git a/test/bun.js/web-globals.test.js b/test/bun.js/web-globals.test.js new file mode 100644 index 000000000..ac7c22e84 --- /dev/null +++ b/test/bun.js/web-globals.test.js @@ -0,0 +1,46 @@ +import { expect, test } from "bun:test"; + +test("exists", () => { + expect(typeof URL !== "undefined").toBe(true); + expect(typeof URLSearchParams !== "undefined").toBe(true); + expect(typeof DOMException !== "undefined").toBe(true); + expect(typeof Event !== "undefined").toBe(true); + expect(typeof EventTarget !== "undefined").toBe(true); + expect(typeof AbortController !== "undefined").toBe(true); + expect(typeof AbortSignal !== "undefined").toBe(true); + expect(typeof CustomEvent !== "undefined").toBe(true); + expect(typeof Headers !== "undefined").toBe(true); + expect(typeof ErrorEvent !== "undefined").toBe(true); + expect(typeof CloseEvent !== "undefined").toBe(true); + expect(typeof MessageEvent !== "undefined").toBe(true); + expect(typeof TextEncoder !== "undefined").toBe(true); + expect(typeof WebSocket !== "undefined").toBe(true); +}); + +test("CloseEvent", () => { + var event = new CloseEvent("close", { reason: "world" }); + expect(event.type).toBe("close"); + const target = new EventTarget(); + var called = false; + target.addEventListener("close", ({ type, reason }) => { + expect(type).toBe("close"); + expect(reason).toBe("world"); + called = true; + }); + target.dispatchEvent(event); + expect(called).toBe(true); +}); + +test("MessageEvent", () => { + var event = new MessageEvent("message", { data: "world" }); + expect(event.type).toBe("message"); + const target = new EventTarget(); + var called = false; + target.addEventListener("message", ({ type, data }) => { + expect(type).toBe("message"); + expect(data).toBe("world"); + called = true; + }); + target.dispatchEvent(event); + expect(called).toBe(true); +}); diff --git a/test/bun.js/websocket.test.js b/test/bun.js/websocket.test.js new file mode 100644 index 000000000..ab825fa63 --- /dev/null +++ b/test/bun.js/websocket.test.js @@ -0,0 +1,79 @@ +import { describe, it, expect } from "bun:test"; +import { unsafe } from "bun"; +import { gc } from "./gc"; + +const TEST_WEBSOCKET_HOST = + process.env.TEST_WEBSOCKET_HOST || "wss://ws.postman-echo.com/raw"; + +describe("WebSocket", () => { + it("should connect", async () => { + const ws = new WebSocket(TEST_WEBSOCKET_HOST); + await new Promise((resolve, reject) => { + ws.onopen = resolve; + ws.onerror = reject; + }); + var closed = new Promise((resolve, reject) => { + ws.onclose = resolve; + }); + ws.close(); + await closed; + }); + + it("should send and receive messages", async () => { + const ws = new WebSocket(TEST_WEBSOCKET_HOST); + await new Promise((resolve, reject) => { + ws.onopen = resolve; + ws.onerror = reject; + ws.onclose = () => { + reject("WebSocket closed"); + }; + }); + const count = 10; + + // 10 messages in burst + var promise = new Promise((resolve, reject) => { + var remain = count; + ws.onmessage = (event) => { + gc(true); + expect(event.data).toBe("Hello World!"); + remain--; + + if (remain <= 0) { + ws.onmessage = () => {}; + resolve(); + } + }; + ws.onerror = reject; + }); + + for (let i = 0; i < count; i++) { + ws.send("Hello World!"); + gc(true); + } + + await promise; + var echo = 0; + + // 10 messages one at a time + function waitForEcho() { + return new Promise((resolve, reject) => { + gc(true); + const msg = `Hello World! ${echo++}`; + ws.onmessage = (event) => { + expect(event.data).toBe(msg); + resolve(); + }; + ws.onerror = reject; + ws.onclose = reject; + ws.send(msg); + gc(true); + }); + } + gc(true); + for (let i = 0; i < count; i++) await waitForEcho(); + ws.onclose = () => {}; + ws.onerror = () => {}; + ws.close(); + gc(true); + }); +}); diff --git a/test/bun.js/writeFileSync.txt b/test/bun.js/writeFileSync.txt new file mode 100644 index 000000000..a0fe4515f --- /dev/null +++ b/test/bun.js/writeFileSync.txt @@ -0,0 +1 @@ +File
\ No newline at end of file diff --git a/test/bun.js/zlib.test.js b/test/bun.js/zlib.test.js new file mode 100644 index 000000000..aecb095cc --- /dev/null +++ b/test/bun.js/zlib.test.js @@ -0,0 +1,18 @@ +import { describe, it, expect } from "bun:test"; +import { gzipSync, deflateSync, inflateSync, gunzipSync } from "bun"; + +describe("zlib", () => { + it("should be able to deflate and inflate", () => { + const data = new TextEncoder().encode("Hello World!".repeat(1)); + const compressed = deflateSync(data); + const decompressed = inflateSync(compressed); + expect(decompressed.join("")).toBe(data.join("")); + }); + + it("should be able to gzip and gunzip", () => { + const data = new TextEncoder().encode("Hello World!".repeat(1)); + const compressed = gzipSync(data); + const decompressed = gunzipSync(compressed); + expect(decompressed.join("")).toBe(data.join("")); + }); +}); diff --git a/test/macro/assert.tsx b/test/macro/assert.tsx new file mode 100644 index 000000000..8a6e4d822 --- /dev/null +++ b/test/macro/assert.tsx @@ -0,0 +1,4 @@ +// This logs the result at build time +export function unreachable(call) { + throw new Error(call.arguments[0].toString() || "unreachable"); +} diff --git a/test/macro/fetchSync.tsx b/test/macro/fetchSync.tsx new file mode 100644 index 000000000..ebe1566e6 --- /dev/null +++ b/test/macro/fetchSync.tsx @@ -0,0 +1,8 @@ +export async function fetchSync(ctx) { + const str = ctx.arguments[0].toString(); + + const response = await fetch(str); + const text = await response.text(); + + return <string value={text} />; +} diff --git a/test/macro/hello-fetch-macro.tsx b/test/macro/hello-fetch-macro.tsx new file mode 100644 index 000000000..fa0de4a9d --- /dev/null +++ b/test/macro/hello-fetch-macro.tsx @@ -0,0 +1,5 @@ +import { fetchSync } from "macro:./fetchSync.tsx"; + +const synchronousFetch = fetchSync(`https://example.com`); + +console.log(synchronousFetch); diff --git a/test/macro/loadMocks.tsx b/test/macro/loadMocks.tsx new file mode 100644 index 000000000..4b7993c6d --- /dev/null +++ b/test/macro/loadMocks.tsx @@ -0,0 +1,30 @@ +import { unreachable } from "macro:./assert"; + +if (process.env.NODE_ENV !== "test") + unreachable("This module should only be imported in tests"); + +export const mockData = { + Copilot: { + id: "Copilot", + name: "Copilot", + description: "Copilot", + icon: "https://s3.amazonaws.com/copilot-public/images/icons/Copilot.png", + color: "#00AEEF", + type: "service", + tags: ["copilot"], + categories: ["copilot"], + links: [ + { + id: "Copilot", + name: "Copilot", + url: "https://copilot.io", + description: "Copilot", + icon: "https://s3.amazonaws.com/copilot-public/images/icons/Copilot.png", + color: "#00AEEF", + type: "service", + tags: ["copilot"], + categories: ["copilot"], + }, + ], + }, +}; diff --git a/test/scripts/browser.js b/test/scripts/browser.js new file mode 100644 index 000000000..479a55c9c --- /dev/null +++ b/test/scripts/browser.js @@ -0,0 +1,190 @@ +const puppeteer = require("puppeteer"); +const http = require("http"); +const path = require("path"); +const url = require("url"); +const fs = require("fs"); +const child_process = require("child_process"); +const snippetsDir = path.resolve(__dirname, "../snippets"); +const serverURL = process.env.TEST_SERVER_URL || "http://localhost:8080"; +const USE_EXISTING_PROCESS = process.env.USE_EXISTING_PROCESS || false; +const DISABLE_HMR = !!process.env.DISABLE_HMR; +const bunFlags = [ + `--origin=${serverURL}`, + DISABLE_HMR && "--disable-hmr", +].filter(Boolean); +const bunExec = process.env.BUN_BIN || "bun"; + +var bunProcess; +var waitSpawn; +if (!USE_EXISTING_PROCESS) { + bunProcess = child_process.spawn(bunExec, bunFlags, { + cwd: snippetsDir, + stdio: "pipe", + env: { + ...process.env, + DISABLE_BUN_ANALYTICS: "1", + }, + + shell: false, + }); + console.log("$", bunExec, bunFlags.join(" ")); + bunProcess.stderr.pipe(process.stderr); + bunProcess.stdout.pipe(process.stdout); + var rejecter; + bunProcess.once("error", (err) => { + console.error("β bun error", err); + process.exit(1); + }); + if (!process.env.CI) { + waitSpawn = new Promise((resolve, reject) => { + bunProcess.once("spawn", (code) => { + console.log("Spawned"); + resolve(); + }); + }); + } + process.on("beforeExit", () => { + bunProcess && bunProcess.kill(0); + }); +} +const isDebug = bunExec.endsWith("-debug"); + +function writeSnapshot(name, code) { + let file = path.join(__dirname, "../snapshots", name); + + if (!DISABLE_HMR) { + file = + file.substring(0, file.length - path.extname(file).length) + + ".hmr" + + path.extname(file); + } + + if (!fs.existsSync(path.dirname(file))) { + fs.mkdirSync(path.dirname(file), { recursive: true }); + } + + fs.writeFileSync( + isDebug + ? file.substring(0, file.length - path.extname(file).length) + + ".debug" + + path.extname(file) + : file, + code + ); +} + +const baseOptions = { + dumpio: !!process.env.CI_DEBUG, + + args: [ + "--disable-gpu", + "--disable-dev-shm-usage", + "--disable-setuid-sandbox", + "--no-sandbox", + "--ignore-certificate-errors", + "--use-fake-ui-for-media-stream", + "--use-fake-device-for-media-stream", + "--disable-sync", + ], + executablePath: process.env.BROWSER_EXECUTABLE, + headless: true, +}; + +async function main() { + const launchOptions = USE_EXISTING_PROCESS + ? { ...baseOptions, devtools: !process.env.CI } + : baseOptions; + const browser = await puppeteer.launch(launchOptions); + const promises = []; + let allTestsPassed = true; + + if (waitSpawn) await waitSpawn; + var canRetry = true; + + async function runPage(key) { + var page; + try { + page = await browser.newPage(); + if (USE_EXISTING_PROCESS) { + await page.evaluate(` + globalThis.BUN_DEBUG_MODE = true; + `); + } + + var shouldClose = true; + page.on("console", (obj) => + console.log(`[console.${obj.type()}] ${obj.text()}`) + ); + page.exposeFunction("testFail", (error) => { + console.log(`β ${error}`); + allTestsPassed = false; + }); + let testDone = new Promise((resolve) => { + page.exposeFunction("testDone", resolve); + }); + try { + await page.goto(`${serverURL}/`, { + waitUntil: "domcontentloaded", + }); + + await page.evaluate(` + globalThis.runTest("${key}"); + `); + await testDone; + } catch (err) { + if (canRetry) { + console.log( + `β ${key} failed once (incase it's still booting on universal binary for the first time). Retrying...` + ); + canRetry = false; + return await runPage(key); + } + throw err; + } + + console.log(`β
${key}`); + } catch (e) { + if (USE_EXISTING_PROCESS) shouldClose = false; + allTestsPassed = false; + console.log(`β ${key}: ${(e && e.message) || e}`); + } finally { + try { + const code = await page.evaluate(` + globalThis.getModuleScriptSrc("${key}"); + `); + writeSnapshot(key, code); + } catch (exception) { + console.warn(`Failed to update snapshot: ${key}`, exception); + } + } + canRetry = false; + if (shouldClose) await page.close(); + } + + const tests = require("./snippets.json"); + tests.reverse(); + + for (let test of tests) { + await runPage(test); + } + + if (!USE_EXISTING_PROCESS || (USE_EXISTING_PROCESS && allTestsPassed)) { + bunProcess && bunProcess.kill(0); + + if (!allTestsPassed) { + console.error(`β browser test failed`); + process.exit(1); + } else { + console.log(`β
browser test passed`); + bunProcess && bunProcess.kill(0); + process.exit(0); + } + await browser.close(); + } +} + +main().catch((error) => + setTimeout(() => { + throw error; + }) +); diff --git a/test/scripts/bun.js b/test/scripts/bun.js new file mode 100644 index 000000000..f8e4d2fa0 --- /dev/null +++ b/test/scripts/bun.js @@ -0,0 +1,86 @@ +const fail = true; +// import snippets from "./snippets.json"; + +// globalThis.console.assert = (condition, ...content) => { +// if (!condition) { +// throw new Error(content.join(" ")); +// } +// }; +// globalThis.getModuleScriptSrc = async (name) => { +// const response = await fetch(name, { +// cache: "force-cache", +// }); + +// if (response.ok) { +// return await response.text(); +// } else { +// throw new Error(`Failed to get module script ${name}`); +// } +// }; + +// globalThis.runTest = async (name) => { +// testSuccess = false; +// var Namespace = await import(name); +// var testFunction = Namespace.test; + +// if ( +// !("test" in Namespace) && +// "default" in Namespace && +// typeof Namespace.default === "function" +// ) { +// Namespace = Namespace.default(); +// testFunction = Namespace.test; +// } + +// if (!testFunction) { +// throw new Error("No test function found in " + name); +// } + +// if (typeof testFunction !== "function") { +// throw new Error( +// `Expected (await import(\"${name}\"")) to have a test function.\nReceived: ${Object.keys( +// Namespace +// ).join(", ")} ` +// ); +// } + +// if (globalThis.BUN_DEBUG_MODE) { +// try { +// await testFunction(); +// if (!testSuccess) { +// throw new Error("Test failed"); +// } +// } catch (exception) { +// console.error(exception); +// debugger; +// throw exception; +// } +// } else { +// await testFunction(); +// if (!testSuccess) { +// throw new Error("Test failed"); +// } +// } +// }; + +// var testSuccess = false; +// globalThis.testDone = () => { +// testSuccess = true; +// }; + +// let fail = 0; +// for (let snippet of snippets) { +// try { +// await runTest("../snippets/" + snippet.substring(1)); +// console.log("β
", snippet); +// } catch (exception) { +// console.error(`β ${snippet}`); +// console.error(exception); + +// fail++; +// } +// } + +if (fail) throw new Error(`β browser test failed (${fail})`); + +console.log(`β
bun.js test passed`); diff --git a/test/scripts/bun.lockb b/test/scripts/bun.lockb Binary files differnew file mode 100755 index 000000000..2d9937d57 --- /dev/null +++ b/test/scripts/bun.lockb diff --git a/test/scripts/package-lock.json b/test/scripts/package-lock.json new file mode 100644 index 000000000..a41b9bd92 --- /dev/null +++ b/test/scripts/package-lock.json @@ -0,0 +1,892 @@ +{ + "name": "scripts", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "puppeteer": "^10.2.0" + } + }, + "node_modules/@types/node": { + "version": "16.11.26", + "license": "MIT", + "optional": true + }, + "node_modules/@types/yauzl": { + "version": "2.9.2", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.3", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bl": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "license": "ISC" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.1", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.901419", + "license": "BSD-3-Clause" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "4.3.3", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/get-stream": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.3", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minimatch": { + "version": "3.0.8", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "license": "MIT", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "license": "MIT" + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/progress": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/puppeteer": { + "version": "10.4.0", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "4.3.1", + "devtools-protocol": "0.0.901419", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "node-fetch": "2.6.1", + "pkg-dir": "4.2.0", + "progress": "2.0.1", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.0.0", + "unbzip2-stream": "1.3.3", + "ws": "7.4.6" + }, + "engines": { + "node": ">=10.18.1" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/tar-fs": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp": "^0.5.1", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/through": { + "version": "2.3.8", + "license": "MIT" + }, + "node_modules/unbzip2-stream": { + "version": "1.3.3", + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/ws": { + "version": "7.4.6", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + }, + "dependencies": { + "@types/node": { + "version": "16.11.26", + "optional": true + }, + "@types/yauzl": { + "version": "2.9.2", + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "agent-base": { + "version": "6.0.2", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "requires": { + "ms": "2.1.2" + } + } + } + }, + "balanced-match": { + "version": "1.0.2" + }, + "base64-js": { + "version": "1.5.1" + }, + "bl": { + "version": "4.1.0", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13" + }, + "chownr": { + "version": "1.1.4" + }, + "concat-map": { + "version": "0.0.1" + }, + "debug": { + "version": "4.3.1", + "requires": { + "ms": "2.1.2" + } + }, + "devtools-protocol": { + "version": "0.0.901419" + }, + "end-of-stream": { + "version": "1.4.4", + "requires": { + "once": "^1.4.0" + } + }, + "extract-zip": { + "version": "2.0.1", + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "requires": { + "ms": "2.1.2" + } + } + } + }, + "fd-slicer": { + "version": "1.1.0", + "requires": { + "pend": "~1.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-constants": { + "version": "1.0.0" + }, + "fs.realpath": { + "version": "1.0.0" + }, + "get-stream": { + "version": "5.2.0", + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.0", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "requires": { + "ms": "2.1.2" + } + } + } + }, + "ieee754": { + "version": "1.2.1" + }, + "inflight": { + "version": "1.0.6", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "locate-path": { + "version": "5.0.0", + "requires": { + "p-locate": "^4.1.0" + } + }, + "minimatch": { + "version": "3.0.8", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5" + }, + "mkdirp": { + "version": "0.5.5", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2" + }, + "node-fetch": { + "version": "2.6.1" + }, + "once": { + "version": "1.4.0", + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "2.3.0", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0" + }, + "path-exists": { + "version": "4.0.0" + }, + "path-is-absolute": { + "version": "1.0.1" + }, + "pend": { + "version": "1.2.0" + }, + "pkg-dir": { + "version": "4.2.0", + "requires": { + "find-up": "^4.0.0" + } + }, + "progress": { + "version": "2.0.1" + }, + "proxy-from-env": { + "version": "1.1.0" + }, + "pump": { + "version": "3.0.0", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "puppeteer": { + "version": "10.4.0", + "requires": { + "debug": "4.3.1", + "devtools-protocol": "0.0.901419", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "node-fetch": "2.6.1", + "pkg-dir": "4.2.0", + "progress": "2.0.1", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.0.0", + "unbzip2-stream": "1.3.3", + "ws": "7.4.6" + } + }, + "readable-stream": { + "version": "3.6.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "rimraf": { + "version": "3.0.2", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.1" + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "tar-fs": { + "version": "2.0.0", + "requires": { + "chownr": "^1.1.1", + "mkdirp": "^0.5.1", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "tar-stream": { + "version": "2.2.0", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "through": { + "version": "2.3.8" + }, + "unbzip2-stream": { + "version": "1.3.3", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "util-deprecate": { + "version": "1.0.2" + }, + "wrappy": { + "version": "1.0.2" + }, + "ws": { + "version": "7.4.6", + "requires": {} + }, + "yauzl": { + "version": "2.10.0", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/test/scripts/package.json b/test/scripts/package.json new file mode 100644 index 000000000..b4637138b --- /dev/null +++ b/test/scripts/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "puppeteer": "^10.2.0" + } +} diff --git a/test/scripts/snippets.json b/test/scripts/snippets.json new file mode 100644 index 000000000..ebdec23d3 --- /dev/null +++ b/test/scripts/snippets.json @@ -0,0 +1,32 @@ +[ + "/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js", + "/bundled-entry-point.js", + "/export.js", + "/type-only-imports.ts", + "/global-is-remapped-to-globalThis.js", + "/multiple-imports.js", + "/ts-fallback-rewrite-works.js", + "/tsx-fallback-rewrite-works.js", + "/lodash-regexp.js", + "/unicode-identifiers.js", + "/string-escapes.js", + "/package-json-exports/index.js", + "/array-args-with-default-values.js", + "/forbid-in-is-correct.js", + "/code-simplification-neql-define.js", + "/spread_with_key.tsx", + "/styledcomponents-output.js", + "/void-shouldnt-delete-call-expressions.js", + "/custom-emotion-jsx/file.jsx", + "/react-context-value-func.tsx", + "/latin1-chars-in-regexp.js", + "/jsx-spacing.jsx", + "/jsx-entities.jsx", + "/optional-chain-with-function.js", + "/template-literal.js", + "/number-literal-bug.js", + "/caught-require.js", + "/package-json-utf8.js", + "/multiple-var.js", + "/export-default-module-hot.js" +] diff --git a/test/snapshots/.prettierignore b/test/snapshots/.prettierignore new file mode 100644 index 000000000..4c43fe68f --- /dev/null +++ b/test/snapshots/.prettierignore @@ -0,0 +1 @@ +*.js
\ No newline at end of file diff --git a/test/snapshots/array-args-with-default-values.debug.js b/test/snapshots/array-args-with-default-values.debug.js new file mode 100644 index 000000000..9650405c6 --- /dev/null +++ b/test/snapshots/array-args-with-default-values.debug.js @@ -0,0 +1,27 @@ +var lines; +const data = () => lines.map(([a = null, b = null, c = null, d = null]) => ({ + a, + b, + c, + d +})); +export function test() { + let ran = false; + lines = [ + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined] + ]; + for (let foo of data()) { + console.assert(foo.a === null); + console.assert(foo.b === null); + console.assert(foo.c === null); + console.assert(foo.d === null); + ran = true; + } + console.assert(ran); + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/array-args-with-default-values.js.map diff --git a/test/snapshots/array-args-with-default-values.hmr.debug.js b/test/snapshots/array-args-with-default-values.hmr.debug.js new file mode 100644 index 000000000..e219cbd9a --- /dev/null +++ b/test/snapshots/array-args-with-default-values.hmr.debug.js @@ -0,0 +1,53 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +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; + +(hmr._load = function() { + var lines; + const data = () => lines.map(([a = null, b = null, c = null, d = null]) => ({ + a, + b, + c, + d + })); + function test() { + let ran = false; + lines = [ + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined] + ]; + for (let foo of data()) { + console.assert(foo.a === null); + console.assert(foo.b === null); + console.assert(foo.c === null); + console.assert(foo.d === null); + ran = true; + } + console.assert(ran); + testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/array-args-with-default-values.js.map diff --git a/test/snapshots/array-args-with-default-values.hmr.js b/test/snapshots/array-args-with-default-values.hmr.js new file mode 100644 index 000000000..3c8997b54 --- /dev/null +++ b/test/snapshots/array-args-with-default-values.hmr.js @@ -0,0 +1,51 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +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; +(hmr._load = function() { + var lines; + const data = () => lines.map(([a = null, b = null, c = null, d = null]) => ({ + a, + b, + c, + d + })); + function test() { + let ran = false; + lines = [ + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined] + ]; + for (let foo of data()) { + console.assert(foo.a === null); + console.assert(foo.b === null); + console.assert(foo.c === null); + console.assert(foo.d === null); + ran = true; + } + console.assert(ran); + testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/array-args-with-default-values.js.map diff --git a/test/snapshots/array-args-with-default-values.js b/test/snapshots/array-args-with-default-values.js new file mode 100644 index 000000000..9650405c6 --- /dev/null +++ b/test/snapshots/array-args-with-default-values.js @@ -0,0 +1,27 @@ +var lines; +const data = () => lines.map(([a = null, b = null, c = null, d = null]) => ({ + a, + b, + c, + d +})); +export function test() { + let ran = false; + lines = [ + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined] + ]; + for (let foo of data()) { + console.assert(foo.a === null); + console.assert(foo.b === null); + console.assert(foo.c === null); + console.assert(foo.d === null); + ran = true; + } + console.assert(ran); + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/array-args-with-default-values.js.map diff --git a/test/snapshots/bundled-entry-point.debug.js b/test/snapshots/bundled-entry-point.debug.js new file mode 100644 index 000000000..51562933f --- /dev/null +++ b/test/snapshots/bundled-entry-point.debug.js @@ -0,0 +1,11 @@ +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +import * as $bbcd215f 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/bundled-entry-point.hmr.debug.js b/test/snapshots/bundled-entry-point.hmr.debug.js new file mode 100644 index 000000000..622b6b75b --- /dev/null +++ b/test/snapshots/bundled-entry-point.hmr.debug.js @@ -0,0 +1,35 @@ +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; +var hmr = new FastHMR(3012834585, "bundled-entry-point.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + function test() { + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/bundled-entry-point.js.map diff --git a/test/snapshots/bundled-entry-point.hmr.js b/test/snapshots/bundled-entry-point.hmr.js new file mode 100644 index 000000000..b4fb5e46f --- /dev/null +++ b/test/snapshots/bundled-entry-point.hmr.js @@ -0,0 +1,33 @@ +import { +__require as require +} from "http://localhost:3000/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:3000/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; +(hmr._load = function() { + function test() { + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:3000/bundled-entry-point.js.map diff --git a/test/snapshots/bundled-entry-point.js b/test/snapshots/bundled-entry-point.js new file mode 100644 index 000000000..51562933f --- /dev/null +++ b/test/snapshots/bundled-entry-point.js @@ -0,0 +1,11 @@ +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +import * as $bbcd215f 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.debug.js b/test/snapshots/caught-require.debug.js new file mode 100644 index 000000000..73608f8e3 --- /dev/null +++ b/test/snapshots/caught-require.debug.js @@ -0,0 +1,32 @@ +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +try { + require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + +} catch (exception) { +} + +try { + await import("this-package-should-not-exist"); +} catch (exception) { +} +import("this-package-should-not-exist").then(() => { +}, () => { +}); +export async function test() { + try { + require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + } catch (exception) { + } + try { + await import("this-package-should-not-exist"); + } catch (exception) { + } + import("this-package-should-not-exist").then(() => { + }, () => { + }); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/caught-require.js.map diff --git a/test/snapshots/caught-require.hmr.debug.js b/test/snapshots/caught-require.hmr.debug.js new file mode 100644 index 000000000..5beecb99b --- /dev/null +++ b/test/snapshots/caught-require.hmr.debug.js @@ -0,0 +1,56 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(2398506918, "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"'`)); } )()); + } catch (exception) { + } + try { + await import("this-package-should-not-exist"); + } catch (exception) { + } + import("this-package-should-not-exist").then(() => { + }, () => { + }); + async function test() { + try { + require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + } catch (exception) { + } + try { + await import("this-package-should-not-exist"); + } catch (exception) { + } + import("this-package-should-not-exist").then(() => { + }, () => { + }); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/caught-require.js.map diff --git a/test/snapshots/caught-require.hmr.js b/test/snapshots/caught-require.hmr.js new file mode 100644 index 000000000..8a63f51a0 --- /dev/null +++ b/test/snapshots/caught-require.hmr.js @@ -0,0 +1,54 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(2398506918, "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"'`)); } )()); + } catch (exception) { + } + try { + await import("this-package-should-not-exist"); + } catch (exception) { + } + import("this-package-should-not-exist").then(() => { + }, () => { + }); + async function test() { + try { + require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + } catch (exception) { + } + try { + await import("this-package-should-not-exist"); + } catch (exception) { + } + import("this-package-should-not-exist").then(() => { + }, () => { + }); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/caught-require.js.map diff --git a/test/snapshots/caught-require.js b/test/snapshots/caught-require.js new file mode 100644 index 000000000..73608f8e3 --- /dev/null +++ b/test/snapshots/caught-require.js @@ -0,0 +1,32 @@ +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +try { + require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + +} catch (exception) { +} + +try { + await import("this-package-should-not-exist"); +} catch (exception) { +} +import("this-package-should-not-exist").then(() => { +}, () => { +}); +export async function test() { + try { + require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + } catch (exception) { + } + try { + await import("this-package-should-not-exist"); + } catch (exception) { + } + import("this-package-should-not-exist").then(() => { + }, () => { + }); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/caught-require.js.map diff --git a/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.debug.js b/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.debug.js new file mode 100644 index 000000000..1bd6883d8 --- /dev/null +++ b/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.debug.js @@ -0,0 +1,15 @@ +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"; + +export { _login as login }; + +export function test() { + return testDone(import.meta.url); +} +export let foo; +export let bar; + +//# 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.hmr.debug.js b/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.debug.js new file mode 100644 index 000000000..f685557dc --- /dev/null +++ b/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.debug.js @@ -0,0 +1,47 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} 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(3878252498, "cjs-transform-shouldnt-have-static-imports-in-cjs-function.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + function test() { + return testDone(import.meta.url); + } + var foo; + var bar; + hmr.exportAll({ + login: () => _login, + test: () => test, + foo: () => foo, + bar: () => bar + }); +})(); +var $$hmr_login = hmr.exports.login, $$hmr_test = hmr.exports.test, $$hmr_foo = hmr.exports.foo, $$hmr_bar = hmr.exports.bar; +hmr._update = function(exports) { + $$hmr_login = exports.login; + $$hmr_test = exports.test; + $$hmr_foo = exports.foo; + $$hmr_bar = exports.bar; +}; + +export { + $$hmr_login as login, + $$hmr_test as test, + $$hmr_foo as foo, + $$hmr_bar as bar +}; + +//# 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.hmr.js b/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.js new file mode 100644 index 000000000..b74b8c2b7 --- /dev/null +++ b/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.js @@ -0,0 +1,45 @@ +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:3000/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; +(hmr._load = function() { + function test() { + return testDone(import.meta.url); + } + var foo; + var bar; + hmr.exportAll({ + login: () => _login, + test: () => test, + foo: () => foo, + bar: () => bar + }); +})(); +var $$hmr_login = hmr.exports.login, $$hmr_test = hmr.exports.test, $$hmr_foo = hmr.exports.foo, $$hmr_bar = hmr.exports.bar; +hmr._update = function(exports) { + $$hmr_login = exports.login; + $$hmr_test = exports.test; + $$hmr_foo = exports.foo; + $$hmr_bar = exports.bar; +}; + +export { + $$hmr_login as login, + $$hmr_test as test, + $$hmr_foo as foo, + $$hmr_bar as bar +}; + +//# sourceMappingURL=http://localhost:3000/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 new file mode 100644 index 000000000..1bd6883d8 --- /dev/null +++ b/test/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js @@ -0,0 +1,15 @@ +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"; + +export { _login as login }; + +export function test() { + return testDone(import.meta.url); +} +export let foo; +export let bar; + +//# sourceMappingURL=http://localhost:8080/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js.map diff --git a/test/snapshots/code-simplification-neql-define.debug.js b/test/snapshots/code-simplification-neql-define.debug.js new file mode 100644 index 000000000..6c0e684df --- /dev/null +++ b/test/snapshots/code-simplification-neql-define.debug.js @@ -0,0 +1,29 @@ +var testFailed = false; +const invariant = () => { + testFailed = true; +}; +var $$m = (arg) => { + var module = { exports: {} }, exports = module.exports; + return arg(module, exports); +}; +export var $f332019d = $$m({ + "relay-runtime/lib/network/RelayQueryResponseCache.js": (module, exports) => { + 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); + !(ttl > 0) && invariant(false, "RelayQueryResponseCache: Expected the max ttl to be > 0, got `%s`.", ttl); + }; + foo({ size: 100, ttl: 3600 }); + }; + RelayQueryResponseCache(); + } +}["relay-runtime/lib/network/RelayQueryResponseCache.js"]); +export function test() { + var foo = () => result; + if (testFailed) + throw new Error("invariant should not be called"); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/code-simplification-neql-define.js.map diff --git a/test/snapshots/code-simplification-neql-define.hmr.debug.js b/test/snapshots/code-simplification-neql-define.hmr.debug.js new file mode 100644 index 000000000..8d4f82052 --- /dev/null +++ b/test/snapshots/code-simplification-neql-define.hmr.debug.js @@ -0,0 +1,58 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(726376257, "code-simplification-neql-define.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + var testFailed = false; + const invariant = () => { + testFailed = true; + }; + var $$m = (arg) => { + var module = { exports: {} }, exports = module.exports; + return arg(module, exports); + }; + var $f332019d = $$m({ + "relay-runtime/lib/network/RelayQueryResponseCache.js": (module, exports) => { + 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); + !(ttl > 0) && invariant(false, "RelayQueryResponseCache: Expected the max ttl to be > 0, got `%s`.", ttl); + }; + foo({ size: 100, ttl: 3600 }); + }; + RelayQueryResponseCache(); + } + }["relay-runtime/lib/network/RelayQueryResponseCache.js"]); + function test() { + var foo = () => result; + if (testFailed) + throw new Error("invariant should not be called"); + return testDone(import.meta.url); + } + hmr.exportAll({ + $f332019d: () => $f332019d, + test: () => test + }); +})(); +var $$hmr_$f332019d = hmr.exports.$f332019d, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_$f332019d = exports.$f332019d; + $$hmr_test = exports.test; +}; + +export { + $$hmr_$f332019d as $f332019d, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/code-simplification-neql-define.js.map diff --git a/test/snapshots/code-simplification-neql-define.hmr.js b/test/snapshots/code-simplification-neql-define.hmr.js new file mode 100644 index 000000000..6d521b01d --- /dev/null +++ b/test/snapshots/code-simplification-neql-define.hmr.js @@ -0,0 +1,56 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(726376257, "code-simplification-neql-define.js", FastRefresh), exports = hmr.exports; +(hmr._load = function() { + var testFailed = false; + const invariant = () => { + testFailed = true; + }; + var $$m = (arg) => { + var module = { exports: {} }, exports = module.exports; + return arg(module, exports); + }; + var $f332019d = $$m({ + "relay-runtime/lib/network/RelayQueryResponseCache.js": (module, exports) => { + 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); + !(ttl > 0) && invariant(false, "RelayQueryResponseCache: Expected the max ttl to be > 0, got `%s`.", ttl); + }; + foo({ size: 100, ttl: 3600 }); + }; + RelayQueryResponseCache(); + } + }["relay-runtime/lib/network/RelayQueryResponseCache.js"]); + function test() { + var foo = () => result; + if (testFailed) + throw new Error("invariant should not be called"); + return testDone(import.meta.url); + } + hmr.exportAll({ + $f332019d: () => $f332019d, + test: () => test + }); +})(); +var $$hmr_$f332019d = hmr.exports.$f332019d, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_$f332019d = exports.$f332019d; + $$hmr_test = exports.test; +}; + +export { + $$hmr_$f332019d as $f332019d, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/code-simplification-neql-define.js.map diff --git a/test/snapshots/code-simplification-neql-define.js b/test/snapshots/code-simplification-neql-define.js new file mode 100644 index 000000000..6c0e684df --- /dev/null +++ b/test/snapshots/code-simplification-neql-define.js @@ -0,0 +1,29 @@ +var testFailed = false; +const invariant = () => { + testFailed = true; +}; +var $$m = (arg) => { + var module = { exports: {} }, exports = module.exports; + return arg(module, exports); +}; +export var $f332019d = $$m({ + "relay-runtime/lib/network/RelayQueryResponseCache.js": (module, exports) => { + 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); + !(ttl > 0) && invariant(false, "RelayQueryResponseCache: Expected the max ttl to be > 0, got `%s`.", ttl); + }; + foo({ size: 100, ttl: 3600 }); + }; + RelayQueryResponseCache(); + } +}["relay-runtime/lib/network/RelayQueryResponseCache.js"]); +export function test() { + var foo = () => result; + if (testFailed) + throw new Error("invariant should not be called"); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/code-simplification-neql-define.js.map diff --git a/test/snapshots/custom-emotion-jsx/file.debug.jsx b/test/snapshots/custom-emotion-jsx/file.debug.jsx new file mode 100644 index 000000000..466cd4697 --- /dev/null +++ b/test/snapshots/custom-emotion-jsx/file.debug.jsx @@ -0,0 +1,25 @@ +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); +var jsx = require(JSX).jsxDEV; + +import * as $5b3cea55 from "http://localhost:8080/node_modules/react-dom/index.js"; +var ReactDOM = require($5b3cea55); +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"; + document.body.appendChild(element); + ReactDOM.render(jsx(Foo, {}, undefined, false, undefined, this), element); + const style = window.getComputedStyle(element.firstChild); + if (!(style["content"] ?? "").includes("it worked!")) + throw new Error('Expected "it worked!" but received: ' + style["content"]); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/custom-emotion-jsx/file.jsx.map diff --git a/test/snapshots/custom-emotion-jsx/file.hmr.debug.jsx b/test/snapshots/custom-emotion-jsx/file.hmr.debug.jsx new file mode 100644 index 000000000..a046f2e1c --- /dev/null +++ b/test/snapshots/custom-emotion-jsx/file.hmr.debug.jsx @@ -0,0 +1,53 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; + +(hmr._load = function() { + var Foo = () => jsx("div", { + css: { content: '"it worked!"' } + }, undefined, false, undefined, this); + function test() { + const element = document.createElement("div"); + element.id = "custom-emotion-jsx"; + document.body.appendChild(element); + ReactDOM.render(jsx(Foo, {}, undefined, false, undefined, this), element); + const style = window.getComputedStyle(element.firstChild); + if (!(style["content"] ?? "").includes("it worked!")) + throw new Error('Expected "it worked!" but received: ' + style["content"]); + return testDone(import.meta.url); + } + hmr.exportAll({ + Foo: () => Foo, + test: () => test + }); +})(); +var $$hmr_Foo = hmr.exports.Foo, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_Foo = exports.Foo; + $$hmr_test = exports.test; +}; + +export { + $$hmr_Foo as Foo, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/custom-emotion-jsx/file.jsx.map diff --git a/test/snapshots/custom-emotion-jsx/file.hmr.jsx b/test/snapshots/custom-emotion-jsx/file.hmr.jsx new file mode 100644 index 000000000..d26b0a16d --- /dev/null +++ b/test/snapshots/custom-emotion-jsx/file.hmr.jsx @@ -0,0 +1,50 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; +(hmr._load = function() { + var Foo = () => jsx("div", { + css: { content: '"it worked!"' } + }, undefined, false, undefined, this); + function test() { + const element = document.createElement("div"); + element.id = "custom-emotion-jsx"; + document.body.appendChild(element); + ReactDOM.render(jsx(Foo, {}, undefined, false, undefined, this), element); + const style = window.getComputedStyle(element.firstChild); + if (!(style["content"] ?? "").includes("it worked!")) + throw new Error('Expected "it worked!" but received: ' + style["content"]); + return testDone(import.meta.url); + } + hmr.exportAll({ + Foo: () => Foo, + test: () => test + }); +})(); +var $$hmr_Foo = hmr.exports.Foo, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_Foo = exports.Foo; + $$hmr_test = exports.test; +}; + +export { + $$hmr_Foo as Foo, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/custom-emotion-jsx/file.jsx.map diff --git a/test/snapshots/custom-emotion-jsx/file.jsx b/test/snapshots/custom-emotion-jsx/file.jsx new file mode 100644 index 000000000..466cd4697 --- /dev/null +++ b/test/snapshots/custom-emotion-jsx/file.jsx @@ -0,0 +1,25 @@ +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); +var jsx = require(JSX).jsxDEV; + +import * as $5b3cea55 from "http://localhost:8080/node_modules/react-dom/index.js"; +var ReactDOM = require($5b3cea55); +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"; + document.body.appendChild(element); + ReactDOM.render(jsx(Foo, {}, undefined, false, undefined, this), element); + const style = window.getComputedStyle(element.firstChild); + if (!(style["content"] ?? "").includes("it worked!")) + throw new Error('Expected "it worked!" but received: ' + style["content"]); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/custom-emotion-jsx/file.jsx.map diff --git a/test/snapshots/export-default-module-hot.debug.js b/test/snapshots/export-default-module-hot.debug.js new file mode 100644 index 000000000..a9de546d5 --- /dev/null +++ b/test/snapshots/export-default-module-hot.debug.js @@ -0,0 +1,6 @@ +export default typeof module !== "undefined" && module.id; +export function test() { + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/export-default-module-hot.js.map diff --git a/test/snapshots/export-default-module-hot.hmr.debug.js b/test/snapshots/export-default-module-hot.hmr.debug.js new file mode 100644 index 000000000..6230c29a1 --- /dev/null +++ b/test/snapshots/export-default-module-hot.hmr.debug.js @@ -0,0 +1,35 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(2909748314, "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() { + testDone(import.meta.url); + } + hmr.exportAll({ + default: () => export_default_module_hot_default, + test: () => test + }); +})(); +var $$hmr_default = hmr.exports.default, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_default = exports.default; + $$hmr_test = exports.test; +}; + +export { + $$hmr_default as default, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/export-default-module-hot.js.map diff --git a/test/snapshots/export-default-module-hot.hmr.js b/test/snapshots/export-default-module-hot.hmr.js new file mode 100644 index 000000000..3dadccd28 --- /dev/null +++ b/test/snapshots/export-default-module-hot.hmr.js @@ -0,0 +1,33 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(2909748314, "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() { + testDone(import.meta.url); + } + hmr.exportAll({ + default: () => export_default_module_hot_default, + test: () => test + }); +})(); +var $$hmr_default = hmr.exports.default, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_default = exports.default; + $$hmr_test = exports.test; +}; + +export { + $$hmr_default as default, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/export-default-module-hot.js.map diff --git a/test/snapshots/export-default-module-hot.js b/test/snapshots/export-default-module-hot.js new file mode 100644 index 000000000..a9de546d5 --- /dev/null +++ b/test/snapshots/export-default-module-hot.js @@ -0,0 +1,6 @@ +export default typeof module !== "undefined" && module.id; +export function test() { + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/export-default-module-hot.js.map diff --git a/test/snapshots/export.debug.js b/test/snapshots/export.debug.js new file mode 100644 index 000000000..986d3b45f --- /dev/null +++ b/test/snapshots/export.debug.js @@ -0,0 +1,32 @@ +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"; +export default function hey() { + return true; +} +export const foo = () => { +}; +export var bar = 100; +export let powerLevel = Symbol("9001"); + +export { what }; +export { what as when, what as whence }; +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(); + foo(); + if (where.default !== "hi") + throw new Error(`_auth import is incorrect.`); + console.assert(powerLevel.description === "9001", "Symbol is not exported correctly"); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/export.js.map diff --git a/test/snapshots/export.hmr.debug.js b/test/snapshots/export.hmr.debug.js new file mode 100644 index 000000000..4bcc6ef59 --- /dev/null +++ b/test/snapshots/export.hmr.debug.js @@ -0,0 +1,80 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} 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(1879780259, "export.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + var yoyoyo = "yoyoyo"; + function hey() { + return true; + } + var foo = () => { + }; + var bar = 100; + var powerLevel = Symbol("9001"); + function test() { + hey(); + foo(); + if (where.default !== "hi") + throw new Error(`_auth import is incorrect.`); + console.assert(powerLevel.description === "9001", "Symbol is not exported correctly"); + return testDone(import.meta.url); + } + hmr.exportAll({ + yoyoyo: () => yoyoyo, + default: () => hey, + foo: () => foo, + bar: () => bar, + powerLevel: () => powerLevel, + what: () => what, + when: () => what, + whence: () => what, + where: () => where, + booop: () => bar, + test: () => test + }); +})(); +var $$hmr_yoyoyo = hmr.exports.yoyoyo, $$hmr_default = hmr.exports.default, $$hmr_foo = hmr.exports.foo, $$hmr_bar = hmr.exports.bar, $$hmr_powerLevel = hmr.exports.powerLevel, $$hmr_what = hmr.exports.what, $$hmr_when = hmr.exports.when, $$hmr_whence = hmr.exports.whence, $$hmr_where = hmr.exports.where, $$hmr_booop = hmr.exports.booop, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_yoyoyo = exports.yoyoyo; + $$hmr_default = exports.default; + $$hmr_foo = exports.foo; + $$hmr_bar = exports.bar; + $$hmr_powerLevel = exports.powerLevel; + $$hmr_what = exports.what; + $$hmr_when = exports.when; + $$hmr_whence = exports.whence; + $$hmr_where = exports.where; + $$hmr_booop = exports.booop; + $$hmr_test = exports.test; +}; + +export { + $$hmr_yoyoyo as yoyoyo, + $$hmr_default as default, + $$hmr_foo as foo, + $$hmr_bar as bar, + $$hmr_powerLevel as powerLevel, + $$hmr_what as what, + $$hmr_when as when, + $$hmr_whence as whence, + $$hmr_where as where, + $$hmr_booop as booop, + $$hmr_test as test +}; +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:8080/export.js.map diff --git a/test/snapshots/export.hmr.js b/test/snapshots/export.hmr.js new file mode 100644 index 000000000..73d6db2d4 --- /dev/null +++ b/test/snapshots/export.hmr.js @@ -0,0 +1,78 @@ +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:3000/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; +(hmr._load = function() { + var yoyoyo = "yoyoyo"; + function hey() { + return true; + } + var foo = () => { + }; + var bar = 100; + var powerLevel = Symbol("9001"); + function test() { + hey(); + foo(); + if (where.default !== "hi") + throw new Error(`_auth import is incorrect.`); + console.assert(powerLevel.description === "9001", "Symbol is not exported correctly"); + return testDone(import.meta.url); + } + hmr.exportAll({ + yoyoyo: () => yoyoyo, + default: () => hey, + foo: () => foo, + bar: () => bar, + powerLevel: () => powerLevel, + what: () => what, + when: () => what, + whence: () => what, + where: () => where, + booop: () => bar, + test: () => test + }); +})(); +var $$hmr_yoyoyo = hmr.exports.yoyoyo, $$hmr_default = hmr.exports.default, $$hmr_foo = hmr.exports.foo, $$hmr_bar = hmr.exports.bar, $$hmr_powerLevel = hmr.exports.powerLevel, $$hmr_what = hmr.exports.what, $$hmr_when = hmr.exports.when, $$hmr_whence = hmr.exports.whence, $$hmr_where = hmr.exports.where, $$hmr_booop = hmr.exports.booop, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_yoyoyo = exports.yoyoyo; + $$hmr_default = exports.default; + $$hmr_foo = exports.foo; + $$hmr_bar = exports.bar; + $$hmr_powerLevel = exports.powerLevel; + $$hmr_what = exports.what; + $$hmr_when = exports.when; + $$hmr_whence = exports.whence; + $$hmr_where = exports.where; + $$hmr_booop = exports.booop; + $$hmr_test = exports.test; +}; + +export { + $$hmr_yoyoyo as yoyoyo, + $$hmr_default as default, + $$hmr_foo as foo, + $$hmr_bar as bar, + $$hmr_powerLevel as powerLevel, + $$hmr_what as what, + $$hmr_when as when, + $$hmr_whence as whence, + $$hmr_where as where, + $$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"; + +//# sourceMappingURL=http://localhost:3000/export.js.map diff --git a/test/snapshots/export.js b/test/snapshots/export.js new file mode 100644 index 000000000..986d3b45f --- /dev/null +++ b/test/snapshots/export.js @@ -0,0 +1,32 @@ +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"; +export default function hey() { + return true; +} +export const foo = () => { +}; +export var bar = 100; +export let powerLevel = Symbol("9001"); + +export { what }; +export { what as when, what as whence }; +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(); + foo(); + if (where.default !== "hi") + throw new Error(`_auth import is incorrect.`); + console.assert(powerLevel.description === "9001", "Symbol is not exported correctly"); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/export.js.map diff --git a/test/snapshots/forbid-in-is-correct.debug.js b/test/snapshots/forbid-in-is-correct.debug.js new file mode 100644 index 000000000..dfca92d80 --- /dev/null +++ b/test/snapshots/forbid-in-is-correct.debug.js @@ -0,0 +1,10 @@ +var foo = () => { + var D = (i, r) => () => (r || i((r = { exports: {} }).exports, r), r.exports); + return D; +}; +export function test() { + foo(); + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/forbid-in-is-correct.js.map diff --git a/test/snapshots/forbid-in-is-correct.hmr.debug.js b/test/snapshots/forbid-in-is-correct.hmr.debug.js new file mode 100644 index 000000000..83a447fc4 --- /dev/null +++ b/test/snapshots/forbid-in-is-correct.hmr.debug.js @@ -0,0 +1,36 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(346837007, "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); + return D; + }; + function test() { + foo(); + testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/forbid-in-is-correct.js.map diff --git a/test/snapshots/forbid-in-is-correct.hmr.js b/test/snapshots/forbid-in-is-correct.hmr.js new file mode 100644 index 000000000..ae3714d04 --- /dev/null +++ b/test/snapshots/forbid-in-is-correct.hmr.js @@ -0,0 +1,34 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(346837007, "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); + return D; + }; + function test() { + foo(); + testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/forbid-in-is-correct.js.map diff --git a/test/snapshots/forbid-in-is-correct.js b/test/snapshots/forbid-in-is-correct.js new file mode 100644 index 000000000..dfca92d80 --- /dev/null +++ b/test/snapshots/forbid-in-is-correct.js @@ -0,0 +1,10 @@ +var foo = () => { + var D = (i, r) => () => (r || i((r = { exports: {} }).exports, r), r.exports); + return D; +}; +export function test() { + foo(); + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/forbid-in-is-correct.js.map diff --git a/test/snapshots/global-is-remapped-to-globalThis.debug.js b/test/snapshots/global-is-remapped-to-globalThis.debug.js new file mode 100644 index 000000000..6cd8e2e22 --- /dev/null +++ b/test/snapshots/global-is-remapped-to-globalThis.debug.js @@ -0,0 +1,6 @@ +export function test() { + console.assert(globalThis === globalThis); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/global-is-remapped-to-globalThis.js.map diff --git a/test/snapshots/global-is-remapped-to-globalThis.hmr.debug.js b/test/snapshots/global-is-remapped-to-globalThis.hmr.debug.js new file mode 100644 index 000000000..1f6619161 --- /dev/null +++ b/test/snapshots/global-is-remapped-to-globalThis.hmr.debug.js @@ -0,0 +1,32 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(713665787, "global-is-remapped-to-globalThis.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + function test() { + console.assert(globalThis === globalThis); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/global-is-remapped-to-globalThis.js.map diff --git a/test/snapshots/global-is-remapped-to-globalThis.hmr.js b/test/snapshots/global-is-remapped-to-globalThis.hmr.js new file mode 100644 index 000000000..a0e28b60a --- /dev/null +++ b/test/snapshots/global-is-remapped-to-globalThis.hmr.js @@ -0,0 +1,30 @@ +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:3000/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; +(hmr._load = function() { + function test() { + console.assert(globalThis === globalThis); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:3000/global-is-remapped-to-globalThis.js.map diff --git a/test/snapshots/global-is-remapped-to-globalThis.js b/test/snapshots/global-is-remapped-to-globalThis.js new file mode 100644 index 000000000..6cd8e2e22 --- /dev/null +++ b/test/snapshots/global-is-remapped-to-globalThis.js @@ -0,0 +1,6 @@ +export function test() { + console.assert(globalThis === globalThis); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/global-is-remapped-to-globalThis.js.map diff --git a/test/snapshots/jsx-entities.debug.jsx b/test/snapshots/jsx-entities.debug.jsx new file mode 100644 index 000000000..9fd075bc6 --- /dev/null +++ b/test/snapshots/jsx-entities.debug.jsx @@ -0,0 +1,2768 @@ +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); +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); +const elements = { + [ReactDOM.renderToString(jsx(JSXFrag, { + children: '"' + }, undefined, false, undefined, this))]: 34, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "&" + }, undefined, false, undefined, this))]: 38, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "'" + }, undefined, false, undefined, this))]: 39, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "<" + }, undefined, false, undefined, this))]: 60, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ">" + }, undefined, false, undefined, this))]: 62, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA0" + }, undefined, false, undefined, this))]: 160, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA1" + }, undefined, false, undefined, this))]: 161, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA2" + }, undefined, false, undefined, this))]: 162, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA3" + }, undefined, false, undefined, this))]: 163, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA4" + }, undefined, false, undefined, this))]: 164, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA5" + }, undefined, false, undefined, this))]: 165, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA6" + }, undefined, false, undefined, this))]: 166, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA7" + }, undefined, false, undefined, this))]: 167, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA8" + }, undefined, false, undefined, this))]: 168, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA9" + }, undefined, false, undefined, this))]: 169, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAA" + }, undefined, false, undefined, this))]: 170, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAB" + }, undefined, false, undefined, this))]: 171, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAC" + }, undefined, false, undefined, this))]: 172, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAD" + }, undefined, false, undefined, this))]: 173, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAE" + }, undefined, false, undefined, this))]: 174, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAF" + }, undefined, false, undefined, this))]: 175, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB0" + }, undefined, false, undefined, this))]: 176, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB1" + }, undefined, false, undefined, this))]: 177, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB2" + }, undefined, false, undefined, this))]: 178, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB3" + }, undefined, false, undefined, this))]: 179, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB4" + }, undefined, false, undefined, this))]: 180, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB5" + }, undefined, false, undefined, this))]: 181, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB6" + }, undefined, false, undefined, this))]: 182, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB7" + }, undefined, false, undefined, this))]: 183, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB8" + }, undefined, false, undefined, this))]: 184, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB9" + }, undefined, false, undefined, this))]: 185, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBA" + }, undefined, false, undefined, this))]: 186, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBB" + }, undefined, false, undefined, this))]: 187, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBC" + }, undefined, false, undefined, this))]: 188, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBD" + }, undefined, false, undefined, this))]: 189, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBE" + }, undefined, false, undefined, this))]: 190, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBF" + }, undefined, false, undefined, this))]: 191, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC0" + }, undefined, false, undefined, this))]: 192, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC1" + }, undefined, false, undefined, this))]: 193, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC2" + }, undefined, false, undefined, this))]: 194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC3" + }, undefined, false, undefined, this))]: 195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC4" + }, undefined, false, undefined, this))]: 196, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC5" + }, undefined, false, undefined, this))]: 197, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC6" + }, undefined, false, undefined, this))]: 198, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC7" + }, undefined, false, undefined, this))]: 199, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC8" + }, undefined, false, undefined, this))]: 200, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC9" + }, undefined, false, undefined, this))]: 201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCA" + }, undefined, false, undefined, this))]: 202, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCB" + }, undefined, false, undefined, this))]: 203, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCC" + }, undefined, false, undefined, this))]: 204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCD" + }, undefined, false, undefined, this))]: 205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCE" + }, undefined, false, undefined, this))]: 206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCF" + }, undefined, false, undefined, this))]: 207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD0" + }, undefined, false, undefined, this))]: 208, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD1" + }, undefined, false, undefined, this))]: 209, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD2" + }, undefined, false, undefined, this))]: 210, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD3" + }, undefined, false, undefined, this))]: 211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD4" + }, undefined, false, undefined, this))]: 212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD5" + }, undefined, false, undefined, this))]: 213, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD6" + }, undefined, false, undefined, this))]: 214, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD7" + }, undefined, false, undefined, this))]: 215, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD8" + }, undefined, false, undefined, this))]: 216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD9" + }, undefined, false, undefined, this))]: 217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDA" + }, undefined, false, undefined, this))]: 218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDB" + }, undefined, false, undefined, this))]: 219, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDC" + }, undefined, false, undefined, this))]: 220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDD" + }, undefined, false, undefined, this))]: 221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDE" + }, undefined, false, undefined, this))]: 222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDF" + }, undefined, false, undefined, this))]: 223, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE0" + }, undefined, false, undefined, this))]: 224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE1" + }, undefined, false, undefined, this))]: 225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE2" + }, undefined, false, undefined, this))]: 226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE3" + }, undefined, false, undefined, this))]: 227, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE4" + }, undefined, false, undefined, this))]: 228, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE5" + }, undefined, false, undefined, this))]: 229, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE6" + }, undefined, false, undefined, this))]: 230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE7" + }, undefined, false, undefined, this))]: 231, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE8" + }, undefined, false, undefined, this))]: 232, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE9" + }, undefined, false, undefined, this))]: 233, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEA" + }, undefined, false, undefined, this))]: 234, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEB" + }, undefined, false, undefined, this))]: 235, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEC" + }, undefined, false, undefined, this))]: 236, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xED" + }, undefined, false, undefined, this))]: 237, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEE" + }, undefined, false, undefined, this))]: 238, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEF" + }, undefined, false, undefined, this))]: 239, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF0" + }, undefined, false, undefined, this))]: 240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF1" + }, undefined, false, undefined, this))]: 241, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF2" + }, undefined, false, undefined, this))]: 242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF3" + }, undefined, false, undefined, this))]: 243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF4" + }, undefined, false, undefined, this))]: 244, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF5" + }, undefined, false, undefined, this))]: 245, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF6" + }, undefined, false, undefined, this))]: 246, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF7" + }, undefined, false, undefined, this))]: 247, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF8" + }, undefined, false, undefined, this))]: 248, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF9" + }, undefined, false, undefined, this))]: 249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFA" + }, undefined, false, undefined, this))]: 250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFB" + }, undefined, false, undefined, this))]: 251, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFC" + }, undefined, false, undefined, this))]: 252, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFD" + }, undefined, false, undefined, this))]: 253, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFE" + }, undefined, false, undefined, this))]: 254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFF" + }, undefined, false, undefined, this))]: 255, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0152" + }, undefined, false, undefined, this))]: 338, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0153" + }, undefined, false, undefined, this))]: 339, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0160" + }, undefined, false, undefined, this))]: 352, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0161" + }, undefined, false, undefined, this))]: 353, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0178" + }, undefined, false, undefined, this))]: 376, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0192" + }, undefined, false, undefined, this))]: 402, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u02C6" + }, undefined, false, undefined, this))]: 710, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u02DC" + }, undefined, false, undefined, this))]: 732, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0391" + }, undefined, false, undefined, this))]: 913, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0392" + }, undefined, false, undefined, this))]: 914, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0393" + }, undefined, false, undefined, this))]: 915, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0394" + }, undefined, false, undefined, this))]: 916, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0395" + }, undefined, false, undefined, this))]: 917, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0396" + }, undefined, false, undefined, this))]: 918, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0397" + }, undefined, false, undefined, this))]: 919, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0398" + }, undefined, false, undefined, this))]: 920, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0399" + }, undefined, false, undefined, this))]: 921, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039A" + }, undefined, false, undefined, this))]: 922, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039B" + }, undefined, false, undefined, this))]: 923, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039C" + }, undefined, false, undefined, this))]: 924, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039D" + }, undefined, false, undefined, this))]: 925, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039E" + }, undefined, false, undefined, this))]: 926, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039F" + }, undefined, false, undefined, this))]: 927, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A0" + }, undefined, false, undefined, this))]: 928, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A1" + }, undefined, false, undefined, this))]: 929, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A3" + }, undefined, false, undefined, this))]: 931, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A4" + }, undefined, false, undefined, this))]: 932, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A5" + }, undefined, false, undefined, this))]: 933, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A6" + }, undefined, false, undefined, this))]: 934, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A7" + }, undefined, false, undefined, this))]: 935, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A8" + }, undefined, false, undefined, this))]: 936, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A9" + }, undefined, false, undefined, this))]: 937, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B1" + }, undefined, false, undefined, this))]: 945, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B2" + }, undefined, false, undefined, this))]: 946, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B3" + }, undefined, false, undefined, this))]: 947, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B4" + }, undefined, false, undefined, this))]: 948, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B5" + }, undefined, false, undefined, this))]: 949, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B6" + }, undefined, false, undefined, this))]: 950, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B7" + }, undefined, false, undefined, this))]: 951, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B8" + }, undefined, false, undefined, this))]: 952, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B9" + }, undefined, false, undefined, this))]: 953, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BA" + }, undefined, false, undefined, this))]: 954, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BB" + }, undefined, false, undefined, this))]: 955, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BC" + }, undefined, false, undefined, this))]: 956, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BD" + }, undefined, false, undefined, this))]: 957, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BE" + }, undefined, false, undefined, this))]: 958, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BF" + }, undefined, false, undefined, this))]: 959, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C0" + }, undefined, false, undefined, this))]: 960, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C1" + }, undefined, false, undefined, this))]: 961, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C2" + }, undefined, false, undefined, this))]: 962, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C3" + }, undefined, false, undefined, this))]: 963, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C4" + }, undefined, false, undefined, this))]: 964, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C5" + }, undefined, false, undefined, this))]: 965, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C6" + }, undefined, false, undefined, this))]: 966, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C7" + }, undefined, false, undefined, this))]: 967, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C8" + }, undefined, false, undefined, this))]: 968, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C9" + }, undefined, false, undefined, this))]: 969, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D1" + }, undefined, false, undefined, this))]: 977, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D2" + }, undefined, false, undefined, this))]: 978, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D6" + }, undefined, false, undefined, this))]: 982, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2002" + }, undefined, false, undefined, this))]: 8194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2003" + }, undefined, false, undefined, this))]: 8195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2009" + }, undefined, false, undefined, this))]: 8201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200C" + }, undefined, false, undefined, this))]: 8204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200D" + }, undefined, false, undefined, this))]: 8205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200E" + }, undefined, false, undefined, this))]: 8206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200F" + }, undefined, false, undefined, this))]: 8207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2013" + }, undefined, false, undefined, this))]: 8211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2014" + }, undefined, false, undefined, this))]: 8212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2018" + }, undefined, false, undefined, this))]: 8216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2019" + }, undefined, false, undefined, this))]: 8217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201A" + }, undefined, false, undefined, this))]: 8218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201C" + }, undefined, false, undefined, this))]: 8220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201D" + }, undefined, false, undefined, this))]: 8221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201E" + }, undefined, false, undefined, this))]: 8222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2020" + }, undefined, false, undefined, this))]: 8224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2021" + }, undefined, false, undefined, this))]: 8225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2022" + }, undefined, false, undefined, this))]: 8226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2026" + }, undefined, false, undefined, this))]: 8230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2030" + }, undefined, false, undefined, this))]: 8240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2032" + }, undefined, false, undefined, this))]: 8242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2033" + }, undefined, false, undefined, this))]: 8243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2039" + }, undefined, false, undefined, this))]: 8249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u203A" + }, undefined, false, undefined, this))]: 8250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u203E" + }, undefined, false, undefined, this))]: 8254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2044" + }, undefined, false, undefined, this))]: 8260, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u20AC" + }, undefined, false, undefined, this))]: 8364, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2111" + }, undefined, false, undefined, this))]: 8465, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2118" + }, undefined, false, undefined, this))]: 8472, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u211C" + }, undefined, false, undefined, this))]: 8476, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2122" + }, undefined, false, undefined, this))]: 8482, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2135" + }, undefined, false, undefined, this))]: 8501, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2190" + }, undefined, false, undefined, this))]: 8592, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2191" + }, undefined, false, undefined, this))]: 8593, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2192" + }, undefined, false, undefined, this))]: 8594, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2193" + }, undefined, false, undefined, this))]: 8595, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2194" + }, undefined, false, undefined, this))]: 8596, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21B5" + }, undefined, false, undefined, this))]: 8629, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D0" + }, undefined, false, undefined, this))]: 8656, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D1" + }, undefined, false, undefined, this))]: 8657, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D2" + }, undefined, false, undefined, this))]: 8658, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D3" + }, undefined, false, undefined, this))]: 8659, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D4" + }, undefined, false, undefined, this))]: 8660, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2200" + }, undefined, false, undefined, this))]: 8704, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2202" + }, undefined, false, undefined, this))]: 8706, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2203" + }, undefined, false, undefined, this))]: 8707, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2205" + }, undefined, false, undefined, this))]: 8709, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2207" + }, undefined, false, undefined, this))]: 8711, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2208" + }, undefined, false, undefined, this))]: 8712, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2209" + }, undefined, false, undefined, this))]: 8713, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u220B" + }, undefined, false, undefined, this))]: 8715, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u220F" + }, undefined, false, undefined, this))]: 8719, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2211" + }, undefined, false, undefined, this))]: 8721, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2212" + }, undefined, false, undefined, this))]: 8722, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2217" + }, undefined, false, undefined, this))]: 8727, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221A" + }, undefined, false, undefined, this))]: 8730, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221D" + }, undefined, false, undefined, this))]: 8733, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221E" + }, undefined, false, undefined, this))]: 8734, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2220" + }, undefined, false, undefined, this))]: 8736, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2227" + }, undefined, false, undefined, this))]: 8743, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2228" + }, undefined, false, undefined, this))]: 8744, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2229" + }, undefined, false, undefined, this))]: 8745, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u222A" + }, undefined, false, undefined, this))]: 8746, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u222B" + }, undefined, false, undefined, this))]: 8747, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2234" + }, undefined, false, undefined, this))]: 8756, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u223C" + }, undefined, false, undefined, this))]: 8764, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2245" + }, undefined, false, undefined, this))]: 8773, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2248" + }, undefined, false, undefined, this))]: 8776, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2260" + }, undefined, false, undefined, this))]: 8800, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2261" + }, undefined, false, undefined, this))]: 8801, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2264" + }, undefined, false, undefined, this))]: 8804, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2265" + }, undefined, false, undefined, this))]: 8805, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2282" + }, undefined, false, undefined, this))]: 8834, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2283" + }, undefined, false, undefined, this))]: 8835, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2284" + }, undefined, false, undefined, this))]: 8836, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2286" + }, undefined, false, undefined, this))]: 8838, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2287" + }, undefined, false, undefined, this))]: 8839, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2295" + }, undefined, false, undefined, this))]: 8853, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2297" + }, undefined, false, undefined, this))]: 8855, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u22A5" + }, undefined, false, undefined, this))]: 8869, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u22C5" + }, undefined, false, undefined, this))]: 8901, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2308" + }, undefined, false, undefined, this))]: 8968, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2309" + }, undefined, false, undefined, this))]: 8969, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u230A" + }, undefined, false, undefined, this))]: 8970, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u230B" + }, undefined, false, undefined, this))]: 8971, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2329" + }, undefined, false, undefined, this))]: 9001, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u232A" + }, undefined, false, undefined, this))]: 9002, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u25CA" + }, undefined, false, undefined, this))]: 9674, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2660" + }, undefined, false, undefined, this))]: 9824, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2663" + }, undefined, false, undefined, this))]: 9827, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2665" + }, undefined, false, undefined, this))]: 9829, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2666" + }, undefined, false, undefined, this))]: 9830, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x01" + }, undefined, false, undefined, this))]: 1, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x02" + }, undefined, false, undefined, this))]: 2, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x03" + }, undefined, false, undefined, this))]: 3, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x04" + }, undefined, false, undefined, this))]: 4, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x05" + }, undefined, false, undefined, this))]: 5, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x06" + }, undefined, false, undefined, this))]: 6, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x07" + }, undefined, false, undefined, this))]: 7, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\f" + }, undefined, false, undefined, this))]: 8, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\t" + }, undefined, false, undefined, this))]: 9, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ` +` + }, undefined, false, undefined, this))]: 10, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\v" + }, undefined, false, undefined, this))]: 11, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\f" + }, undefined, false, undefined, this))]: 12, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: `\r` + }, undefined, false, undefined, this))]: 13, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x0E" + }, undefined, false, undefined, this))]: 14, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x0F" + }, undefined, false, undefined, this))]: 15, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x10" + }, undefined, false, undefined, this))]: 16, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x11" + }, undefined, false, undefined, this))]: 17, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x12" + }, undefined, false, undefined, this))]: 18, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x13" + }, undefined, false, undefined, this))]: 19, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x14" + }, undefined, false, undefined, this))]: 20, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x15" + }, undefined, false, undefined, this))]: 21, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x16" + }, undefined, false, undefined, this))]: 22, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x17" + }, undefined, false, undefined, this))]: 23, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x18" + }, undefined, false, undefined, this))]: 24, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x19" + }, undefined, false, undefined, this))]: 25, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1A" + }, undefined, false, undefined, this))]: 26, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1B" + }, undefined, false, undefined, this))]: 27, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1C" + }, undefined, false, undefined, this))]: 28, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1D" + }, undefined, false, undefined, this))]: 29, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1E" + }, undefined, false, undefined, this))]: 30, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1F" + }, undefined, false, undefined, this))]: 31, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: " " + }, undefined, false, undefined, this))]: 32, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "!" + }, undefined, false, undefined, this))]: 33, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: '"' + }, undefined, false, undefined, this))]: 34, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "#" + }, undefined, false, undefined, this))]: 35, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "$" + }, undefined, false, undefined, this))]: 36, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "%" + }, undefined, false, undefined, this))]: 37, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "&" + }, undefined, false, undefined, this))]: 38, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "'" + }, undefined, false, undefined, this))]: 39, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "(" + }, undefined, false, undefined, this))]: 40, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ")" + }, undefined, false, undefined, this))]: 41, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "*" + }, undefined, false, undefined, this))]: 42, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "+" + }, undefined, false, undefined, this))]: 43, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "," + }, undefined, false, undefined, this))]: 44, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "-" + }, undefined, false, undefined, this))]: 45, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "." + }, undefined, false, undefined, this))]: 46, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "/" + }, undefined, false, undefined, this))]: 47, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "0" + }, undefined, false, undefined, this))]: 48, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "1" + }, undefined, false, undefined, this))]: 49, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "2" + }, undefined, false, undefined, this))]: 50, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "3" + }, undefined, false, undefined, this))]: 51, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "4" + }, undefined, false, undefined, this))]: 52, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "5" + }, undefined, false, undefined, this))]: 53, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "6" + }, undefined, false, undefined, this))]: 54, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "7" + }, undefined, false, undefined, this))]: 55, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "8" + }, undefined, false, undefined, this))]: 56, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "9" + }, undefined, false, undefined, this))]: 57, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ":" + }, undefined, false, undefined, this))]: 58, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ";" + }, undefined, false, undefined, this))]: 59, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "<" + }, undefined, false, undefined, this))]: 60, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "=" + }, undefined, false, undefined, this))]: 61, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ">" + }, undefined, false, undefined, this))]: 62, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "?" + }, undefined, false, undefined, this))]: 63, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "@" + }, undefined, false, undefined, this))]: 64, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "A" + }, undefined, false, undefined, this))]: 65, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "B" + }, undefined, false, undefined, this))]: 66, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "C" + }, undefined, false, undefined, this))]: 67, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "D" + }, undefined, false, undefined, this))]: 68, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "E" + }, undefined, false, undefined, this))]: 69, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "F" + }, undefined, false, undefined, this))]: 70, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "G" + }, undefined, false, undefined, this))]: 71, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "H" + }, undefined, false, undefined, this))]: 72, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "I" + }, undefined, false, undefined, this))]: 73, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "J" + }, undefined, false, undefined, this))]: 74, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "K" + }, undefined, false, undefined, this))]: 75, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "L" + }, undefined, false, undefined, this))]: 76, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "M" + }, undefined, false, undefined, this))]: 77, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "N" + }, undefined, false, undefined, this))]: 78, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "O" + }, undefined, false, undefined, this))]: 79, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "P" + }, undefined, false, undefined, this))]: 80, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Q" + }, undefined, false, undefined, this))]: 81, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "R" + }, undefined, false, undefined, this))]: 82, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "S" + }, undefined, false, undefined, this))]: 83, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "T" + }, undefined, false, undefined, this))]: 84, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "U" + }, undefined, false, undefined, this))]: 85, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "V" + }, undefined, false, undefined, this))]: 86, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "W" + }, undefined, false, undefined, this))]: 87, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "X" + }, undefined, false, undefined, this))]: 88, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Y" + }, undefined, false, undefined, this))]: 89, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Z" + }, undefined, false, undefined, this))]: 90, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "[" + }, undefined, false, undefined, this))]: 91, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\\" + }, undefined, false, undefined, this))]: 92, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "]" + }, undefined, false, undefined, this))]: 93, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "^" + }, undefined, false, undefined, this))]: 94, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "_" + }, undefined, false, undefined, this))]: 95, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "`" + }, undefined, false, undefined, this))]: 96, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "a" + }, undefined, false, undefined, this))]: 97, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "b" + }, undefined, false, undefined, this))]: 98, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "c" + }, undefined, false, undefined, this))]: 99, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "d" + }, undefined, false, undefined, this))]: 100, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "e" + }, undefined, false, undefined, this))]: 101, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "f" + }, undefined, false, undefined, this))]: 102, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "g" + }, undefined, false, undefined, this))]: 103, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "h" + }, undefined, false, undefined, this))]: 104, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "i" + }, undefined, false, undefined, this))]: 105, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "j" + }, undefined, false, undefined, this))]: 106, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "k" + }, undefined, false, undefined, this))]: 107, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "l" + }, undefined, false, undefined, this))]: 108, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "m" + }, undefined, false, undefined, this))]: 109, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "n" + }, undefined, false, undefined, this))]: 110, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "o" + }, undefined, false, undefined, this))]: 111, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "p" + }, undefined, false, undefined, this))]: 112, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "q" + }, undefined, false, undefined, this))]: 113, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "r" + }, undefined, false, undefined, this))]: 114, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "s" + }, undefined, false, undefined, this))]: 115, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "t" + }, undefined, false, undefined, this))]: 116, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "u" + }, undefined, false, undefined, this))]: 117, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "v" + }, undefined, false, undefined, this))]: 118, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "w" + }, undefined, false, undefined, this))]: 119, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "x" + }, undefined, false, undefined, this))]: 120, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "y" + }, undefined, false, undefined, this))]: 121, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "z" + }, undefined, false, undefined, this))]: 122, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "{" + }, undefined, false, undefined, this))]: 123, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "|" + }, undefined, false, undefined, this))]: 124, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "}" + }, undefined, false, undefined, this))]: 125, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "~" + }, undefined, false, undefined, this))]: 126, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x7F" + }, undefined, false, undefined, this))]: 127, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x80" + }, undefined, false, undefined, this))]: 128, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x81" + }, undefined, false, undefined, this))]: 129, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x82" + }, undefined, false, undefined, this))]: 130, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x83" + }, undefined, false, undefined, this))]: 131, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x84" + }, undefined, false, undefined, this))]: 132, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x85" + }, undefined, false, undefined, this))]: 133, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x86" + }, undefined, false, undefined, this))]: 134, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x87" + }, undefined, false, undefined, this))]: 135, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x88" + }, undefined, false, undefined, this))]: 136, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x89" + }, undefined, false, undefined, this))]: 137, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8A" + }, undefined, false, undefined, this))]: 138, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8B" + }, undefined, false, undefined, this))]: 139, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8C" + }, undefined, false, undefined, this))]: 140, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8D" + }, undefined, false, undefined, this))]: 141, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8E" + }, undefined, false, undefined, this))]: 142, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8F" + }, undefined, false, undefined, this))]: 143, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x90" + }, undefined, false, undefined, this))]: 144, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x91" + }, undefined, false, undefined, this))]: 145, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x92" + }, undefined, false, undefined, this))]: 146, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x93" + }, undefined, false, undefined, this))]: 147, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x94" + }, undefined, false, undefined, this))]: 148, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x95" + }, undefined, false, undefined, this))]: 149, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x96" + }, undefined, false, undefined, this))]: 150, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x97" + }, undefined, false, undefined, this))]: 151, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x98" + }, undefined, false, undefined, this))]: 152, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x99" + }, undefined, false, undefined, this))]: 153, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9A" + }, undefined, false, undefined, this))]: 154, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9B" + }, undefined, false, undefined, this))]: 155, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9C" + }, undefined, false, undefined, this))]: 156, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9D" + }, undefined, false, undefined, this))]: 157, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9E" + }, undefined, false, undefined, this))]: 158, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9F" + }, undefined, false, undefined, this))]: 159, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA0" + }, undefined, false, undefined, this))]: 160, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA1" + }, undefined, false, undefined, this))]: 161, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA2" + }, undefined, false, undefined, this))]: 162, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA3" + }, undefined, false, undefined, this))]: 163, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA4" + }, undefined, false, undefined, this))]: 164, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA5" + }, undefined, false, undefined, this))]: 165, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA6" + }, undefined, false, undefined, this))]: 166, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA7" + }, undefined, false, undefined, this))]: 167, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA8" + }, undefined, false, undefined, this))]: 168, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA9" + }, undefined, false, undefined, this))]: 169, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAA" + }, undefined, false, undefined, this))]: 170, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAB" + }, undefined, false, undefined, this))]: 171, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAC" + }, undefined, false, undefined, this))]: 172, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAD" + }, undefined, false, undefined, this))]: 173, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAE" + }, undefined, false, undefined, this))]: 174, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAF" + }, undefined, false, undefined, this))]: 175, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB0" + }, undefined, false, undefined, this))]: 176, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB1" + }, undefined, false, undefined, this))]: 177, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB2" + }, undefined, false, undefined, this))]: 178, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB3" + }, undefined, false, undefined, this))]: 179, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB4" + }, undefined, false, undefined, this))]: 180, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB5" + }, undefined, false, undefined, this))]: 181, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB6" + }, undefined, false, undefined, this))]: 182, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB7" + }, undefined, false, undefined, this))]: 183, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB8" + }, undefined, false, undefined, this))]: 184, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB9" + }, undefined, false, undefined, this))]: 185, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBA" + }, undefined, false, undefined, this))]: 186, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBB" + }, undefined, false, undefined, this))]: 187, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBC" + }, undefined, false, undefined, this))]: 188, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBD" + }, undefined, false, undefined, this))]: 189, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBE" + }, undefined, false, undefined, this))]: 190, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBF" + }, undefined, false, undefined, this))]: 191, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC0" + }, undefined, false, undefined, this))]: 192, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC1" + }, undefined, false, undefined, this))]: 193, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC2" + }, undefined, false, undefined, this))]: 194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC3" + }, undefined, false, undefined, this))]: 195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC4" + }, undefined, false, undefined, this))]: 196, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC5" + }, undefined, false, undefined, this))]: 197, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC6" + }, undefined, false, undefined, this))]: 198, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC7" + }, undefined, false, undefined, this))]: 199, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC8" + }, undefined, false, undefined, this))]: 200, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC9" + }, undefined, false, undefined, this))]: 201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCA" + }, undefined, false, undefined, this))]: 202, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCB" + }, undefined, false, undefined, this))]: 203, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCC" + }, undefined, false, undefined, this))]: 204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCD" + }, undefined, false, undefined, this))]: 205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCE" + }, undefined, false, undefined, this))]: 206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCF" + }, undefined, false, undefined, this))]: 207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD0" + }, undefined, false, undefined, this))]: 208, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD1" + }, undefined, false, undefined, this))]: 209, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD2" + }, undefined, false, undefined, this))]: 210, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD3" + }, undefined, false, undefined, this))]: 211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD4" + }, undefined, false, undefined, this))]: 212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD5" + }, undefined, false, undefined, this))]: 213, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD6" + }, undefined, false, undefined, this))]: 214, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD7" + }, undefined, false, undefined, this))]: 215, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD8" + }, undefined, false, undefined, this))]: 216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD9" + }, undefined, false, undefined, this))]: 217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDA" + }, undefined, false, undefined, this))]: 218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDB" + }, undefined, false, undefined, this))]: 219, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDC" + }, undefined, false, undefined, this))]: 220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDD" + }, undefined, false, undefined, this))]: 221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDE" + }, undefined, false, undefined, this))]: 222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDF" + }, undefined, false, undefined, this))]: 223, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE0" + }, undefined, false, undefined, this))]: 224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE1" + }, undefined, false, undefined, this))]: 225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE2" + }, undefined, false, undefined, this))]: 226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE3" + }, undefined, false, undefined, this))]: 227, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE4" + }, undefined, false, undefined, this))]: 228, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE5" + }, undefined, false, undefined, this))]: 229, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE6" + }, undefined, false, undefined, this))]: 230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE7" + }, undefined, false, undefined, this))]: 231, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE8" + }, undefined, false, undefined, this))]: 232, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE9" + }, undefined, false, undefined, this))]: 233, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEA" + }, undefined, false, undefined, this))]: 234, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEB" + }, undefined, false, undefined, this))]: 235, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEC" + }, undefined, false, undefined, this))]: 236, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xED" + }, undefined, false, undefined, this))]: 237, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEE" + }, undefined, false, undefined, this))]: 238, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEF" + }, undefined, false, undefined, this))]: 239, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF0" + }, undefined, false, undefined, this))]: 240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF1" + }, undefined, false, undefined, this))]: 241, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF2" + }, undefined, false, undefined, this))]: 242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF3" + }, undefined, false, undefined, this))]: 243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF4" + }, undefined, false, undefined, this))]: 244, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF5" + }, undefined, false, undefined, this))]: 245, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF6" + }, undefined, false, undefined, this))]: 246, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF7" + }, undefined, false, undefined, this))]: 247, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF8" + }, undefined, false, undefined, this))]: 248, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF9" + }, undefined, false, undefined, this))]: 249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFA" + }, undefined, false, undefined, this))]: 250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFB" + }, undefined, false, undefined, this))]: 251, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFC" + }, undefined, false, undefined, this))]: 252, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFD" + }, undefined, false, undefined, this))]: 253, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFE" + }, undefined, false, undefined, this))]: 254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFF" + }, undefined, false, undefined, this))]: 255, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0100" + }, undefined, false, undefined, this))]: 256, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0101" + }, undefined, false, undefined, this))]: 257, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0102" + }, undefined, false, undefined, this))]: 258, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0103" + }, undefined, false, undefined, this))]: 259, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0104" + }, undefined, false, undefined, this))]: 260, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0105" + }, undefined, false, undefined, this))]: 261, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0106" + }, undefined, false, undefined, this))]: 262, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0107" + }, undefined, false, undefined, this))]: 263, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0108" + }, undefined, false, undefined, this))]: 264, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0109" + }, undefined, false, undefined, this))]: 265, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010A" + }, undefined, false, undefined, this))]: 266, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010B" + }, undefined, false, undefined, this))]: 267, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010C" + }, undefined, false, undefined, this))]: 268, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010D" + }, undefined, false, undefined, this))]: 269, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010E" + }, undefined, false, undefined, this))]: 270, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010F" + }, undefined, false, undefined, this))]: 271, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0110" + }, undefined, false, undefined, this))]: 272, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0111" + }, undefined, false, undefined, this))]: 273, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0112" + }, undefined, false, undefined, this))]: 274, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0113" + }, undefined, false, undefined, this))]: 275, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0114" + }, undefined, false, undefined, this))]: 276, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0115" + }, undefined, false, undefined, this))]: 277, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0116" + }, undefined, false, undefined, this))]: 278, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0117" + }, undefined, false, undefined, this))]: 279, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0118" + }, undefined, false, undefined, this))]: 280, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0119" + }, undefined, false, undefined, this))]: 281, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011A" + }, undefined, false, undefined, this))]: 282, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011B" + }, undefined, false, undefined, this))]: 283, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011C" + }, undefined, false, undefined, this))]: 284, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011D" + }, undefined, false, undefined, this))]: 285, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011E" + }, undefined, false, undefined, this))]: 286, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011F" + }, undefined, false, undefined, this))]: 287, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0120" + }, undefined, false, undefined, this))]: 288, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0121" + }, undefined, false, undefined, this))]: 289, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0122" + }, undefined, false, undefined, this))]: 290, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0123" + }, undefined, false, undefined, this))]: 291, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0124" + }, undefined, false, undefined, this))]: 292, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0125" + }, undefined, false, undefined, this))]: 293, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0126" + }, undefined, false, undefined, this))]: 294, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0127" + }, undefined, false, undefined, this))]: 295, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0128" + }, undefined, false, undefined, this))]: 296, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0129" + }, undefined, false, undefined, this))]: 297, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012A" + }, undefined, false, undefined, this))]: 298, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012B" + }, undefined, false, undefined, this))]: 299, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012C" + }, undefined, false, undefined, this))]: 300, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012D" + }, undefined, false, undefined, this))]: 301, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012E" + }, undefined, false, undefined, this))]: 302, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012F" + }, undefined, false, undefined, this))]: 303, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0130" + }, undefined, false, undefined, this))]: 304, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0131" + }, undefined, false, undefined, this))]: 305, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0132" + }, undefined, false, undefined, this))]: 306, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0133" + }, undefined, false, undefined, this))]: 307, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0134" + }, undefined, false, undefined, this))]: 308, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0135" + }, undefined, false, undefined, this))]: 309, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0136" + }, undefined, false, undefined, this))]: 310, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0137" + }, undefined, false, undefined, this))]: 311, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0138" + }, undefined, false, undefined, this))]: 312, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0139" + }, undefined, false, undefined, this))]: 313, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013A" + }, undefined, false, undefined, this))]: 314, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013B" + }, undefined, false, undefined, this))]: 315, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013C" + }, undefined, false, undefined, this))]: 316, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013D" + }, undefined, false, undefined, this))]: 317, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013E" + }, undefined, false, undefined, this))]: 318, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013F" + }, undefined, false, undefined, this))]: 319, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0140" + }, undefined, false, undefined, this))]: 320, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0141" + }, undefined, false, undefined, this))]: 321, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0142" + }, undefined, false, undefined, this))]: 322, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0143" + }, undefined, false, undefined, this))]: 323, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0144" + }, undefined, false, undefined, this))]: 324, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0145" + }, undefined, false, undefined, this))]: 325, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0146" + }, undefined, false, undefined, this))]: 326, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0147" + }, undefined, false, undefined, this))]: 327, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0148" + }, undefined, false, undefined, this))]: 328, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0149" + }, undefined, false, undefined, this))]: 329, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014A" + }, undefined, false, undefined, this))]: 330, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014B" + }, undefined, false, undefined, this))]: 331, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014C" + }, undefined, false, undefined, this))]: 332, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014D" + }, undefined, false, undefined, this))]: 333, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014E" + }, undefined, false, undefined, this))]: 334, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014F" + }, undefined, false, undefined, this))]: 335, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0150" + }, undefined, false, undefined, this))]: 336, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0151" + }, undefined, false, undefined, this))]: 337, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0152" + }, undefined, false, undefined, this))]: 338, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0153" + }, undefined, false, undefined, this))]: 339, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0154" + }, undefined, false, undefined, this))]: 340, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0155" + }, undefined, false, undefined, this))]: 341, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0156" + }, undefined, false, undefined, this))]: 342, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0157" + }, undefined, false, undefined, this))]: 343, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0158" + }, undefined, false, undefined, this))]: 344, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0159" + }, undefined, false, undefined, this))]: 345, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015A" + }, undefined, false, undefined, this))]: 346, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015B" + }, undefined, false, undefined, this))]: 347, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015C" + }, undefined, false, undefined, this))]: 348, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015D" + }, undefined, false, undefined, this))]: 349, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015E" + }, undefined, false, undefined, this))]: 350, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015F" + }, undefined, false, undefined, this))]: 351, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0160" + }, undefined, false, undefined, this))]: 352, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0161" + }, undefined, false, undefined, this))]: 353, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0162" + }, undefined, false, undefined, this))]: 354, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0163" + }, undefined, false, undefined, this))]: 355, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0164" + }, undefined, false, undefined, this))]: 356, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0165" + }, undefined, false, undefined, this))]: 357, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0166" + }, undefined, false, undefined, this))]: 358, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0167" + }, undefined, false, undefined, this))]: 359, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0168" + }, undefined, false, undefined, this))]: 360, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0169" + }, undefined, false, undefined, this))]: 361, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016A" + }, undefined, false, undefined, this))]: 362, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016B" + }, undefined, false, undefined, this))]: 363, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016C" + }, undefined, false, undefined, this))]: 364, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016D" + }, undefined, false, undefined, this))]: 365, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016E" + }, undefined, false, undefined, this))]: 366, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016F" + }, undefined, false, undefined, this))]: 367, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0170" + }, undefined, false, undefined, this))]: 368, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0171" + }, undefined, false, undefined, this))]: 369, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0172" + }, undefined, false, undefined, this))]: 370, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0173" + }, undefined, false, undefined, this))]: 371, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0174" + }, undefined, false, undefined, this))]: 372, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0175" + }, undefined, false, undefined, this))]: 373, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0176" + }, undefined, false, undefined, this))]: 374, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0177" + }, undefined, false, undefined, this))]: 375, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0178" + }, undefined, false, undefined, this))]: 376, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0179" + }, undefined, false, undefined, this))]: 377, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017A" + }, undefined, false, undefined, this))]: 378, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017B" + }, undefined, false, undefined, this))]: 379, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017C" + }, undefined, false, undefined, this))]: 380, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017D" + }, undefined, false, undefined, this))]: 381, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017E" + }, undefined, false, undefined, this))]: 382, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017F" + }, undefined, false, undefined, this))]: 383, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0180" + }, undefined, false, undefined, this))]: 384, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0181" + }, undefined, false, undefined, this))]: 385, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0182" + }, undefined, false, undefined, this))]: 386, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0183" + }, undefined, false, undefined, this))]: 387, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0184" + }, undefined, false, undefined, this))]: 388, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0185" + }, undefined, false, undefined, this))]: 389, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0186" + }, undefined, false, undefined, this))]: 390, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0187" + }, undefined, false, undefined, this))]: 391, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0188" + }, undefined, false, undefined, this))]: 392, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0189" + }, undefined, false, undefined, this))]: 393, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018A" + }, undefined, false, undefined, this))]: 394, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018B" + }, undefined, false, undefined, this))]: 395, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018C" + }, undefined, false, undefined, this))]: 396, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018D" + }, undefined, false, undefined, this))]: 397, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018E" + }, undefined, false, undefined, this))]: 398, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018F" + }, undefined, false, undefined, this))]: 399, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0190" + }, undefined, false, undefined, this))]: 400, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0191" + }, undefined, false, undefined, this))]: 401, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0192" + }, undefined, false, undefined, this))]: 402, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0193" + }, undefined, false, undefined, this))]: 403, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0194" + }, undefined, false, undefined, this))]: 404, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0195" + }, undefined, false, undefined, this))]: 405, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0196" + }, undefined, false, undefined, this))]: 406, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0197" + }, undefined, false, undefined, this))]: 407, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0198" + }, undefined, false, undefined, this))]: 408, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0199" + }, undefined, false, undefined, this))]: 409, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019A" + }, undefined, false, undefined, this))]: 410, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019B" + }, undefined, false, undefined, this))]: 411, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019C" + }, undefined, false, undefined, this))]: 412, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019D" + }, undefined, false, undefined, this))]: 413, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019E" + }, undefined, false, undefined, this))]: 414, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019F" + }, undefined, false, undefined, this))]: 415, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A0" + }, undefined, false, undefined, this))]: 416, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A1" + }, undefined, false, undefined, this))]: 417, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A2" + }, undefined, false, undefined, this))]: 418, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A3" + }, undefined, false, undefined, this))]: 419, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A4" + }, undefined, false, undefined, this))]: 420, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A5" + }, undefined, false, undefined, this))]: 421, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A6" + }, undefined, false, undefined, this))]: 422, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A7" + }, undefined, false, undefined, this))]: 423, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A8" + }, undefined, false, undefined, this))]: 424, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A9" + }, undefined, false, undefined, this))]: 425, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AA" + }, undefined, false, undefined, this))]: 426, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AB" + }, undefined, false, undefined, this))]: 427, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AC" + }, undefined, false, undefined, this))]: 428, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AD" + }, undefined, false, undefined, this))]: 429, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AE" + }, undefined, false, undefined, this))]: 430, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AF" + }, undefined, false, undefined, this))]: 431, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B0" + }, undefined, false, undefined, this))]: 432, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B1" + }, undefined, false, undefined, this))]: 433, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B2" + }, undefined, false, undefined, this))]: 434, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B3" + }, undefined, false, undefined, this))]: 435, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B4" + }, undefined, false, undefined, this))]: 436, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B5" + }, undefined, false, undefined, this))]: 437, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B6" + }, undefined, false, undefined, this))]: 438, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B7" + }, undefined, false, undefined, this))]: 439, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B8" + }, undefined, false, undefined, this))]: 440, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B9" + }, undefined, false, undefined, this))]: 441, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BA" + }, undefined, false, undefined, this))]: 442, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BB" + }, undefined, false, undefined, this))]: 443, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BC" + }, undefined, false, undefined, this))]: 444, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BD" + }, undefined, false, undefined, this))]: 445, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BE" + }, undefined, false, undefined, this))]: 446, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BF" + }, undefined, false, undefined, this))]: 447, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C0" + }, undefined, false, undefined, this))]: 448, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C1" + }, undefined, false, undefined, this))]: 449, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C2" + }, undefined, false, undefined, this))]: 450, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C3" + }, undefined, false, undefined, this))]: 451, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C4" + }, undefined, false, undefined, this))]: 452, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C5" + }, undefined, false, undefined, this))]: 453, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C6" + }, undefined, false, undefined, this))]: 454, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C7" + }, undefined, false, undefined, this))]: 455, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C8" + }, undefined, false, undefined, this))]: 456, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C9" + }, undefined, false, undefined, this))]: 457, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CA" + }, undefined, false, undefined, this))]: 458, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CB" + }, undefined, false, undefined, this))]: 459, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CC" + }, undefined, false, undefined, this))]: 460, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CD" + }, undefined, false, undefined, this))]: 461, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CE" + }, undefined, false, undefined, this))]: 462, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CF" + }, undefined, false, undefined, this))]: 463, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D0" + }, undefined, false, undefined, this))]: 464, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D1" + }, undefined, false, undefined, this))]: 465, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D2" + }, undefined, false, undefined, this))]: 466, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D3" + }, undefined, false, undefined, this))]: 467, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D4" + }, undefined, false, undefined, this))]: 468, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D5" + }, undefined, false, undefined, this))]: 469, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D6" + }, undefined, false, undefined, this))]: 470, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D7" + }, undefined, false, undefined, this))]: 471, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D8" + }, undefined, false, undefined, this))]: 472, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D9" + }, undefined, false, undefined, this))]: 473, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DA" + }, undefined, false, undefined, this))]: 474, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DB" + }, undefined, false, undefined, this))]: 475, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DC" + }, undefined, false, undefined, this))]: 476, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DD" + }, undefined, false, undefined, this))]: 477, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DE" + }, undefined, false, undefined, this))]: 478, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DF" + }, undefined, false, undefined, this))]: 479, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E0" + }, undefined, false, undefined, this))]: 480, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E1" + }, undefined, false, undefined, this))]: 481, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E2" + }, undefined, false, undefined, this))]: 482, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E3" + }, undefined, false, undefined, this))]: 483, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E4" + }, undefined, false, undefined, this))]: 484, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E5" + }, undefined, false, undefined, this))]: 485, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E6" + }, undefined, false, undefined, this))]: 486, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E7" + }, undefined, false, undefined, this))]: 487, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E8" + }, undefined, false, undefined, this))]: 488, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E9" + }, undefined, false, undefined, this))]: 489, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EA" + }, undefined, false, undefined, this))]: 490, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EB" + }, undefined, false, undefined, this))]: 491, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EC" + }, undefined, false, undefined, this))]: 492, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01ED" + }, undefined, false, undefined, this))]: 493, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EE" + }, undefined, false, undefined, this))]: 494, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EF" + }, undefined, false, undefined, this))]: 495, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F0" + }, undefined, false, undefined, this))]: 496, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F1" + }, undefined, false, undefined, this))]: 497, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F2" + }, undefined, false, undefined, this))]: 498, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F3" + }, undefined, false, undefined, this))]: 499, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F4" + }, undefined, false, undefined, this))]: 500, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F5" + }, undefined, false, undefined, this))]: 501, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F6" + }, undefined, false, undefined, this))]: 502, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F7" + }, undefined, false, undefined, this))]: 503, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F8" + }, undefined, false, undefined, this))]: 504, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F9" + }, undefined, false, undefined, this))]: 505, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FA" + }, undefined, false, undefined, this))]: 506, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FB" + }, undefined, false, undefined, this))]: 507, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FC" + }, undefined, false, undefined, this))]: 508, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FD" + }, undefined, false, undefined, this))]: 509, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FE" + }, undefined, false, undefined, this))]: 510, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FF" + }, undefined, false, undefined, this))]: 511, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0200" + }, undefined, false, undefined, this))]: 512, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0201" + }, undefined, false, undefined, this))]: 513, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0202" + }, undefined, false, undefined, this))]: 514, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0203" + }, undefined, false, undefined, this))]: 515, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0204" + }, undefined, false, undefined, this))]: 516, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0205" + }, undefined, false, undefined, this))]: 517, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0206" + }, undefined, false, undefined, this))]: 518, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0207" + }, undefined, false, undefined, this))]: 519, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0208" + }, undefined, false, undefined, this))]: 520, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0209" + }, undefined, false, undefined, this))]: 521, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020A" + }, undefined, false, undefined, this))]: 522, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020B" + }, undefined, false, undefined, this))]: 523, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020C" + }, undefined, false, undefined, this))]: 524, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020D" + }, undefined, false, undefined, this))]: 525, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020E" + }, undefined, false, undefined, this))]: 526, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020F" + }, undefined, false, undefined, this))]: 527, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0210" + }, undefined, false, undefined, this))]: 528, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0211" + }, undefined, false, undefined, this))]: 529, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0212" + }, undefined, false, undefined, this))]: 530, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0213" + }, undefined, false, undefined, this))]: 531, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0214" + }, undefined, false, undefined, this))]: 532, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0215" + }, undefined, false, undefined, this))]: 533, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0216" + }, undefined, false, undefined, this))]: 534, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0217" + }, undefined, false, undefined, this))]: 535, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0218" + }, undefined, false, undefined, this))]: 536, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0219" + }, undefined, false, undefined, this))]: 537, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021A" + }, undefined, false, undefined, this))]: 538, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021B" + }, undefined, false, undefined, this))]: 539, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021C" + }, undefined, false, undefined, this))]: 540, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021D" + }, undefined, false, undefined, this))]: 541, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021E" + }, undefined, false, undefined, this))]: 542, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021F" + }, undefined, false, undefined, this))]: 543, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0220" + }, undefined, false, undefined, this))]: 544, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0221" + }, undefined, false, undefined, this))]: 545, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0222" + }, undefined, false, undefined, this))]: 546, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0223" + }, undefined, false, undefined, this))]: 547, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0224" + }, undefined, false, undefined, this))]: 548, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0225" + }, undefined, false, undefined, this))]: 549, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0226" + }, undefined, false, undefined, this))]: 550, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0227" + }, undefined, false, undefined, this))]: 551, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0228" + }, undefined, false, undefined, this))]: 552, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0229" + }, undefined, false, undefined, this))]: 553, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022A" + }, undefined, false, undefined, this))]: 554, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022B" + }, undefined, false, undefined, this))]: 555, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022C" + }, undefined, false, undefined, this))]: 556, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022D" + }, undefined, false, undefined, this))]: 557, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022E" + }, undefined, false, undefined, this))]: 558, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022F" + }, undefined, false, undefined, this))]: 559, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0230" + }, undefined, false, undefined, this))]: 560, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0231" + }, undefined, false, undefined, this))]: 561, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0232" + }, undefined, false, undefined, this))]: 562, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0233" + }, undefined, false, undefined, this))]: 563, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0234" + }, undefined, false, undefined, this))]: 564, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0235" + }, undefined, false, undefined, this))]: 565, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0236" + }, undefined, false, undefined, this))]: 566, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0237" + }, undefined, false, undefined, this))]: 567, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0238" + }, undefined, false, undefined, this))]: 568, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0239" + }, undefined, false, undefined, this))]: 569, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023A" + }, undefined, false, undefined, this))]: 570, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023B" + }, undefined, false, undefined, this))]: 571, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023C" + }, undefined, false, undefined, this))]: 572, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023D" + }, undefined, false, undefined, this))]: 573, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023E" + }, undefined, false, undefined, this))]: 574, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023F" + }, undefined, false, undefined, this))]: 575, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0240" + }, undefined, false, undefined, this))]: 576, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0241" + }, undefined, false, undefined, this))]: 577, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0242" + }, undefined, false, undefined, this))]: 578, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0243" + }, undefined, false, undefined, this))]: 579, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0244" + }, undefined, false, undefined, this))]: 580, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0245" + }, undefined, false, undefined, this))]: 581, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0246" + }, undefined, false, undefined, this))]: 582, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0247" + }, undefined, false, undefined, this))]: 583, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0248" + }, undefined, false, undefined, this))]: 584, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0249" + }, undefined, false, undefined, this))]: 585, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024A" + }, undefined, false, undefined, this))]: 586, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024B" + }, undefined, false, undefined, this))]: 587, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024C" + }, undefined, false, undefined, this))]: 588, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024D" + }, undefined, false, undefined, this))]: 589, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024E" + }, undefined, false, undefined, this))]: 590, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024F" + }, undefined, false, undefined, this))]: 591, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0250" + }, undefined, false, undefined, this))]: 592, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0251" + }, undefined, false, undefined, this))]: 593, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0252" + }, undefined, false, undefined, this))]: 594, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0253" + }, undefined, false, undefined, this))]: 595, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0254" + }, undefined, false, undefined, this))]: 596, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0255" + }, undefined, false, undefined, this))]: 597, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0256" + }, undefined, false, undefined, this))]: 598, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0257" + }, undefined, false, undefined, this))]: 599, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0258" + }, undefined, false, undefined, this))]: 600, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0259" + }, undefined, false, undefined, this))]: 601, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025A" + }, undefined, false, undefined, this))]: 602, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025B" + }, undefined, false, undefined, this))]: 603, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025C" + }, undefined, false, undefined, this))]: 604, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025D" + }, undefined, false, undefined, this))]: 605, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025E" + }, undefined, false, undefined, this))]: 606, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025F" + }, undefined, false, undefined, this))]: 607, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0260" + }, undefined, false, undefined, this))]: 608, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0261" + }, undefined, false, undefined, this))]: 609, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0262" + }, undefined, false, undefined, this))]: 610, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0263" + }, undefined, false, undefined, this))]: 611, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0264" + }, undefined, false, undefined, this))]: 612, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0265" + }, undefined, false, undefined, this))]: 613, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0266" + }, undefined, false, undefined, this))]: 614, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0267" + }, undefined, false, undefined, this))]: 615, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0268" + }, undefined, false, undefined, this))]: 616, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0269" + }, undefined, false, undefined, this))]: 617, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026A" + }, undefined, false, undefined, this))]: 618, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026B" + }, undefined, false, undefined, this))]: 619, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026C" + }, undefined, false, undefined, this))]: 620, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026D" + }, undefined, false, undefined, this))]: 621, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026E" + }, undefined, false, undefined, this))]: 622, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026F" + }, undefined, false, undefined, this))]: 623, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0270" + }, undefined, false, undefined, this))]: 624, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0271" + }, undefined, false, undefined, this))]: 625, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0272" + }, undefined, false, undefined, this))]: 626, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0273" + }, undefined, false, undefined, this))]: 627, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0274" + }, undefined, false, undefined, this))]: 628, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0275" + }, undefined, false, undefined, this))]: 629, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0276" + }, undefined, false, undefined, this))]: 630, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0277" + }, undefined, false, undefined, this))]: 631, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0278" + }, undefined, false, undefined, this))]: 632, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0279" + }, undefined, false, undefined, this))]: 633, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027A" + }, undefined, false, undefined, this))]: 634, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027B" + }, undefined, false, undefined, this))]: 635, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027C" + }, undefined, false, undefined, this))]: 636, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027D" + }, undefined, false, undefined, this))]: 637, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027E" + }, undefined, false, undefined, this))]: 638, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027F" + }, undefined, false, undefined, this))]: 639, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0280" + }, undefined, false, undefined, this))]: 640, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0281" + }, undefined, false, undefined, this))]: 641, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0282" + }, undefined, false, undefined, this))]: 642, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0283" + }, undefined, false, undefined, this))]: 643, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0284" + }, undefined, false, undefined, this))]: 644, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0285" + }, undefined, false, undefined, this))]: 645, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0286" + }, undefined, false, undefined, this))]: 646, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0287" + }, undefined, false, undefined, this))]: 647, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0288" + }, undefined, false, undefined, this))]: 648, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0289" + }, undefined, false, undefined, this))]: 649, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028A" + }, undefined, false, undefined, this))]: 650, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028B" + }, undefined, false, undefined, this))]: 651, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028C" + }, undefined, false, undefined, this))]: 652, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028D" + }, undefined, false, undefined, this))]: 653, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028E" + }, undefined, false, undefined, this))]: 654, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028F" + }, undefined, false, undefined, this))]: 655, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0290" + }, undefined, false, undefined, this))]: 656, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0291" + }, undefined, false, undefined, this))]: 657, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0292" + }, undefined, false, undefined, this))]: 658, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0293" + }, undefined, false, undefined, this))]: 659, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0294" + }, undefined, false, undefined, this))]: 660 +}; + +export function test() { + for (let rawKey in elements) { + var key = rawKey; + if (rawKey.startsWith("&")) { + var txt = document.createElement("textarea"); + txt.innerHTML = rawKey; + key = txt.value; + } + console.assert(elements[rawKey] === key.codePointAt(0), `${key} is not ${elements[rawKey]}`); + } + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/jsx-entities.jsx.map diff --git a/test/snapshots/jsx-entities.hmr.debug.jsx b/test/snapshots/jsx-entities.hmr.debug.jsx new file mode 100644 index 000000000..07915e50a --- /dev/null +++ b/test/snapshots/jsx-entities.hmr.debug.jsx @@ -0,0 +1,2793 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; + +(hmr._load = function() { + const elements = { + [ReactDOM.renderToString(jsx(JSXFrag, { + children: '"' + }, undefined, false, undefined, this))]: 34, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "&" + }, undefined, false, undefined, this))]: 38, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "'" + }, undefined, false, undefined, this))]: 39, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "<" + }, undefined, false, undefined, this))]: 60, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ">" + }, undefined, false, undefined, this))]: 62, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA0" + }, undefined, false, undefined, this))]: 160, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA1" + }, undefined, false, undefined, this))]: 161, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA2" + }, undefined, false, undefined, this))]: 162, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA3" + }, undefined, false, undefined, this))]: 163, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA4" + }, undefined, false, undefined, this))]: 164, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA5" + }, undefined, false, undefined, this))]: 165, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA6" + }, undefined, false, undefined, this))]: 166, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA7" + }, undefined, false, undefined, this))]: 167, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA8" + }, undefined, false, undefined, this))]: 168, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA9" + }, undefined, false, undefined, this))]: 169, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAA" + }, undefined, false, undefined, this))]: 170, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAB" + }, undefined, false, undefined, this))]: 171, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAC" + }, undefined, false, undefined, this))]: 172, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAD" + }, undefined, false, undefined, this))]: 173, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAE" + }, undefined, false, undefined, this))]: 174, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAF" + }, undefined, false, undefined, this))]: 175, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB0" + }, undefined, false, undefined, this))]: 176, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB1" + }, undefined, false, undefined, this))]: 177, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB2" + }, undefined, false, undefined, this))]: 178, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB3" + }, undefined, false, undefined, this))]: 179, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB4" + }, undefined, false, undefined, this))]: 180, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB5" + }, undefined, false, undefined, this))]: 181, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB6" + }, undefined, false, undefined, this))]: 182, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB7" + }, undefined, false, undefined, this))]: 183, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB8" + }, undefined, false, undefined, this))]: 184, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB9" + }, undefined, false, undefined, this))]: 185, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBA" + }, undefined, false, undefined, this))]: 186, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBB" + }, undefined, false, undefined, this))]: 187, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBC" + }, undefined, false, undefined, this))]: 188, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBD" + }, undefined, false, undefined, this))]: 189, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBE" + }, undefined, false, undefined, this))]: 190, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBF" + }, undefined, false, undefined, this))]: 191, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC0" + }, undefined, false, undefined, this))]: 192, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC1" + }, undefined, false, undefined, this))]: 193, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC2" + }, undefined, false, undefined, this))]: 194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC3" + }, undefined, false, undefined, this))]: 195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC4" + }, undefined, false, undefined, this))]: 196, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC5" + }, undefined, false, undefined, this))]: 197, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC6" + }, undefined, false, undefined, this))]: 198, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC7" + }, undefined, false, undefined, this))]: 199, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC8" + }, undefined, false, undefined, this))]: 200, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC9" + }, undefined, false, undefined, this))]: 201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCA" + }, undefined, false, undefined, this))]: 202, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCB" + }, undefined, false, undefined, this))]: 203, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCC" + }, undefined, false, undefined, this))]: 204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCD" + }, undefined, false, undefined, this))]: 205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCE" + }, undefined, false, undefined, this))]: 206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCF" + }, undefined, false, undefined, this))]: 207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD0" + }, undefined, false, undefined, this))]: 208, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD1" + }, undefined, false, undefined, this))]: 209, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD2" + }, undefined, false, undefined, this))]: 210, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD3" + }, undefined, false, undefined, this))]: 211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD4" + }, undefined, false, undefined, this))]: 212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD5" + }, undefined, false, undefined, this))]: 213, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD6" + }, undefined, false, undefined, this))]: 214, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD7" + }, undefined, false, undefined, this))]: 215, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD8" + }, undefined, false, undefined, this))]: 216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD9" + }, undefined, false, undefined, this))]: 217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDA" + }, undefined, false, undefined, this))]: 218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDB" + }, undefined, false, undefined, this))]: 219, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDC" + }, undefined, false, undefined, this))]: 220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDD" + }, undefined, false, undefined, this))]: 221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDE" + }, undefined, false, undefined, this))]: 222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDF" + }, undefined, false, undefined, this))]: 223, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE0" + }, undefined, false, undefined, this))]: 224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE1" + }, undefined, false, undefined, this))]: 225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE2" + }, undefined, false, undefined, this))]: 226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE3" + }, undefined, false, undefined, this))]: 227, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE4" + }, undefined, false, undefined, this))]: 228, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE5" + }, undefined, false, undefined, this))]: 229, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE6" + }, undefined, false, undefined, this))]: 230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE7" + }, undefined, false, undefined, this))]: 231, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE8" + }, undefined, false, undefined, this))]: 232, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE9" + }, undefined, false, undefined, this))]: 233, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEA" + }, undefined, false, undefined, this))]: 234, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEB" + }, undefined, false, undefined, this))]: 235, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEC" + }, undefined, false, undefined, this))]: 236, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xED" + }, undefined, false, undefined, this))]: 237, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEE" + }, undefined, false, undefined, this))]: 238, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEF" + }, undefined, false, undefined, this))]: 239, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF0" + }, undefined, false, undefined, this))]: 240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF1" + }, undefined, false, undefined, this))]: 241, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF2" + }, undefined, false, undefined, this))]: 242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF3" + }, undefined, false, undefined, this))]: 243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF4" + }, undefined, false, undefined, this))]: 244, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF5" + }, undefined, false, undefined, this))]: 245, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF6" + }, undefined, false, undefined, this))]: 246, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF7" + }, undefined, false, undefined, this))]: 247, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF8" + }, undefined, false, undefined, this))]: 248, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF9" + }, undefined, false, undefined, this))]: 249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFA" + }, undefined, false, undefined, this))]: 250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFB" + }, undefined, false, undefined, this))]: 251, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFC" + }, undefined, false, undefined, this))]: 252, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFD" + }, undefined, false, undefined, this))]: 253, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFE" + }, undefined, false, undefined, this))]: 254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFF" + }, undefined, false, undefined, this))]: 255, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0152" + }, undefined, false, undefined, this))]: 338, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0153" + }, undefined, false, undefined, this))]: 339, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0160" + }, undefined, false, undefined, this))]: 352, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0161" + }, undefined, false, undefined, this))]: 353, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0178" + }, undefined, false, undefined, this))]: 376, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0192" + }, undefined, false, undefined, this))]: 402, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u02C6" + }, undefined, false, undefined, this))]: 710, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u02DC" + }, undefined, false, undefined, this))]: 732, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0391" + }, undefined, false, undefined, this))]: 913, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0392" + }, undefined, false, undefined, this))]: 914, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0393" + }, undefined, false, undefined, this))]: 915, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0394" + }, undefined, false, undefined, this))]: 916, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0395" + }, undefined, false, undefined, this))]: 917, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0396" + }, undefined, false, undefined, this))]: 918, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0397" + }, undefined, false, undefined, this))]: 919, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0398" + }, undefined, false, undefined, this))]: 920, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0399" + }, undefined, false, undefined, this))]: 921, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039A" + }, undefined, false, undefined, this))]: 922, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039B" + }, undefined, false, undefined, this))]: 923, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039C" + }, undefined, false, undefined, this))]: 924, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039D" + }, undefined, false, undefined, this))]: 925, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039E" + }, undefined, false, undefined, this))]: 926, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039F" + }, undefined, false, undefined, this))]: 927, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A0" + }, undefined, false, undefined, this))]: 928, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A1" + }, undefined, false, undefined, this))]: 929, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A3" + }, undefined, false, undefined, this))]: 931, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A4" + }, undefined, false, undefined, this))]: 932, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A5" + }, undefined, false, undefined, this))]: 933, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A6" + }, undefined, false, undefined, this))]: 934, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A7" + }, undefined, false, undefined, this))]: 935, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A8" + }, undefined, false, undefined, this))]: 936, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A9" + }, undefined, false, undefined, this))]: 937, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B1" + }, undefined, false, undefined, this))]: 945, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B2" + }, undefined, false, undefined, this))]: 946, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B3" + }, undefined, false, undefined, this))]: 947, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B4" + }, undefined, false, undefined, this))]: 948, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B5" + }, undefined, false, undefined, this))]: 949, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B6" + }, undefined, false, undefined, this))]: 950, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B7" + }, undefined, false, undefined, this))]: 951, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B8" + }, undefined, false, undefined, this))]: 952, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B9" + }, undefined, false, undefined, this))]: 953, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BA" + }, undefined, false, undefined, this))]: 954, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BB" + }, undefined, false, undefined, this))]: 955, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BC" + }, undefined, false, undefined, this))]: 956, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BD" + }, undefined, false, undefined, this))]: 957, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BE" + }, undefined, false, undefined, this))]: 958, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BF" + }, undefined, false, undefined, this))]: 959, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C0" + }, undefined, false, undefined, this))]: 960, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C1" + }, undefined, false, undefined, this))]: 961, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C2" + }, undefined, false, undefined, this))]: 962, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C3" + }, undefined, false, undefined, this))]: 963, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C4" + }, undefined, false, undefined, this))]: 964, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C5" + }, undefined, false, undefined, this))]: 965, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C6" + }, undefined, false, undefined, this))]: 966, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C7" + }, undefined, false, undefined, this))]: 967, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C8" + }, undefined, false, undefined, this))]: 968, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C9" + }, undefined, false, undefined, this))]: 969, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D1" + }, undefined, false, undefined, this))]: 977, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D2" + }, undefined, false, undefined, this))]: 978, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D6" + }, undefined, false, undefined, this))]: 982, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2002" + }, undefined, false, undefined, this))]: 8194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2003" + }, undefined, false, undefined, this))]: 8195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2009" + }, undefined, false, undefined, this))]: 8201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200C" + }, undefined, false, undefined, this))]: 8204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200D" + }, undefined, false, undefined, this))]: 8205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200E" + }, undefined, false, undefined, this))]: 8206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200F" + }, undefined, false, undefined, this))]: 8207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2013" + }, undefined, false, undefined, this))]: 8211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2014" + }, undefined, false, undefined, this))]: 8212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2018" + }, undefined, false, undefined, this))]: 8216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2019" + }, undefined, false, undefined, this))]: 8217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201A" + }, undefined, false, undefined, this))]: 8218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201C" + }, undefined, false, undefined, this))]: 8220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201D" + }, undefined, false, undefined, this))]: 8221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201E" + }, undefined, false, undefined, this))]: 8222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2020" + }, undefined, false, undefined, this))]: 8224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2021" + }, undefined, false, undefined, this))]: 8225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2022" + }, undefined, false, undefined, this))]: 8226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2026" + }, undefined, false, undefined, this))]: 8230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2030" + }, undefined, false, undefined, this))]: 8240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2032" + }, undefined, false, undefined, this))]: 8242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2033" + }, undefined, false, undefined, this))]: 8243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2039" + }, undefined, false, undefined, this))]: 8249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u203A" + }, undefined, false, undefined, this))]: 8250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u203E" + }, undefined, false, undefined, this))]: 8254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2044" + }, undefined, false, undefined, this))]: 8260, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u20AC" + }, undefined, false, undefined, this))]: 8364, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2111" + }, undefined, false, undefined, this))]: 8465, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2118" + }, undefined, false, undefined, this))]: 8472, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u211C" + }, undefined, false, undefined, this))]: 8476, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2122" + }, undefined, false, undefined, this))]: 8482, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2135" + }, undefined, false, undefined, this))]: 8501, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2190" + }, undefined, false, undefined, this))]: 8592, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2191" + }, undefined, false, undefined, this))]: 8593, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2192" + }, undefined, false, undefined, this))]: 8594, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2193" + }, undefined, false, undefined, this))]: 8595, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2194" + }, undefined, false, undefined, this))]: 8596, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21B5" + }, undefined, false, undefined, this))]: 8629, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D0" + }, undefined, false, undefined, this))]: 8656, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D1" + }, undefined, false, undefined, this))]: 8657, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D2" + }, undefined, false, undefined, this))]: 8658, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D3" + }, undefined, false, undefined, this))]: 8659, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D4" + }, undefined, false, undefined, this))]: 8660, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2200" + }, undefined, false, undefined, this))]: 8704, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2202" + }, undefined, false, undefined, this))]: 8706, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2203" + }, undefined, false, undefined, this))]: 8707, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2205" + }, undefined, false, undefined, this))]: 8709, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2207" + }, undefined, false, undefined, this))]: 8711, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2208" + }, undefined, false, undefined, this))]: 8712, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2209" + }, undefined, false, undefined, this))]: 8713, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u220B" + }, undefined, false, undefined, this))]: 8715, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u220F" + }, undefined, false, undefined, this))]: 8719, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2211" + }, undefined, false, undefined, this))]: 8721, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2212" + }, undefined, false, undefined, this))]: 8722, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2217" + }, undefined, false, undefined, this))]: 8727, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221A" + }, undefined, false, undefined, this))]: 8730, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221D" + }, undefined, false, undefined, this))]: 8733, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221E" + }, undefined, false, undefined, this))]: 8734, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2220" + }, undefined, false, undefined, this))]: 8736, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2227" + }, undefined, false, undefined, this))]: 8743, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2228" + }, undefined, false, undefined, this))]: 8744, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2229" + }, undefined, false, undefined, this))]: 8745, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u222A" + }, undefined, false, undefined, this))]: 8746, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u222B" + }, undefined, false, undefined, this))]: 8747, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2234" + }, undefined, false, undefined, this))]: 8756, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u223C" + }, undefined, false, undefined, this))]: 8764, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2245" + }, undefined, false, undefined, this))]: 8773, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2248" + }, undefined, false, undefined, this))]: 8776, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2260" + }, undefined, false, undefined, this))]: 8800, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2261" + }, undefined, false, undefined, this))]: 8801, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2264" + }, undefined, false, undefined, this))]: 8804, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2265" + }, undefined, false, undefined, this))]: 8805, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2282" + }, undefined, false, undefined, this))]: 8834, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2283" + }, undefined, false, undefined, this))]: 8835, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2284" + }, undefined, false, undefined, this))]: 8836, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2286" + }, undefined, false, undefined, this))]: 8838, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2287" + }, undefined, false, undefined, this))]: 8839, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2295" + }, undefined, false, undefined, this))]: 8853, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2297" + }, undefined, false, undefined, this))]: 8855, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u22A5" + }, undefined, false, undefined, this))]: 8869, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u22C5" + }, undefined, false, undefined, this))]: 8901, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2308" + }, undefined, false, undefined, this))]: 8968, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2309" + }, undefined, false, undefined, this))]: 8969, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u230A" + }, undefined, false, undefined, this))]: 8970, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u230B" + }, undefined, false, undefined, this))]: 8971, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2329" + }, undefined, false, undefined, this))]: 9001, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u232A" + }, undefined, false, undefined, this))]: 9002, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u25CA" + }, undefined, false, undefined, this))]: 9674, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2660" + }, undefined, false, undefined, this))]: 9824, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2663" + }, undefined, false, undefined, this))]: 9827, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2665" + }, undefined, false, undefined, this))]: 9829, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2666" + }, undefined, false, undefined, this))]: 9830, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x01" + }, undefined, false, undefined, this))]: 1, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x02" + }, undefined, false, undefined, this))]: 2, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x03" + }, undefined, false, undefined, this))]: 3, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x04" + }, undefined, false, undefined, this))]: 4, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x05" + }, undefined, false, undefined, this))]: 5, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x06" + }, undefined, false, undefined, this))]: 6, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x07" + }, undefined, false, undefined, this))]: 7, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\f" + }, undefined, false, undefined, this))]: 8, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\t" + }, undefined, false, undefined, this))]: 9, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ` +` + }, undefined, false, undefined, this))]: 10, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\v" + }, undefined, false, undefined, this))]: 11, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\f" + }, undefined, false, undefined, this))]: 12, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: `\r` + }, undefined, false, undefined, this))]: 13, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x0E" + }, undefined, false, undefined, this))]: 14, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x0F" + }, undefined, false, undefined, this))]: 15, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x10" + }, undefined, false, undefined, this))]: 16, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x11" + }, undefined, false, undefined, this))]: 17, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x12" + }, undefined, false, undefined, this))]: 18, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x13" + }, undefined, false, undefined, this))]: 19, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x14" + }, undefined, false, undefined, this))]: 20, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x15" + }, undefined, false, undefined, this))]: 21, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x16" + }, undefined, false, undefined, this))]: 22, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x17" + }, undefined, false, undefined, this))]: 23, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x18" + }, undefined, false, undefined, this))]: 24, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x19" + }, undefined, false, undefined, this))]: 25, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1A" + }, undefined, false, undefined, this))]: 26, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1B" + }, undefined, false, undefined, this))]: 27, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1C" + }, undefined, false, undefined, this))]: 28, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1D" + }, undefined, false, undefined, this))]: 29, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1E" + }, undefined, false, undefined, this))]: 30, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1F" + }, undefined, false, undefined, this))]: 31, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: " " + }, undefined, false, undefined, this))]: 32, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "!" + }, undefined, false, undefined, this))]: 33, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: '"' + }, undefined, false, undefined, this))]: 34, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "#" + }, undefined, false, undefined, this))]: 35, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "$" + }, undefined, false, undefined, this))]: 36, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "%" + }, undefined, false, undefined, this))]: 37, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "&" + }, undefined, false, undefined, this))]: 38, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "'" + }, undefined, false, undefined, this))]: 39, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "(" + }, undefined, false, undefined, this))]: 40, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ")" + }, undefined, false, undefined, this))]: 41, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "*" + }, undefined, false, undefined, this))]: 42, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "+" + }, undefined, false, undefined, this))]: 43, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "," + }, undefined, false, undefined, this))]: 44, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "-" + }, undefined, false, undefined, this))]: 45, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "." + }, undefined, false, undefined, this))]: 46, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "/" + }, undefined, false, undefined, this))]: 47, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "0" + }, undefined, false, undefined, this))]: 48, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "1" + }, undefined, false, undefined, this))]: 49, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "2" + }, undefined, false, undefined, this))]: 50, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "3" + }, undefined, false, undefined, this))]: 51, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "4" + }, undefined, false, undefined, this))]: 52, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "5" + }, undefined, false, undefined, this))]: 53, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "6" + }, undefined, false, undefined, this))]: 54, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "7" + }, undefined, false, undefined, this))]: 55, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "8" + }, undefined, false, undefined, this))]: 56, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "9" + }, undefined, false, undefined, this))]: 57, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ":" + }, undefined, false, undefined, this))]: 58, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ";" + }, undefined, false, undefined, this))]: 59, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "<" + }, undefined, false, undefined, this))]: 60, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "=" + }, undefined, false, undefined, this))]: 61, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ">" + }, undefined, false, undefined, this))]: 62, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "?" + }, undefined, false, undefined, this))]: 63, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "@" + }, undefined, false, undefined, this))]: 64, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "A" + }, undefined, false, undefined, this))]: 65, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "B" + }, undefined, false, undefined, this))]: 66, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "C" + }, undefined, false, undefined, this))]: 67, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "D" + }, undefined, false, undefined, this))]: 68, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "E" + }, undefined, false, undefined, this))]: 69, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "F" + }, undefined, false, undefined, this))]: 70, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "G" + }, undefined, false, undefined, this))]: 71, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "H" + }, undefined, false, undefined, this))]: 72, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "I" + }, undefined, false, undefined, this))]: 73, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "J" + }, undefined, false, undefined, this))]: 74, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "K" + }, undefined, false, undefined, this))]: 75, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "L" + }, undefined, false, undefined, this))]: 76, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "M" + }, undefined, false, undefined, this))]: 77, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "N" + }, undefined, false, undefined, this))]: 78, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "O" + }, undefined, false, undefined, this))]: 79, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "P" + }, undefined, false, undefined, this))]: 80, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Q" + }, undefined, false, undefined, this))]: 81, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "R" + }, undefined, false, undefined, this))]: 82, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "S" + }, undefined, false, undefined, this))]: 83, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "T" + }, undefined, false, undefined, this))]: 84, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "U" + }, undefined, false, undefined, this))]: 85, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "V" + }, undefined, false, undefined, this))]: 86, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "W" + }, undefined, false, undefined, this))]: 87, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "X" + }, undefined, false, undefined, this))]: 88, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Y" + }, undefined, false, undefined, this))]: 89, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Z" + }, undefined, false, undefined, this))]: 90, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "[" + }, undefined, false, undefined, this))]: 91, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\\" + }, undefined, false, undefined, this))]: 92, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "]" + }, undefined, false, undefined, this))]: 93, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "^" + }, undefined, false, undefined, this))]: 94, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "_" + }, undefined, false, undefined, this))]: 95, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "`" + }, undefined, false, undefined, this))]: 96, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "a" + }, undefined, false, undefined, this))]: 97, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "b" + }, undefined, false, undefined, this))]: 98, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "c" + }, undefined, false, undefined, this))]: 99, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "d" + }, undefined, false, undefined, this))]: 100, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "e" + }, undefined, false, undefined, this))]: 101, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "f" + }, undefined, false, undefined, this))]: 102, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "g" + }, undefined, false, undefined, this))]: 103, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "h" + }, undefined, false, undefined, this))]: 104, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "i" + }, undefined, false, undefined, this))]: 105, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "j" + }, undefined, false, undefined, this))]: 106, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "k" + }, undefined, false, undefined, this))]: 107, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "l" + }, undefined, false, undefined, this))]: 108, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "m" + }, undefined, false, undefined, this))]: 109, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "n" + }, undefined, false, undefined, this))]: 110, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "o" + }, undefined, false, undefined, this))]: 111, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "p" + }, undefined, false, undefined, this))]: 112, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "q" + }, undefined, false, undefined, this))]: 113, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "r" + }, undefined, false, undefined, this))]: 114, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "s" + }, undefined, false, undefined, this))]: 115, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "t" + }, undefined, false, undefined, this))]: 116, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "u" + }, undefined, false, undefined, this))]: 117, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "v" + }, undefined, false, undefined, this))]: 118, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "w" + }, undefined, false, undefined, this))]: 119, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "x" + }, undefined, false, undefined, this))]: 120, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "y" + }, undefined, false, undefined, this))]: 121, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "z" + }, undefined, false, undefined, this))]: 122, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "{" + }, undefined, false, undefined, this))]: 123, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "|" + }, undefined, false, undefined, this))]: 124, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "}" + }, undefined, false, undefined, this))]: 125, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "~" + }, undefined, false, undefined, this))]: 126, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x7F" + }, undefined, false, undefined, this))]: 127, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x80" + }, undefined, false, undefined, this))]: 128, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x81" + }, undefined, false, undefined, this))]: 129, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x82" + }, undefined, false, undefined, this))]: 130, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x83" + }, undefined, false, undefined, this))]: 131, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x84" + }, undefined, false, undefined, this))]: 132, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x85" + }, undefined, false, undefined, this))]: 133, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x86" + }, undefined, false, undefined, this))]: 134, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x87" + }, undefined, false, undefined, this))]: 135, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x88" + }, undefined, false, undefined, this))]: 136, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x89" + }, undefined, false, undefined, this))]: 137, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8A" + }, undefined, false, undefined, this))]: 138, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8B" + }, undefined, false, undefined, this))]: 139, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8C" + }, undefined, false, undefined, this))]: 140, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8D" + }, undefined, false, undefined, this))]: 141, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8E" + }, undefined, false, undefined, this))]: 142, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8F" + }, undefined, false, undefined, this))]: 143, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x90" + }, undefined, false, undefined, this))]: 144, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x91" + }, undefined, false, undefined, this))]: 145, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x92" + }, undefined, false, undefined, this))]: 146, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x93" + }, undefined, false, undefined, this))]: 147, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x94" + }, undefined, false, undefined, this))]: 148, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x95" + }, undefined, false, undefined, this))]: 149, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x96" + }, undefined, false, undefined, this))]: 150, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x97" + }, undefined, false, undefined, this))]: 151, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x98" + }, undefined, false, undefined, this))]: 152, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x99" + }, undefined, false, undefined, this))]: 153, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9A" + }, undefined, false, undefined, this))]: 154, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9B" + }, undefined, false, undefined, this))]: 155, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9C" + }, undefined, false, undefined, this))]: 156, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9D" + }, undefined, false, undefined, this))]: 157, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9E" + }, undefined, false, undefined, this))]: 158, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9F" + }, undefined, false, undefined, this))]: 159, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA0" + }, undefined, false, undefined, this))]: 160, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA1" + }, undefined, false, undefined, this))]: 161, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA2" + }, undefined, false, undefined, this))]: 162, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA3" + }, undefined, false, undefined, this))]: 163, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA4" + }, undefined, false, undefined, this))]: 164, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA5" + }, undefined, false, undefined, this))]: 165, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA6" + }, undefined, false, undefined, this))]: 166, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA7" + }, undefined, false, undefined, this))]: 167, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA8" + }, undefined, false, undefined, this))]: 168, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA9" + }, undefined, false, undefined, this))]: 169, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAA" + }, undefined, false, undefined, this))]: 170, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAB" + }, undefined, false, undefined, this))]: 171, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAC" + }, undefined, false, undefined, this))]: 172, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAD" + }, undefined, false, undefined, this))]: 173, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAE" + }, undefined, false, undefined, this))]: 174, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAF" + }, undefined, false, undefined, this))]: 175, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB0" + }, undefined, false, undefined, this))]: 176, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB1" + }, undefined, false, undefined, this))]: 177, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB2" + }, undefined, false, undefined, this))]: 178, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB3" + }, undefined, false, undefined, this))]: 179, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB4" + }, undefined, false, undefined, this))]: 180, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB5" + }, undefined, false, undefined, this))]: 181, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB6" + }, undefined, false, undefined, this))]: 182, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB7" + }, undefined, false, undefined, this))]: 183, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB8" + }, undefined, false, undefined, this))]: 184, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB9" + }, undefined, false, undefined, this))]: 185, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBA" + }, undefined, false, undefined, this))]: 186, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBB" + }, undefined, false, undefined, this))]: 187, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBC" + }, undefined, false, undefined, this))]: 188, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBD" + }, undefined, false, undefined, this))]: 189, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBE" + }, undefined, false, undefined, this))]: 190, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBF" + }, undefined, false, undefined, this))]: 191, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC0" + }, undefined, false, undefined, this))]: 192, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC1" + }, undefined, false, undefined, this))]: 193, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC2" + }, undefined, false, undefined, this))]: 194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC3" + }, undefined, false, undefined, this))]: 195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC4" + }, undefined, false, undefined, this))]: 196, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC5" + }, undefined, false, undefined, this))]: 197, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC6" + }, undefined, false, undefined, this))]: 198, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC7" + }, undefined, false, undefined, this))]: 199, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC8" + }, undefined, false, undefined, this))]: 200, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC9" + }, undefined, false, undefined, this))]: 201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCA" + }, undefined, false, undefined, this))]: 202, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCB" + }, undefined, false, undefined, this))]: 203, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCC" + }, undefined, false, undefined, this))]: 204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCD" + }, undefined, false, undefined, this))]: 205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCE" + }, undefined, false, undefined, this))]: 206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCF" + }, undefined, false, undefined, this))]: 207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD0" + }, undefined, false, undefined, this))]: 208, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD1" + }, undefined, false, undefined, this))]: 209, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD2" + }, undefined, false, undefined, this))]: 210, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD3" + }, undefined, false, undefined, this))]: 211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD4" + }, undefined, false, undefined, this))]: 212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD5" + }, undefined, false, undefined, this))]: 213, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD6" + }, undefined, false, undefined, this))]: 214, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD7" + }, undefined, false, undefined, this))]: 215, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD8" + }, undefined, false, undefined, this))]: 216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD9" + }, undefined, false, undefined, this))]: 217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDA" + }, undefined, false, undefined, this))]: 218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDB" + }, undefined, false, undefined, this))]: 219, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDC" + }, undefined, false, undefined, this))]: 220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDD" + }, undefined, false, undefined, this))]: 221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDE" + }, undefined, false, undefined, this))]: 222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDF" + }, undefined, false, undefined, this))]: 223, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE0" + }, undefined, false, undefined, this))]: 224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE1" + }, undefined, false, undefined, this))]: 225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE2" + }, undefined, false, undefined, this))]: 226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE3" + }, undefined, false, undefined, this))]: 227, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE4" + }, undefined, false, undefined, this))]: 228, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE5" + }, undefined, false, undefined, this))]: 229, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE6" + }, undefined, false, undefined, this))]: 230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE7" + }, undefined, false, undefined, this))]: 231, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE8" + }, undefined, false, undefined, this))]: 232, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE9" + }, undefined, false, undefined, this))]: 233, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEA" + }, undefined, false, undefined, this))]: 234, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEB" + }, undefined, false, undefined, this))]: 235, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEC" + }, undefined, false, undefined, this))]: 236, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xED" + }, undefined, false, undefined, this))]: 237, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEE" + }, undefined, false, undefined, this))]: 238, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEF" + }, undefined, false, undefined, this))]: 239, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF0" + }, undefined, false, undefined, this))]: 240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF1" + }, undefined, false, undefined, this))]: 241, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF2" + }, undefined, false, undefined, this))]: 242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF3" + }, undefined, false, undefined, this))]: 243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF4" + }, undefined, false, undefined, this))]: 244, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF5" + }, undefined, false, undefined, this))]: 245, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF6" + }, undefined, false, undefined, this))]: 246, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF7" + }, undefined, false, undefined, this))]: 247, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF8" + }, undefined, false, undefined, this))]: 248, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF9" + }, undefined, false, undefined, this))]: 249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFA" + }, undefined, false, undefined, this))]: 250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFB" + }, undefined, false, undefined, this))]: 251, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFC" + }, undefined, false, undefined, this))]: 252, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFD" + }, undefined, false, undefined, this))]: 253, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFE" + }, undefined, false, undefined, this))]: 254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFF" + }, undefined, false, undefined, this))]: 255, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0100" + }, undefined, false, undefined, this))]: 256, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0101" + }, undefined, false, undefined, this))]: 257, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0102" + }, undefined, false, undefined, this))]: 258, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0103" + }, undefined, false, undefined, this))]: 259, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0104" + }, undefined, false, undefined, this))]: 260, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0105" + }, undefined, false, undefined, this))]: 261, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0106" + }, undefined, false, undefined, this))]: 262, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0107" + }, undefined, false, undefined, this))]: 263, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0108" + }, undefined, false, undefined, this))]: 264, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0109" + }, undefined, false, undefined, this))]: 265, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010A" + }, undefined, false, undefined, this))]: 266, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010B" + }, undefined, false, undefined, this))]: 267, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010C" + }, undefined, false, undefined, this))]: 268, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010D" + }, undefined, false, undefined, this))]: 269, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010E" + }, undefined, false, undefined, this))]: 270, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010F" + }, undefined, false, undefined, this))]: 271, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0110" + }, undefined, false, undefined, this))]: 272, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0111" + }, undefined, false, undefined, this))]: 273, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0112" + }, undefined, false, undefined, this))]: 274, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0113" + }, undefined, false, undefined, this))]: 275, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0114" + }, undefined, false, undefined, this))]: 276, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0115" + }, undefined, false, undefined, this))]: 277, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0116" + }, undefined, false, undefined, this))]: 278, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0117" + }, undefined, false, undefined, this))]: 279, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0118" + }, undefined, false, undefined, this))]: 280, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0119" + }, undefined, false, undefined, this))]: 281, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011A" + }, undefined, false, undefined, this))]: 282, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011B" + }, undefined, false, undefined, this))]: 283, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011C" + }, undefined, false, undefined, this))]: 284, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011D" + }, undefined, false, undefined, this))]: 285, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011E" + }, undefined, false, undefined, this))]: 286, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011F" + }, undefined, false, undefined, this))]: 287, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0120" + }, undefined, false, undefined, this))]: 288, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0121" + }, undefined, false, undefined, this))]: 289, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0122" + }, undefined, false, undefined, this))]: 290, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0123" + }, undefined, false, undefined, this))]: 291, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0124" + }, undefined, false, undefined, this))]: 292, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0125" + }, undefined, false, undefined, this))]: 293, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0126" + }, undefined, false, undefined, this))]: 294, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0127" + }, undefined, false, undefined, this))]: 295, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0128" + }, undefined, false, undefined, this))]: 296, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0129" + }, undefined, false, undefined, this))]: 297, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012A" + }, undefined, false, undefined, this))]: 298, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012B" + }, undefined, false, undefined, this))]: 299, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012C" + }, undefined, false, undefined, this))]: 300, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012D" + }, undefined, false, undefined, this))]: 301, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012E" + }, undefined, false, undefined, this))]: 302, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012F" + }, undefined, false, undefined, this))]: 303, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0130" + }, undefined, false, undefined, this))]: 304, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0131" + }, undefined, false, undefined, this))]: 305, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0132" + }, undefined, false, undefined, this))]: 306, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0133" + }, undefined, false, undefined, this))]: 307, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0134" + }, undefined, false, undefined, this))]: 308, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0135" + }, undefined, false, undefined, this))]: 309, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0136" + }, undefined, false, undefined, this))]: 310, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0137" + }, undefined, false, undefined, this))]: 311, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0138" + }, undefined, false, undefined, this))]: 312, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0139" + }, undefined, false, undefined, this))]: 313, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013A" + }, undefined, false, undefined, this))]: 314, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013B" + }, undefined, false, undefined, this))]: 315, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013C" + }, undefined, false, undefined, this))]: 316, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013D" + }, undefined, false, undefined, this))]: 317, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013E" + }, undefined, false, undefined, this))]: 318, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013F" + }, undefined, false, undefined, this))]: 319, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0140" + }, undefined, false, undefined, this))]: 320, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0141" + }, undefined, false, undefined, this))]: 321, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0142" + }, undefined, false, undefined, this))]: 322, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0143" + }, undefined, false, undefined, this))]: 323, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0144" + }, undefined, false, undefined, this))]: 324, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0145" + }, undefined, false, undefined, this))]: 325, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0146" + }, undefined, false, undefined, this))]: 326, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0147" + }, undefined, false, undefined, this))]: 327, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0148" + }, undefined, false, undefined, this))]: 328, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0149" + }, undefined, false, undefined, this))]: 329, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014A" + }, undefined, false, undefined, this))]: 330, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014B" + }, undefined, false, undefined, this))]: 331, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014C" + }, undefined, false, undefined, this))]: 332, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014D" + }, undefined, false, undefined, this))]: 333, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014E" + }, undefined, false, undefined, this))]: 334, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014F" + }, undefined, false, undefined, this))]: 335, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0150" + }, undefined, false, undefined, this))]: 336, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0151" + }, undefined, false, undefined, this))]: 337, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0152" + }, undefined, false, undefined, this))]: 338, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0153" + }, undefined, false, undefined, this))]: 339, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0154" + }, undefined, false, undefined, this))]: 340, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0155" + }, undefined, false, undefined, this))]: 341, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0156" + }, undefined, false, undefined, this))]: 342, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0157" + }, undefined, false, undefined, this))]: 343, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0158" + }, undefined, false, undefined, this))]: 344, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0159" + }, undefined, false, undefined, this))]: 345, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015A" + }, undefined, false, undefined, this))]: 346, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015B" + }, undefined, false, undefined, this))]: 347, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015C" + }, undefined, false, undefined, this))]: 348, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015D" + }, undefined, false, undefined, this))]: 349, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015E" + }, undefined, false, undefined, this))]: 350, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015F" + }, undefined, false, undefined, this))]: 351, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0160" + }, undefined, false, undefined, this))]: 352, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0161" + }, undefined, false, undefined, this))]: 353, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0162" + }, undefined, false, undefined, this))]: 354, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0163" + }, undefined, false, undefined, this))]: 355, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0164" + }, undefined, false, undefined, this))]: 356, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0165" + }, undefined, false, undefined, this))]: 357, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0166" + }, undefined, false, undefined, this))]: 358, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0167" + }, undefined, false, undefined, this))]: 359, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0168" + }, undefined, false, undefined, this))]: 360, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0169" + }, undefined, false, undefined, this))]: 361, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016A" + }, undefined, false, undefined, this))]: 362, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016B" + }, undefined, false, undefined, this))]: 363, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016C" + }, undefined, false, undefined, this))]: 364, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016D" + }, undefined, false, undefined, this))]: 365, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016E" + }, undefined, false, undefined, this))]: 366, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016F" + }, undefined, false, undefined, this))]: 367, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0170" + }, undefined, false, undefined, this))]: 368, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0171" + }, undefined, false, undefined, this))]: 369, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0172" + }, undefined, false, undefined, this))]: 370, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0173" + }, undefined, false, undefined, this))]: 371, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0174" + }, undefined, false, undefined, this))]: 372, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0175" + }, undefined, false, undefined, this))]: 373, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0176" + }, undefined, false, undefined, this))]: 374, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0177" + }, undefined, false, undefined, this))]: 375, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0178" + }, undefined, false, undefined, this))]: 376, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0179" + }, undefined, false, undefined, this))]: 377, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017A" + }, undefined, false, undefined, this))]: 378, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017B" + }, undefined, false, undefined, this))]: 379, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017C" + }, undefined, false, undefined, this))]: 380, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017D" + }, undefined, false, undefined, this))]: 381, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017E" + }, undefined, false, undefined, this))]: 382, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017F" + }, undefined, false, undefined, this))]: 383, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0180" + }, undefined, false, undefined, this))]: 384, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0181" + }, undefined, false, undefined, this))]: 385, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0182" + }, undefined, false, undefined, this))]: 386, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0183" + }, undefined, false, undefined, this))]: 387, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0184" + }, undefined, false, undefined, this))]: 388, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0185" + }, undefined, false, undefined, this))]: 389, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0186" + }, undefined, false, undefined, this))]: 390, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0187" + }, undefined, false, undefined, this))]: 391, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0188" + }, undefined, false, undefined, this))]: 392, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0189" + }, undefined, false, undefined, this))]: 393, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018A" + }, undefined, false, undefined, this))]: 394, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018B" + }, undefined, false, undefined, this))]: 395, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018C" + }, undefined, false, undefined, this))]: 396, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018D" + }, undefined, false, undefined, this))]: 397, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018E" + }, undefined, false, undefined, this))]: 398, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018F" + }, undefined, false, undefined, this))]: 399, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0190" + }, undefined, false, undefined, this))]: 400, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0191" + }, undefined, false, undefined, this))]: 401, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0192" + }, undefined, false, undefined, this))]: 402, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0193" + }, undefined, false, undefined, this))]: 403, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0194" + }, undefined, false, undefined, this))]: 404, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0195" + }, undefined, false, undefined, this))]: 405, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0196" + }, undefined, false, undefined, this))]: 406, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0197" + }, undefined, false, undefined, this))]: 407, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0198" + }, undefined, false, undefined, this))]: 408, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0199" + }, undefined, false, undefined, this))]: 409, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019A" + }, undefined, false, undefined, this))]: 410, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019B" + }, undefined, false, undefined, this))]: 411, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019C" + }, undefined, false, undefined, this))]: 412, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019D" + }, undefined, false, undefined, this))]: 413, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019E" + }, undefined, false, undefined, this))]: 414, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019F" + }, undefined, false, undefined, this))]: 415, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A0" + }, undefined, false, undefined, this))]: 416, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A1" + }, undefined, false, undefined, this))]: 417, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A2" + }, undefined, false, undefined, this))]: 418, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A3" + }, undefined, false, undefined, this))]: 419, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A4" + }, undefined, false, undefined, this))]: 420, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A5" + }, undefined, false, undefined, this))]: 421, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A6" + }, undefined, false, undefined, this))]: 422, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A7" + }, undefined, false, undefined, this))]: 423, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A8" + }, undefined, false, undefined, this))]: 424, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A9" + }, undefined, false, undefined, this))]: 425, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AA" + }, undefined, false, undefined, this))]: 426, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AB" + }, undefined, false, undefined, this))]: 427, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AC" + }, undefined, false, undefined, this))]: 428, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AD" + }, undefined, false, undefined, this))]: 429, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AE" + }, undefined, false, undefined, this))]: 430, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AF" + }, undefined, false, undefined, this))]: 431, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B0" + }, undefined, false, undefined, this))]: 432, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B1" + }, undefined, false, undefined, this))]: 433, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B2" + }, undefined, false, undefined, this))]: 434, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B3" + }, undefined, false, undefined, this))]: 435, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B4" + }, undefined, false, undefined, this))]: 436, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B5" + }, undefined, false, undefined, this))]: 437, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B6" + }, undefined, false, undefined, this))]: 438, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B7" + }, undefined, false, undefined, this))]: 439, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B8" + }, undefined, false, undefined, this))]: 440, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B9" + }, undefined, false, undefined, this))]: 441, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BA" + }, undefined, false, undefined, this))]: 442, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BB" + }, undefined, false, undefined, this))]: 443, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BC" + }, undefined, false, undefined, this))]: 444, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BD" + }, undefined, false, undefined, this))]: 445, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BE" + }, undefined, false, undefined, this))]: 446, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BF" + }, undefined, false, undefined, this))]: 447, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C0" + }, undefined, false, undefined, this))]: 448, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C1" + }, undefined, false, undefined, this))]: 449, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C2" + }, undefined, false, undefined, this))]: 450, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C3" + }, undefined, false, undefined, this))]: 451, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C4" + }, undefined, false, undefined, this))]: 452, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C5" + }, undefined, false, undefined, this))]: 453, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C6" + }, undefined, false, undefined, this))]: 454, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C7" + }, undefined, false, undefined, this))]: 455, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C8" + }, undefined, false, undefined, this))]: 456, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C9" + }, undefined, false, undefined, this))]: 457, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CA" + }, undefined, false, undefined, this))]: 458, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CB" + }, undefined, false, undefined, this))]: 459, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CC" + }, undefined, false, undefined, this))]: 460, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CD" + }, undefined, false, undefined, this))]: 461, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CE" + }, undefined, false, undefined, this))]: 462, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CF" + }, undefined, false, undefined, this))]: 463, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D0" + }, undefined, false, undefined, this))]: 464, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D1" + }, undefined, false, undefined, this))]: 465, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D2" + }, undefined, false, undefined, this))]: 466, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D3" + }, undefined, false, undefined, this))]: 467, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D4" + }, undefined, false, undefined, this))]: 468, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D5" + }, undefined, false, undefined, this))]: 469, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D6" + }, undefined, false, undefined, this))]: 470, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D7" + }, undefined, false, undefined, this))]: 471, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D8" + }, undefined, false, undefined, this))]: 472, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D9" + }, undefined, false, undefined, this))]: 473, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DA" + }, undefined, false, undefined, this))]: 474, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DB" + }, undefined, false, undefined, this))]: 475, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DC" + }, undefined, false, undefined, this))]: 476, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DD" + }, undefined, false, undefined, this))]: 477, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DE" + }, undefined, false, undefined, this))]: 478, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DF" + }, undefined, false, undefined, this))]: 479, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E0" + }, undefined, false, undefined, this))]: 480, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E1" + }, undefined, false, undefined, this))]: 481, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E2" + }, undefined, false, undefined, this))]: 482, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E3" + }, undefined, false, undefined, this))]: 483, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E4" + }, undefined, false, undefined, this))]: 484, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E5" + }, undefined, false, undefined, this))]: 485, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E6" + }, undefined, false, undefined, this))]: 486, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E7" + }, undefined, false, undefined, this))]: 487, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E8" + }, undefined, false, undefined, this))]: 488, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E9" + }, undefined, false, undefined, this))]: 489, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EA" + }, undefined, false, undefined, this))]: 490, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EB" + }, undefined, false, undefined, this))]: 491, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EC" + }, undefined, false, undefined, this))]: 492, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01ED" + }, undefined, false, undefined, this))]: 493, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EE" + }, undefined, false, undefined, this))]: 494, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EF" + }, undefined, false, undefined, this))]: 495, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F0" + }, undefined, false, undefined, this))]: 496, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F1" + }, undefined, false, undefined, this))]: 497, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F2" + }, undefined, false, undefined, this))]: 498, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F3" + }, undefined, false, undefined, this))]: 499, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F4" + }, undefined, false, undefined, this))]: 500, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F5" + }, undefined, false, undefined, this))]: 501, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F6" + }, undefined, false, undefined, this))]: 502, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F7" + }, undefined, false, undefined, this))]: 503, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F8" + }, undefined, false, undefined, this))]: 504, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F9" + }, undefined, false, undefined, this))]: 505, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FA" + }, undefined, false, undefined, this))]: 506, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FB" + }, undefined, false, undefined, this))]: 507, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FC" + }, undefined, false, undefined, this))]: 508, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FD" + }, undefined, false, undefined, this))]: 509, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FE" + }, undefined, false, undefined, this))]: 510, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FF" + }, undefined, false, undefined, this))]: 511, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0200" + }, undefined, false, undefined, this))]: 512, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0201" + }, undefined, false, undefined, this))]: 513, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0202" + }, undefined, false, undefined, this))]: 514, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0203" + }, undefined, false, undefined, this))]: 515, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0204" + }, undefined, false, undefined, this))]: 516, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0205" + }, undefined, false, undefined, this))]: 517, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0206" + }, undefined, false, undefined, this))]: 518, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0207" + }, undefined, false, undefined, this))]: 519, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0208" + }, undefined, false, undefined, this))]: 520, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0209" + }, undefined, false, undefined, this))]: 521, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020A" + }, undefined, false, undefined, this))]: 522, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020B" + }, undefined, false, undefined, this))]: 523, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020C" + }, undefined, false, undefined, this))]: 524, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020D" + }, undefined, false, undefined, this))]: 525, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020E" + }, undefined, false, undefined, this))]: 526, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020F" + }, undefined, false, undefined, this))]: 527, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0210" + }, undefined, false, undefined, this))]: 528, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0211" + }, undefined, false, undefined, this))]: 529, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0212" + }, undefined, false, undefined, this))]: 530, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0213" + }, undefined, false, undefined, this))]: 531, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0214" + }, undefined, false, undefined, this))]: 532, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0215" + }, undefined, false, undefined, this))]: 533, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0216" + }, undefined, false, undefined, this))]: 534, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0217" + }, undefined, false, undefined, this))]: 535, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0218" + }, undefined, false, undefined, this))]: 536, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0219" + }, undefined, false, undefined, this))]: 537, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021A" + }, undefined, false, undefined, this))]: 538, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021B" + }, undefined, false, undefined, this))]: 539, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021C" + }, undefined, false, undefined, this))]: 540, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021D" + }, undefined, false, undefined, this))]: 541, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021E" + }, undefined, false, undefined, this))]: 542, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021F" + }, undefined, false, undefined, this))]: 543, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0220" + }, undefined, false, undefined, this))]: 544, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0221" + }, undefined, false, undefined, this))]: 545, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0222" + }, undefined, false, undefined, this))]: 546, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0223" + }, undefined, false, undefined, this))]: 547, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0224" + }, undefined, false, undefined, this))]: 548, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0225" + }, undefined, false, undefined, this))]: 549, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0226" + }, undefined, false, undefined, this))]: 550, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0227" + }, undefined, false, undefined, this))]: 551, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0228" + }, undefined, false, undefined, this))]: 552, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0229" + }, undefined, false, undefined, this))]: 553, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022A" + }, undefined, false, undefined, this))]: 554, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022B" + }, undefined, false, undefined, this))]: 555, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022C" + }, undefined, false, undefined, this))]: 556, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022D" + }, undefined, false, undefined, this))]: 557, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022E" + }, undefined, false, undefined, this))]: 558, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022F" + }, undefined, false, undefined, this))]: 559, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0230" + }, undefined, false, undefined, this))]: 560, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0231" + }, undefined, false, undefined, this))]: 561, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0232" + }, undefined, false, undefined, this))]: 562, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0233" + }, undefined, false, undefined, this))]: 563, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0234" + }, undefined, false, undefined, this))]: 564, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0235" + }, undefined, false, undefined, this))]: 565, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0236" + }, undefined, false, undefined, this))]: 566, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0237" + }, undefined, false, undefined, this))]: 567, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0238" + }, undefined, false, undefined, this))]: 568, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0239" + }, undefined, false, undefined, this))]: 569, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023A" + }, undefined, false, undefined, this))]: 570, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023B" + }, undefined, false, undefined, this))]: 571, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023C" + }, undefined, false, undefined, this))]: 572, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023D" + }, undefined, false, undefined, this))]: 573, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023E" + }, undefined, false, undefined, this))]: 574, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023F" + }, undefined, false, undefined, this))]: 575, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0240" + }, undefined, false, undefined, this))]: 576, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0241" + }, undefined, false, undefined, this))]: 577, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0242" + }, undefined, false, undefined, this))]: 578, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0243" + }, undefined, false, undefined, this))]: 579, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0244" + }, undefined, false, undefined, this))]: 580, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0245" + }, undefined, false, undefined, this))]: 581, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0246" + }, undefined, false, undefined, this))]: 582, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0247" + }, undefined, false, undefined, this))]: 583, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0248" + }, undefined, false, undefined, this))]: 584, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0249" + }, undefined, false, undefined, this))]: 585, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024A" + }, undefined, false, undefined, this))]: 586, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024B" + }, undefined, false, undefined, this))]: 587, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024C" + }, undefined, false, undefined, this))]: 588, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024D" + }, undefined, false, undefined, this))]: 589, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024E" + }, undefined, false, undefined, this))]: 590, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024F" + }, undefined, false, undefined, this))]: 591, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0250" + }, undefined, false, undefined, this))]: 592, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0251" + }, undefined, false, undefined, this))]: 593, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0252" + }, undefined, false, undefined, this))]: 594, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0253" + }, undefined, false, undefined, this))]: 595, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0254" + }, undefined, false, undefined, this))]: 596, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0255" + }, undefined, false, undefined, this))]: 597, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0256" + }, undefined, false, undefined, this))]: 598, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0257" + }, undefined, false, undefined, this))]: 599, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0258" + }, undefined, false, undefined, this))]: 600, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0259" + }, undefined, false, undefined, this))]: 601, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025A" + }, undefined, false, undefined, this))]: 602, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025B" + }, undefined, false, undefined, this))]: 603, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025C" + }, undefined, false, undefined, this))]: 604, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025D" + }, undefined, false, undefined, this))]: 605, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025E" + }, undefined, false, undefined, this))]: 606, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025F" + }, undefined, false, undefined, this))]: 607, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0260" + }, undefined, false, undefined, this))]: 608, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0261" + }, undefined, false, undefined, this))]: 609, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0262" + }, undefined, false, undefined, this))]: 610, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0263" + }, undefined, false, undefined, this))]: 611, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0264" + }, undefined, false, undefined, this))]: 612, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0265" + }, undefined, false, undefined, this))]: 613, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0266" + }, undefined, false, undefined, this))]: 614, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0267" + }, undefined, false, undefined, this))]: 615, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0268" + }, undefined, false, undefined, this))]: 616, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0269" + }, undefined, false, undefined, this))]: 617, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026A" + }, undefined, false, undefined, this))]: 618, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026B" + }, undefined, false, undefined, this))]: 619, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026C" + }, undefined, false, undefined, this))]: 620, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026D" + }, undefined, false, undefined, this))]: 621, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026E" + }, undefined, false, undefined, this))]: 622, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026F" + }, undefined, false, undefined, this))]: 623, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0270" + }, undefined, false, undefined, this))]: 624, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0271" + }, undefined, false, undefined, this))]: 625, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0272" + }, undefined, false, undefined, this))]: 626, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0273" + }, undefined, false, undefined, this))]: 627, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0274" + }, undefined, false, undefined, this))]: 628, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0275" + }, undefined, false, undefined, this))]: 629, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0276" + }, undefined, false, undefined, this))]: 630, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0277" + }, undefined, false, undefined, this))]: 631, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0278" + }, undefined, false, undefined, this))]: 632, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0279" + }, undefined, false, undefined, this))]: 633, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027A" + }, undefined, false, undefined, this))]: 634, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027B" + }, undefined, false, undefined, this))]: 635, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027C" + }, undefined, false, undefined, this))]: 636, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027D" + }, undefined, false, undefined, this))]: 637, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027E" + }, undefined, false, undefined, this))]: 638, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027F" + }, undefined, false, undefined, this))]: 639, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0280" + }, undefined, false, undefined, this))]: 640, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0281" + }, undefined, false, undefined, this))]: 641, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0282" + }, undefined, false, undefined, this))]: 642, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0283" + }, undefined, false, undefined, this))]: 643, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0284" + }, undefined, false, undefined, this))]: 644, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0285" + }, undefined, false, undefined, this))]: 645, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0286" + }, undefined, false, undefined, this))]: 646, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0287" + }, undefined, false, undefined, this))]: 647, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0288" + }, undefined, false, undefined, this))]: 648, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0289" + }, undefined, false, undefined, this))]: 649, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028A" + }, undefined, false, undefined, this))]: 650, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028B" + }, undefined, false, undefined, this))]: 651, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028C" + }, undefined, false, undefined, this))]: 652, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028D" + }, undefined, false, undefined, this))]: 653, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028E" + }, undefined, false, undefined, this))]: 654, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028F" + }, undefined, false, undefined, this))]: 655, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0290" + }, undefined, false, undefined, this))]: 656, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0291" + }, undefined, false, undefined, this))]: 657, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0292" + }, undefined, false, undefined, this))]: 658, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0293" + }, undefined, false, undefined, this))]: 659, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0294" + }, undefined, false, undefined, this))]: 660 + }; + function test() { + for (let rawKey in elements) { + var key = rawKey; + if (rawKey.startsWith("&")) { + var txt = document.createElement("textarea"); + txt.innerHTML = rawKey; + key = txt.value; + } + console.assert(elements[rawKey] === key.codePointAt(0), `${key} is not ${elements[rawKey]}`); + } + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/jsx-entities.jsx.map diff --git a/test/snapshots/jsx-entities.hmr.jsx b/test/snapshots/jsx-entities.hmr.jsx new file mode 100644 index 000000000..3bad6ca8d --- /dev/null +++ b/test/snapshots/jsx-entities.hmr.jsx @@ -0,0 +1,2790 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; +(hmr._load = function() { + const elements = { + [ReactDOM.renderToString(jsx(JSXFrag, { + children: '"' + }, undefined, false, undefined, this))]: 34, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "&" + }, undefined, false, undefined, this))]: 38, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "'" + }, undefined, false, undefined, this))]: 39, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "<" + }, undefined, false, undefined, this))]: 60, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ">" + }, undefined, false, undefined, this))]: 62, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA0" + }, undefined, false, undefined, this))]: 160, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA1" + }, undefined, false, undefined, this))]: 161, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA2" + }, undefined, false, undefined, this))]: 162, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA3" + }, undefined, false, undefined, this))]: 163, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA4" + }, undefined, false, undefined, this))]: 164, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA5" + }, undefined, false, undefined, this))]: 165, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA6" + }, undefined, false, undefined, this))]: 166, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA7" + }, undefined, false, undefined, this))]: 167, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA8" + }, undefined, false, undefined, this))]: 168, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA9" + }, undefined, false, undefined, this))]: 169, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAA" + }, undefined, false, undefined, this))]: 170, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAB" + }, undefined, false, undefined, this))]: 171, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAC" + }, undefined, false, undefined, this))]: 172, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAD" + }, undefined, false, undefined, this))]: 173, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAE" + }, undefined, false, undefined, this))]: 174, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAF" + }, undefined, false, undefined, this))]: 175, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB0" + }, undefined, false, undefined, this))]: 176, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB1" + }, undefined, false, undefined, this))]: 177, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB2" + }, undefined, false, undefined, this))]: 178, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB3" + }, undefined, false, undefined, this))]: 179, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB4" + }, undefined, false, undefined, this))]: 180, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB5" + }, undefined, false, undefined, this))]: 181, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB6" + }, undefined, false, undefined, this))]: 182, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB7" + }, undefined, false, undefined, this))]: 183, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB8" + }, undefined, false, undefined, this))]: 184, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB9" + }, undefined, false, undefined, this))]: 185, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBA" + }, undefined, false, undefined, this))]: 186, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBB" + }, undefined, false, undefined, this))]: 187, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBC" + }, undefined, false, undefined, this))]: 188, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBD" + }, undefined, false, undefined, this))]: 189, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBE" + }, undefined, false, undefined, this))]: 190, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBF" + }, undefined, false, undefined, this))]: 191, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC0" + }, undefined, false, undefined, this))]: 192, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC1" + }, undefined, false, undefined, this))]: 193, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC2" + }, undefined, false, undefined, this))]: 194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC3" + }, undefined, false, undefined, this))]: 195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC4" + }, undefined, false, undefined, this))]: 196, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC5" + }, undefined, false, undefined, this))]: 197, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC6" + }, undefined, false, undefined, this))]: 198, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC7" + }, undefined, false, undefined, this))]: 199, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC8" + }, undefined, false, undefined, this))]: 200, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC9" + }, undefined, false, undefined, this))]: 201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCA" + }, undefined, false, undefined, this))]: 202, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCB" + }, undefined, false, undefined, this))]: 203, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCC" + }, undefined, false, undefined, this))]: 204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCD" + }, undefined, false, undefined, this))]: 205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCE" + }, undefined, false, undefined, this))]: 206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCF" + }, undefined, false, undefined, this))]: 207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD0" + }, undefined, false, undefined, this))]: 208, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD1" + }, undefined, false, undefined, this))]: 209, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD2" + }, undefined, false, undefined, this))]: 210, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD3" + }, undefined, false, undefined, this))]: 211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD4" + }, undefined, false, undefined, this))]: 212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD5" + }, undefined, false, undefined, this))]: 213, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD6" + }, undefined, false, undefined, this))]: 214, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD7" + }, undefined, false, undefined, this))]: 215, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD8" + }, undefined, false, undefined, this))]: 216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD9" + }, undefined, false, undefined, this))]: 217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDA" + }, undefined, false, undefined, this))]: 218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDB" + }, undefined, false, undefined, this))]: 219, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDC" + }, undefined, false, undefined, this))]: 220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDD" + }, undefined, false, undefined, this))]: 221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDE" + }, undefined, false, undefined, this))]: 222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDF" + }, undefined, false, undefined, this))]: 223, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE0" + }, undefined, false, undefined, this))]: 224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE1" + }, undefined, false, undefined, this))]: 225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE2" + }, undefined, false, undefined, this))]: 226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE3" + }, undefined, false, undefined, this))]: 227, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE4" + }, undefined, false, undefined, this))]: 228, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE5" + }, undefined, false, undefined, this))]: 229, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE6" + }, undefined, false, undefined, this))]: 230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE7" + }, undefined, false, undefined, this))]: 231, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE8" + }, undefined, false, undefined, this))]: 232, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE9" + }, undefined, false, undefined, this))]: 233, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEA" + }, undefined, false, undefined, this))]: 234, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEB" + }, undefined, false, undefined, this))]: 235, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEC" + }, undefined, false, undefined, this))]: 236, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xED" + }, undefined, false, undefined, this))]: 237, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEE" + }, undefined, false, undefined, this))]: 238, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEF" + }, undefined, false, undefined, this))]: 239, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF0" + }, undefined, false, undefined, this))]: 240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF1" + }, undefined, false, undefined, this))]: 241, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF2" + }, undefined, false, undefined, this))]: 242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF3" + }, undefined, false, undefined, this))]: 243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF4" + }, undefined, false, undefined, this))]: 244, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF5" + }, undefined, false, undefined, this))]: 245, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF6" + }, undefined, false, undefined, this))]: 246, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF7" + }, undefined, false, undefined, this))]: 247, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF8" + }, undefined, false, undefined, this))]: 248, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF9" + }, undefined, false, undefined, this))]: 249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFA" + }, undefined, false, undefined, this))]: 250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFB" + }, undefined, false, undefined, this))]: 251, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFC" + }, undefined, false, undefined, this))]: 252, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFD" + }, undefined, false, undefined, this))]: 253, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFE" + }, undefined, false, undefined, this))]: 254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFF" + }, undefined, false, undefined, this))]: 255, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0152" + }, undefined, false, undefined, this))]: 338, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0153" + }, undefined, false, undefined, this))]: 339, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0160" + }, undefined, false, undefined, this))]: 352, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0161" + }, undefined, false, undefined, this))]: 353, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0178" + }, undefined, false, undefined, this))]: 376, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0192" + }, undefined, false, undefined, this))]: 402, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u02C6" + }, undefined, false, undefined, this))]: 710, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u02DC" + }, undefined, false, undefined, this))]: 732, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0391" + }, undefined, false, undefined, this))]: 913, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0392" + }, undefined, false, undefined, this))]: 914, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0393" + }, undefined, false, undefined, this))]: 915, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0394" + }, undefined, false, undefined, this))]: 916, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0395" + }, undefined, false, undefined, this))]: 917, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0396" + }, undefined, false, undefined, this))]: 918, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0397" + }, undefined, false, undefined, this))]: 919, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0398" + }, undefined, false, undefined, this))]: 920, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0399" + }, undefined, false, undefined, this))]: 921, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039A" + }, undefined, false, undefined, this))]: 922, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039B" + }, undefined, false, undefined, this))]: 923, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039C" + }, undefined, false, undefined, this))]: 924, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039D" + }, undefined, false, undefined, this))]: 925, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039E" + }, undefined, false, undefined, this))]: 926, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039F" + }, undefined, false, undefined, this))]: 927, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A0" + }, undefined, false, undefined, this))]: 928, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A1" + }, undefined, false, undefined, this))]: 929, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A3" + }, undefined, false, undefined, this))]: 931, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A4" + }, undefined, false, undefined, this))]: 932, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A5" + }, undefined, false, undefined, this))]: 933, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A6" + }, undefined, false, undefined, this))]: 934, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A7" + }, undefined, false, undefined, this))]: 935, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A8" + }, undefined, false, undefined, this))]: 936, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A9" + }, undefined, false, undefined, this))]: 937, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B1" + }, undefined, false, undefined, this))]: 945, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B2" + }, undefined, false, undefined, this))]: 946, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B3" + }, undefined, false, undefined, this))]: 947, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B4" + }, undefined, false, undefined, this))]: 948, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B5" + }, undefined, false, undefined, this))]: 949, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B6" + }, undefined, false, undefined, this))]: 950, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B7" + }, undefined, false, undefined, this))]: 951, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B8" + }, undefined, false, undefined, this))]: 952, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B9" + }, undefined, false, undefined, this))]: 953, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BA" + }, undefined, false, undefined, this))]: 954, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BB" + }, undefined, false, undefined, this))]: 955, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BC" + }, undefined, false, undefined, this))]: 956, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BD" + }, undefined, false, undefined, this))]: 957, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BE" + }, undefined, false, undefined, this))]: 958, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BF" + }, undefined, false, undefined, this))]: 959, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C0" + }, undefined, false, undefined, this))]: 960, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C1" + }, undefined, false, undefined, this))]: 961, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C2" + }, undefined, false, undefined, this))]: 962, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C3" + }, undefined, false, undefined, this))]: 963, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C4" + }, undefined, false, undefined, this))]: 964, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C5" + }, undefined, false, undefined, this))]: 965, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C6" + }, undefined, false, undefined, this))]: 966, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C7" + }, undefined, false, undefined, this))]: 967, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C8" + }, undefined, false, undefined, this))]: 968, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C9" + }, undefined, false, undefined, this))]: 969, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D1" + }, undefined, false, undefined, this))]: 977, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D2" + }, undefined, false, undefined, this))]: 978, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D6" + }, undefined, false, undefined, this))]: 982, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2002" + }, undefined, false, undefined, this))]: 8194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2003" + }, undefined, false, undefined, this))]: 8195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2009" + }, undefined, false, undefined, this))]: 8201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200C" + }, undefined, false, undefined, this))]: 8204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200D" + }, undefined, false, undefined, this))]: 8205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200E" + }, undefined, false, undefined, this))]: 8206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200F" + }, undefined, false, undefined, this))]: 8207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2013" + }, undefined, false, undefined, this))]: 8211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2014" + }, undefined, false, undefined, this))]: 8212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2018" + }, undefined, false, undefined, this))]: 8216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2019" + }, undefined, false, undefined, this))]: 8217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201A" + }, undefined, false, undefined, this))]: 8218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201C" + }, undefined, false, undefined, this))]: 8220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201D" + }, undefined, false, undefined, this))]: 8221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201E" + }, undefined, false, undefined, this))]: 8222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2020" + }, undefined, false, undefined, this))]: 8224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2021" + }, undefined, false, undefined, this))]: 8225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2022" + }, undefined, false, undefined, this))]: 8226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2026" + }, undefined, false, undefined, this))]: 8230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2030" + }, undefined, false, undefined, this))]: 8240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2032" + }, undefined, false, undefined, this))]: 8242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2033" + }, undefined, false, undefined, this))]: 8243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2039" + }, undefined, false, undefined, this))]: 8249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u203A" + }, undefined, false, undefined, this))]: 8250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u203E" + }, undefined, false, undefined, this))]: 8254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2044" + }, undefined, false, undefined, this))]: 8260, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u20AC" + }, undefined, false, undefined, this))]: 8364, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2111" + }, undefined, false, undefined, this))]: 8465, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2118" + }, undefined, false, undefined, this))]: 8472, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u211C" + }, undefined, false, undefined, this))]: 8476, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2122" + }, undefined, false, undefined, this))]: 8482, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2135" + }, undefined, false, undefined, this))]: 8501, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2190" + }, undefined, false, undefined, this))]: 8592, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2191" + }, undefined, false, undefined, this))]: 8593, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2192" + }, undefined, false, undefined, this))]: 8594, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2193" + }, undefined, false, undefined, this))]: 8595, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2194" + }, undefined, false, undefined, this))]: 8596, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21B5" + }, undefined, false, undefined, this))]: 8629, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D0" + }, undefined, false, undefined, this))]: 8656, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D1" + }, undefined, false, undefined, this))]: 8657, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D2" + }, undefined, false, undefined, this))]: 8658, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D3" + }, undefined, false, undefined, this))]: 8659, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D4" + }, undefined, false, undefined, this))]: 8660, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2200" + }, undefined, false, undefined, this))]: 8704, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2202" + }, undefined, false, undefined, this))]: 8706, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2203" + }, undefined, false, undefined, this))]: 8707, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2205" + }, undefined, false, undefined, this))]: 8709, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2207" + }, undefined, false, undefined, this))]: 8711, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2208" + }, undefined, false, undefined, this))]: 8712, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2209" + }, undefined, false, undefined, this))]: 8713, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u220B" + }, undefined, false, undefined, this))]: 8715, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u220F" + }, undefined, false, undefined, this))]: 8719, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2211" + }, undefined, false, undefined, this))]: 8721, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2212" + }, undefined, false, undefined, this))]: 8722, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2217" + }, undefined, false, undefined, this))]: 8727, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221A" + }, undefined, false, undefined, this))]: 8730, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221D" + }, undefined, false, undefined, this))]: 8733, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221E" + }, undefined, false, undefined, this))]: 8734, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2220" + }, undefined, false, undefined, this))]: 8736, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2227" + }, undefined, false, undefined, this))]: 8743, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2228" + }, undefined, false, undefined, this))]: 8744, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2229" + }, undefined, false, undefined, this))]: 8745, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u222A" + }, undefined, false, undefined, this))]: 8746, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u222B" + }, undefined, false, undefined, this))]: 8747, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2234" + }, undefined, false, undefined, this))]: 8756, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u223C" + }, undefined, false, undefined, this))]: 8764, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2245" + }, undefined, false, undefined, this))]: 8773, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2248" + }, undefined, false, undefined, this))]: 8776, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2260" + }, undefined, false, undefined, this))]: 8800, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2261" + }, undefined, false, undefined, this))]: 8801, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2264" + }, undefined, false, undefined, this))]: 8804, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2265" + }, undefined, false, undefined, this))]: 8805, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2282" + }, undefined, false, undefined, this))]: 8834, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2283" + }, undefined, false, undefined, this))]: 8835, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2284" + }, undefined, false, undefined, this))]: 8836, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2286" + }, undefined, false, undefined, this))]: 8838, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2287" + }, undefined, false, undefined, this))]: 8839, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2295" + }, undefined, false, undefined, this))]: 8853, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2297" + }, undefined, false, undefined, this))]: 8855, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u22A5" + }, undefined, false, undefined, this))]: 8869, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u22C5" + }, undefined, false, undefined, this))]: 8901, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2308" + }, undefined, false, undefined, this))]: 8968, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2309" + }, undefined, false, undefined, this))]: 8969, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u230A" + }, undefined, false, undefined, this))]: 8970, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u230B" + }, undefined, false, undefined, this))]: 8971, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2329" + }, undefined, false, undefined, this))]: 9001, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u232A" + }, undefined, false, undefined, this))]: 9002, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u25CA" + }, undefined, false, undefined, this))]: 9674, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2660" + }, undefined, false, undefined, this))]: 9824, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2663" + }, undefined, false, undefined, this))]: 9827, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2665" + }, undefined, false, undefined, this))]: 9829, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2666" + }, undefined, false, undefined, this))]: 9830, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x01" + }, undefined, false, undefined, this))]: 1, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x02" + }, undefined, false, undefined, this))]: 2, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x03" + }, undefined, false, undefined, this))]: 3, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x04" + }, undefined, false, undefined, this))]: 4, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x05" + }, undefined, false, undefined, this))]: 5, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x06" + }, undefined, false, undefined, this))]: 6, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x07" + }, undefined, false, undefined, this))]: 7, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\f" + }, undefined, false, undefined, this))]: 8, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\t" + }, undefined, false, undefined, this))]: 9, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ` +` + }, undefined, false, undefined, this))]: 10, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\v" + }, undefined, false, undefined, this))]: 11, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\f" + }, undefined, false, undefined, this))]: 12, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: `\r` + }, undefined, false, undefined, this))]: 13, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x0E" + }, undefined, false, undefined, this))]: 14, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x0F" + }, undefined, false, undefined, this))]: 15, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x10" + }, undefined, false, undefined, this))]: 16, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x11" + }, undefined, false, undefined, this))]: 17, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x12" + }, undefined, false, undefined, this))]: 18, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x13" + }, undefined, false, undefined, this))]: 19, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x14" + }, undefined, false, undefined, this))]: 20, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x15" + }, undefined, false, undefined, this))]: 21, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x16" + }, undefined, false, undefined, this))]: 22, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x17" + }, undefined, false, undefined, this))]: 23, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x18" + }, undefined, false, undefined, this))]: 24, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x19" + }, undefined, false, undefined, this))]: 25, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1A" + }, undefined, false, undefined, this))]: 26, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1B" + }, undefined, false, undefined, this))]: 27, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1C" + }, undefined, false, undefined, this))]: 28, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1D" + }, undefined, false, undefined, this))]: 29, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1E" + }, undefined, false, undefined, this))]: 30, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1F" + }, undefined, false, undefined, this))]: 31, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: " " + }, undefined, false, undefined, this))]: 32, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "!" + }, undefined, false, undefined, this))]: 33, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: '"' + }, undefined, false, undefined, this))]: 34, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "#" + }, undefined, false, undefined, this))]: 35, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "$" + }, undefined, false, undefined, this))]: 36, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "%" + }, undefined, false, undefined, this))]: 37, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "&" + }, undefined, false, undefined, this))]: 38, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "'" + }, undefined, false, undefined, this))]: 39, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "(" + }, undefined, false, undefined, this))]: 40, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ")" + }, undefined, false, undefined, this))]: 41, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "*" + }, undefined, false, undefined, this))]: 42, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "+" + }, undefined, false, undefined, this))]: 43, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "," + }, undefined, false, undefined, this))]: 44, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "-" + }, undefined, false, undefined, this))]: 45, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "." + }, undefined, false, undefined, this))]: 46, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "/" + }, undefined, false, undefined, this))]: 47, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "0" + }, undefined, false, undefined, this))]: 48, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "1" + }, undefined, false, undefined, this))]: 49, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "2" + }, undefined, false, undefined, this))]: 50, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "3" + }, undefined, false, undefined, this))]: 51, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "4" + }, undefined, false, undefined, this))]: 52, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "5" + }, undefined, false, undefined, this))]: 53, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "6" + }, undefined, false, undefined, this))]: 54, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "7" + }, undefined, false, undefined, this))]: 55, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "8" + }, undefined, false, undefined, this))]: 56, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "9" + }, undefined, false, undefined, this))]: 57, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ":" + }, undefined, false, undefined, this))]: 58, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ";" + }, undefined, false, undefined, this))]: 59, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "<" + }, undefined, false, undefined, this))]: 60, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "=" + }, undefined, false, undefined, this))]: 61, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ">" + }, undefined, false, undefined, this))]: 62, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "?" + }, undefined, false, undefined, this))]: 63, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "@" + }, undefined, false, undefined, this))]: 64, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "A" + }, undefined, false, undefined, this))]: 65, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "B" + }, undefined, false, undefined, this))]: 66, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "C" + }, undefined, false, undefined, this))]: 67, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "D" + }, undefined, false, undefined, this))]: 68, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "E" + }, undefined, false, undefined, this))]: 69, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "F" + }, undefined, false, undefined, this))]: 70, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "G" + }, undefined, false, undefined, this))]: 71, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "H" + }, undefined, false, undefined, this))]: 72, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "I" + }, undefined, false, undefined, this))]: 73, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "J" + }, undefined, false, undefined, this))]: 74, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "K" + }, undefined, false, undefined, this))]: 75, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "L" + }, undefined, false, undefined, this))]: 76, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "M" + }, undefined, false, undefined, this))]: 77, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "N" + }, undefined, false, undefined, this))]: 78, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "O" + }, undefined, false, undefined, this))]: 79, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "P" + }, undefined, false, undefined, this))]: 80, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Q" + }, undefined, false, undefined, this))]: 81, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "R" + }, undefined, false, undefined, this))]: 82, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "S" + }, undefined, false, undefined, this))]: 83, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "T" + }, undefined, false, undefined, this))]: 84, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "U" + }, undefined, false, undefined, this))]: 85, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "V" + }, undefined, false, undefined, this))]: 86, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "W" + }, undefined, false, undefined, this))]: 87, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "X" + }, undefined, false, undefined, this))]: 88, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Y" + }, undefined, false, undefined, this))]: 89, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Z" + }, undefined, false, undefined, this))]: 90, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "[" + }, undefined, false, undefined, this))]: 91, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\\" + }, undefined, false, undefined, this))]: 92, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "]" + }, undefined, false, undefined, this))]: 93, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "^" + }, undefined, false, undefined, this))]: 94, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "_" + }, undefined, false, undefined, this))]: 95, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "`" + }, undefined, false, undefined, this))]: 96, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "a" + }, undefined, false, undefined, this))]: 97, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "b" + }, undefined, false, undefined, this))]: 98, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "c" + }, undefined, false, undefined, this))]: 99, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "d" + }, undefined, false, undefined, this))]: 100, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "e" + }, undefined, false, undefined, this))]: 101, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "f" + }, undefined, false, undefined, this))]: 102, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "g" + }, undefined, false, undefined, this))]: 103, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "h" + }, undefined, false, undefined, this))]: 104, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "i" + }, undefined, false, undefined, this))]: 105, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "j" + }, undefined, false, undefined, this))]: 106, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "k" + }, undefined, false, undefined, this))]: 107, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "l" + }, undefined, false, undefined, this))]: 108, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "m" + }, undefined, false, undefined, this))]: 109, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "n" + }, undefined, false, undefined, this))]: 110, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "o" + }, undefined, false, undefined, this))]: 111, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "p" + }, undefined, false, undefined, this))]: 112, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "q" + }, undefined, false, undefined, this))]: 113, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "r" + }, undefined, false, undefined, this))]: 114, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "s" + }, undefined, false, undefined, this))]: 115, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "t" + }, undefined, false, undefined, this))]: 116, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "u" + }, undefined, false, undefined, this))]: 117, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "v" + }, undefined, false, undefined, this))]: 118, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "w" + }, undefined, false, undefined, this))]: 119, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "x" + }, undefined, false, undefined, this))]: 120, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "y" + }, undefined, false, undefined, this))]: 121, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "z" + }, undefined, false, undefined, this))]: 122, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "{" + }, undefined, false, undefined, this))]: 123, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "|" + }, undefined, false, undefined, this))]: 124, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "}" + }, undefined, false, undefined, this))]: 125, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "~" + }, undefined, false, undefined, this))]: 126, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x7F" + }, undefined, false, undefined, this))]: 127, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x80" + }, undefined, false, undefined, this))]: 128, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x81" + }, undefined, false, undefined, this))]: 129, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x82" + }, undefined, false, undefined, this))]: 130, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x83" + }, undefined, false, undefined, this))]: 131, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x84" + }, undefined, false, undefined, this))]: 132, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x85" + }, undefined, false, undefined, this))]: 133, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x86" + }, undefined, false, undefined, this))]: 134, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x87" + }, undefined, false, undefined, this))]: 135, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x88" + }, undefined, false, undefined, this))]: 136, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x89" + }, undefined, false, undefined, this))]: 137, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8A" + }, undefined, false, undefined, this))]: 138, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8B" + }, undefined, false, undefined, this))]: 139, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8C" + }, undefined, false, undefined, this))]: 140, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8D" + }, undefined, false, undefined, this))]: 141, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8E" + }, undefined, false, undefined, this))]: 142, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8F" + }, undefined, false, undefined, this))]: 143, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x90" + }, undefined, false, undefined, this))]: 144, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x91" + }, undefined, false, undefined, this))]: 145, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x92" + }, undefined, false, undefined, this))]: 146, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x93" + }, undefined, false, undefined, this))]: 147, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x94" + }, undefined, false, undefined, this))]: 148, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x95" + }, undefined, false, undefined, this))]: 149, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x96" + }, undefined, false, undefined, this))]: 150, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x97" + }, undefined, false, undefined, this))]: 151, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x98" + }, undefined, false, undefined, this))]: 152, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x99" + }, undefined, false, undefined, this))]: 153, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9A" + }, undefined, false, undefined, this))]: 154, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9B" + }, undefined, false, undefined, this))]: 155, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9C" + }, undefined, false, undefined, this))]: 156, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9D" + }, undefined, false, undefined, this))]: 157, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9E" + }, undefined, false, undefined, this))]: 158, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9F" + }, undefined, false, undefined, this))]: 159, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA0" + }, undefined, false, undefined, this))]: 160, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA1" + }, undefined, false, undefined, this))]: 161, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA2" + }, undefined, false, undefined, this))]: 162, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA3" + }, undefined, false, undefined, this))]: 163, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA4" + }, undefined, false, undefined, this))]: 164, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA5" + }, undefined, false, undefined, this))]: 165, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA6" + }, undefined, false, undefined, this))]: 166, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA7" + }, undefined, false, undefined, this))]: 167, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA8" + }, undefined, false, undefined, this))]: 168, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA9" + }, undefined, false, undefined, this))]: 169, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAA" + }, undefined, false, undefined, this))]: 170, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAB" + }, undefined, false, undefined, this))]: 171, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAC" + }, undefined, false, undefined, this))]: 172, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAD" + }, undefined, false, undefined, this))]: 173, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAE" + }, undefined, false, undefined, this))]: 174, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAF" + }, undefined, false, undefined, this))]: 175, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB0" + }, undefined, false, undefined, this))]: 176, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB1" + }, undefined, false, undefined, this))]: 177, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB2" + }, undefined, false, undefined, this))]: 178, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB3" + }, undefined, false, undefined, this))]: 179, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB4" + }, undefined, false, undefined, this))]: 180, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB5" + }, undefined, false, undefined, this))]: 181, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB6" + }, undefined, false, undefined, this))]: 182, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB7" + }, undefined, false, undefined, this))]: 183, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB8" + }, undefined, false, undefined, this))]: 184, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB9" + }, undefined, false, undefined, this))]: 185, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBA" + }, undefined, false, undefined, this))]: 186, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBB" + }, undefined, false, undefined, this))]: 187, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBC" + }, undefined, false, undefined, this))]: 188, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBD" + }, undefined, false, undefined, this))]: 189, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBE" + }, undefined, false, undefined, this))]: 190, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBF" + }, undefined, false, undefined, this))]: 191, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC0" + }, undefined, false, undefined, this))]: 192, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC1" + }, undefined, false, undefined, this))]: 193, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC2" + }, undefined, false, undefined, this))]: 194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC3" + }, undefined, false, undefined, this))]: 195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC4" + }, undefined, false, undefined, this))]: 196, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC5" + }, undefined, false, undefined, this))]: 197, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC6" + }, undefined, false, undefined, this))]: 198, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC7" + }, undefined, false, undefined, this))]: 199, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC8" + }, undefined, false, undefined, this))]: 200, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC9" + }, undefined, false, undefined, this))]: 201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCA" + }, undefined, false, undefined, this))]: 202, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCB" + }, undefined, false, undefined, this))]: 203, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCC" + }, undefined, false, undefined, this))]: 204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCD" + }, undefined, false, undefined, this))]: 205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCE" + }, undefined, false, undefined, this))]: 206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCF" + }, undefined, false, undefined, this))]: 207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD0" + }, undefined, false, undefined, this))]: 208, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD1" + }, undefined, false, undefined, this))]: 209, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD2" + }, undefined, false, undefined, this))]: 210, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD3" + }, undefined, false, undefined, this))]: 211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD4" + }, undefined, false, undefined, this))]: 212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD5" + }, undefined, false, undefined, this))]: 213, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD6" + }, undefined, false, undefined, this))]: 214, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD7" + }, undefined, false, undefined, this))]: 215, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD8" + }, undefined, false, undefined, this))]: 216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD9" + }, undefined, false, undefined, this))]: 217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDA" + }, undefined, false, undefined, this))]: 218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDB" + }, undefined, false, undefined, this))]: 219, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDC" + }, undefined, false, undefined, this))]: 220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDD" + }, undefined, false, undefined, this))]: 221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDE" + }, undefined, false, undefined, this))]: 222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDF" + }, undefined, false, undefined, this))]: 223, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE0" + }, undefined, false, undefined, this))]: 224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE1" + }, undefined, false, undefined, this))]: 225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE2" + }, undefined, false, undefined, this))]: 226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE3" + }, undefined, false, undefined, this))]: 227, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE4" + }, undefined, false, undefined, this))]: 228, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE5" + }, undefined, false, undefined, this))]: 229, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE6" + }, undefined, false, undefined, this))]: 230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE7" + }, undefined, false, undefined, this))]: 231, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE8" + }, undefined, false, undefined, this))]: 232, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE9" + }, undefined, false, undefined, this))]: 233, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEA" + }, undefined, false, undefined, this))]: 234, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEB" + }, undefined, false, undefined, this))]: 235, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEC" + }, undefined, false, undefined, this))]: 236, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xED" + }, undefined, false, undefined, this))]: 237, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEE" + }, undefined, false, undefined, this))]: 238, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEF" + }, undefined, false, undefined, this))]: 239, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF0" + }, undefined, false, undefined, this))]: 240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF1" + }, undefined, false, undefined, this))]: 241, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF2" + }, undefined, false, undefined, this))]: 242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF3" + }, undefined, false, undefined, this))]: 243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF4" + }, undefined, false, undefined, this))]: 244, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF5" + }, undefined, false, undefined, this))]: 245, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF6" + }, undefined, false, undefined, this))]: 246, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF7" + }, undefined, false, undefined, this))]: 247, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF8" + }, undefined, false, undefined, this))]: 248, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF9" + }, undefined, false, undefined, this))]: 249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFA" + }, undefined, false, undefined, this))]: 250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFB" + }, undefined, false, undefined, this))]: 251, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFC" + }, undefined, false, undefined, this))]: 252, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFD" + }, undefined, false, undefined, this))]: 253, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFE" + }, undefined, false, undefined, this))]: 254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFF" + }, undefined, false, undefined, this))]: 255, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0100" + }, undefined, false, undefined, this))]: 256, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0101" + }, undefined, false, undefined, this))]: 257, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0102" + }, undefined, false, undefined, this))]: 258, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0103" + }, undefined, false, undefined, this))]: 259, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0104" + }, undefined, false, undefined, this))]: 260, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0105" + }, undefined, false, undefined, this))]: 261, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0106" + }, undefined, false, undefined, this))]: 262, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0107" + }, undefined, false, undefined, this))]: 263, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0108" + }, undefined, false, undefined, this))]: 264, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0109" + }, undefined, false, undefined, this))]: 265, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010A" + }, undefined, false, undefined, this))]: 266, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010B" + }, undefined, false, undefined, this))]: 267, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010C" + }, undefined, false, undefined, this))]: 268, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010D" + }, undefined, false, undefined, this))]: 269, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010E" + }, undefined, false, undefined, this))]: 270, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010F" + }, undefined, false, undefined, this))]: 271, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0110" + }, undefined, false, undefined, this))]: 272, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0111" + }, undefined, false, undefined, this))]: 273, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0112" + }, undefined, false, undefined, this))]: 274, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0113" + }, undefined, false, undefined, this))]: 275, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0114" + }, undefined, false, undefined, this))]: 276, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0115" + }, undefined, false, undefined, this))]: 277, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0116" + }, undefined, false, undefined, this))]: 278, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0117" + }, undefined, false, undefined, this))]: 279, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0118" + }, undefined, false, undefined, this))]: 280, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0119" + }, undefined, false, undefined, this))]: 281, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011A" + }, undefined, false, undefined, this))]: 282, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011B" + }, undefined, false, undefined, this))]: 283, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011C" + }, undefined, false, undefined, this))]: 284, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011D" + }, undefined, false, undefined, this))]: 285, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011E" + }, undefined, false, undefined, this))]: 286, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011F" + }, undefined, false, undefined, this))]: 287, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0120" + }, undefined, false, undefined, this))]: 288, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0121" + }, undefined, false, undefined, this))]: 289, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0122" + }, undefined, false, undefined, this))]: 290, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0123" + }, undefined, false, undefined, this))]: 291, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0124" + }, undefined, false, undefined, this))]: 292, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0125" + }, undefined, false, undefined, this))]: 293, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0126" + }, undefined, false, undefined, this))]: 294, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0127" + }, undefined, false, undefined, this))]: 295, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0128" + }, undefined, false, undefined, this))]: 296, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0129" + }, undefined, false, undefined, this))]: 297, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012A" + }, undefined, false, undefined, this))]: 298, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012B" + }, undefined, false, undefined, this))]: 299, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012C" + }, undefined, false, undefined, this))]: 300, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012D" + }, undefined, false, undefined, this))]: 301, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012E" + }, undefined, false, undefined, this))]: 302, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012F" + }, undefined, false, undefined, this))]: 303, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0130" + }, undefined, false, undefined, this))]: 304, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0131" + }, undefined, false, undefined, this))]: 305, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0132" + }, undefined, false, undefined, this))]: 306, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0133" + }, undefined, false, undefined, this))]: 307, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0134" + }, undefined, false, undefined, this))]: 308, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0135" + }, undefined, false, undefined, this))]: 309, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0136" + }, undefined, false, undefined, this))]: 310, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0137" + }, undefined, false, undefined, this))]: 311, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0138" + }, undefined, false, undefined, this))]: 312, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0139" + }, undefined, false, undefined, this))]: 313, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013A" + }, undefined, false, undefined, this))]: 314, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013B" + }, undefined, false, undefined, this))]: 315, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013C" + }, undefined, false, undefined, this))]: 316, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013D" + }, undefined, false, undefined, this))]: 317, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013E" + }, undefined, false, undefined, this))]: 318, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013F" + }, undefined, false, undefined, this))]: 319, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0140" + }, undefined, false, undefined, this))]: 320, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0141" + }, undefined, false, undefined, this))]: 321, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0142" + }, undefined, false, undefined, this))]: 322, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0143" + }, undefined, false, undefined, this))]: 323, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0144" + }, undefined, false, undefined, this))]: 324, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0145" + }, undefined, false, undefined, this))]: 325, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0146" + }, undefined, false, undefined, this))]: 326, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0147" + }, undefined, false, undefined, this))]: 327, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0148" + }, undefined, false, undefined, this))]: 328, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0149" + }, undefined, false, undefined, this))]: 329, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014A" + }, undefined, false, undefined, this))]: 330, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014B" + }, undefined, false, undefined, this))]: 331, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014C" + }, undefined, false, undefined, this))]: 332, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014D" + }, undefined, false, undefined, this))]: 333, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014E" + }, undefined, false, undefined, this))]: 334, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014F" + }, undefined, false, undefined, this))]: 335, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0150" + }, undefined, false, undefined, this))]: 336, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0151" + }, undefined, false, undefined, this))]: 337, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0152" + }, undefined, false, undefined, this))]: 338, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0153" + }, undefined, false, undefined, this))]: 339, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0154" + }, undefined, false, undefined, this))]: 340, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0155" + }, undefined, false, undefined, this))]: 341, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0156" + }, undefined, false, undefined, this))]: 342, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0157" + }, undefined, false, undefined, this))]: 343, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0158" + }, undefined, false, undefined, this))]: 344, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0159" + }, undefined, false, undefined, this))]: 345, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015A" + }, undefined, false, undefined, this))]: 346, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015B" + }, undefined, false, undefined, this))]: 347, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015C" + }, undefined, false, undefined, this))]: 348, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015D" + }, undefined, false, undefined, this))]: 349, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015E" + }, undefined, false, undefined, this))]: 350, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015F" + }, undefined, false, undefined, this))]: 351, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0160" + }, undefined, false, undefined, this))]: 352, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0161" + }, undefined, false, undefined, this))]: 353, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0162" + }, undefined, false, undefined, this))]: 354, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0163" + }, undefined, false, undefined, this))]: 355, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0164" + }, undefined, false, undefined, this))]: 356, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0165" + }, undefined, false, undefined, this))]: 357, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0166" + }, undefined, false, undefined, this))]: 358, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0167" + }, undefined, false, undefined, this))]: 359, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0168" + }, undefined, false, undefined, this))]: 360, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0169" + }, undefined, false, undefined, this))]: 361, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016A" + }, undefined, false, undefined, this))]: 362, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016B" + }, undefined, false, undefined, this))]: 363, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016C" + }, undefined, false, undefined, this))]: 364, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016D" + }, undefined, false, undefined, this))]: 365, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016E" + }, undefined, false, undefined, this))]: 366, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016F" + }, undefined, false, undefined, this))]: 367, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0170" + }, undefined, false, undefined, this))]: 368, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0171" + }, undefined, false, undefined, this))]: 369, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0172" + }, undefined, false, undefined, this))]: 370, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0173" + }, undefined, false, undefined, this))]: 371, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0174" + }, undefined, false, undefined, this))]: 372, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0175" + }, undefined, false, undefined, this))]: 373, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0176" + }, undefined, false, undefined, this))]: 374, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0177" + }, undefined, false, undefined, this))]: 375, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0178" + }, undefined, false, undefined, this))]: 376, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0179" + }, undefined, false, undefined, this))]: 377, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017A" + }, undefined, false, undefined, this))]: 378, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017B" + }, undefined, false, undefined, this))]: 379, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017C" + }, undefined, false, undefined, this))]: 380, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017D" + }, undefined, false, undefined, this))]: 381, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017E" + }, undefined, false, undefined, this))]: 382, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017F" + }, undefined, false, undefined, this))]: 383, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0180" + }, undefined, false, undefined, this))]: 384, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0181" + }, undefined, false, undefined, this))]: 385, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0182" + }, undefined, false, undefined, this))]: 386, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0183" + }, undefined, false, undefined, this))]: 387, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0184" + }, undefined, false, undefined, this))]: 388, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0185" + }, undefined, false, undefined, this))]: 389, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0186" + }, undefined, false, undefined, this))]: 390, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0187" + }, undefined, false, undefined, this))]: 391, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0188" + }, undefined, false, undefined, this))]: 392, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0189" + }, undefined, false, undefined, this))]: 393, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018A" + }, undefined, false, undefined, this))]: 394, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018B" + }, undefined, false, undefined, this))]: 395, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018C" + }, undefined, false, undefined, this))]: 396, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018D" + }, undefined, false, undefined, this))]: 397, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018E" + }, undefined, false, undefined, this))]: 398, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018F" + }, undefined, false, undefined, this))]: 399, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0190" + }, undefined, false, undefined, this))]: 400, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0191" + }, undefined, false, undefined, this))]: 401, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0192" + }, undefined, false, undefined, this))]: 402, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0193" + }, undefined, false, undefined, this))]: 403, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0194" + }, undefined, false, undefined, this))]: 404, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0195" + }, undefined, false, undefined, this))]: 405, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0196" + }, undefined, false, undefined, this))]: 406, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0197" + }, undefined, false, undefined, this))]: 407, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0198" + }, undefined, false, undefined, this))]: 408, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0199" + }, undefined, false, undefined, this))]: 409, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019A" + }, undefined, false, undefined, this))]: 410, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019B" + }, undefined, false, undefined, this))]: 411, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019C" + }, undefined, false, undefined, this))]: 412, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019D" + }, undefined, false, undefined, this))]: 413, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019E" + }, undefined, false, undefined, this))]: 414, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019F" + }, undefined, false, undefined, this))]: 415, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A0" + }, undefined, false, undefined, this))]: 416, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A1" + }, undefined, false, undefined, this))]: 417, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A2" + }, undefined, false, undefined, this))]: 418, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A3" + }, undefined, false, undefined, this))]: 419, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A4" + }, undefined, false, undefined, this))]: 420, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A5" + }, undefined, false, undefined, this))]: 421, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A6" + }, undefined, false, undefined, this))]: 422, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A7" + }, undefined, false, undefined, this))]: 423, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A8" + }, undefined, false, undefined, this))]: 424, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A9" + }, undefined, false, undefined, this))]: 425, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AA" + }, undefined, false, undefined, this))]: 426, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AB" + }, undefined, false, undefined, this))]: 427, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AC" + }, undefined, false, undefined, this))]: 428, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AD" + }, undefined, false, undefined, this))]: 429, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AE" + }, undefined, false, undefined, this))]: 430, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AF" + }, undefined, false, undefined, this))]: 431, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B0" + }, undefined, false, undefined, this))]: 432, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B1" + }, undefined, false, undefined, this))]: 433, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B2" + }, undefined, false, undefined, this))]: 434, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B3" + }, undefined, false, undefined, this))]: 435, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B4" + }, undefined, false, undefined, this))]: 436, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B5" + }, undefined, false, undefined, this))]: 437, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B6" + }, undefined, false, undefined, this))]: 438, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B7" + }, undefined, false, undefined, this))]: 439, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B8" + }, undefined, false, undefined, this))]: 440, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B9" + }, undefined, false, undefined, this))]: 441, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BA" + }, undefined, false, undefined, this))]: 442, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BB" + }, undefined, false, undefined, this))]: 443, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BC" + }, undefined, false, undefined, this))]: 444, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BD" + }, undefined, false, undefined, this))]: 445, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BE" + }, undefined, false, undefined, this))]: 446, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BF" + }, undefined, false, undefined, this))]: 447, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C0" + }, undefined, false, undefined, this))]: 448, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C1" + }, undefined, false, undefined, this))]: 449, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C2" + }, undefined, false, undefined, this))]: 450, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C3" + }, undefined, false, undefined, this))]: 451, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C4" + }, undefined, false, undefined, this))]: 452, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C5" + }, undefined, false, undefined, this))]: 453, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C6" + }, undefined, false, undefined, this))]: 454, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C7" + }, undefined, false, undefined, this))]: 455, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C8" + }, undefined, false, undefined, this))]: 456, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C9" + }, undefined, false, undefined, this))]: 457, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CA" + }, undefined, false, undefined, this))]: 458, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CB" + }, undefined, false, undefined, this))]: 459, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CC" + }, undefined, false, undefined, this))]: 460, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CD" + }, undefined, false, undefined, this))]: 461, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CE" + }, undefined, false, undefined, this))]: 462, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CF" + }, undefined, false, undefined, this))]: 463, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D0" + }, undefined, false, undefined, this))]: 464, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D1" + }, undefined, false, undefined, this))]: 465, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D2" + }, undefined, false, undefined, this))]: 466, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D3" + }, undefined, false, undefined, this))]: 467, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D4" + }, undefined, false, undefined, this))]: 468, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D5" + }, undefined, false, undefined, this))]: 469, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D6" + }, undefined, false, undefined, this))]: 470, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D7" + }, undefined, false, undefined, this))]: 471, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D8" + }, undefined, false, undefined, this))]: 472, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D9" + }, undefined, false, undefined, this))]: 473, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DA" + }, undefined, false, undefined, this))]: 474, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DB" + }, undefined, false, undefined, this))]: 475, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DC" + }, undefined, false, undefined, this))]: 476, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DD" + }, undefined, false, undefined, this))]: 477, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DE" + }, undefined, false, undefined, this))]: 478, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DF" + }, undefined, false, undefined, this))]: 479, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E0" + }, undefined, false, undefined, this))]: 480, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E1" + }, undefined, false, undefined, this))]: 481, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E2" + }, undefined, false, undefined, this))]: 482, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E3" + }, undefined, false, undefined, this))]: 483, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E4" + }, undefined, false, undefined, this))]: 484, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E5" + }, undefined, false, undefined, this))]: 485, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E6" + }, undefined, false, undefined, this))]: 486, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E7" + }, undefined, false, undefined, this))]: 487, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E8" + }, undefined, false, undefined, this))]: 488, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E9" + }, undefined, false, undefined, this))]: 489, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EA" + }, undefined, false, undefined, this))]: 490, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EB" + }, undefined, false, undefined, this))]: 491, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EC" + }, undefined, false, undefined, this))]: 492, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01ED" + }, undefined, false, undefined, this))]: 493, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EE" + }, undefined, false, undefined, this))]: 494, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EF" + }, undefined, false, undefined, this))]: 495, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F0" + }, undefined, false, undefined, this))]: 496, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F1" + }, undefined, false, undefined, this))]: 497, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F2" + }, undefined, false, undefined, this))]: 498, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F3" + }, undefined, false, undefined, this))]: 499, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F4" + }, undefined, false, undefined, this))]: 500, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F5" + }, undefined, false, undefined, this))]: 501, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F6" + }, undefined, false, undefined, this))]: 502, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F7" + }, undefined, false, undefined, this))]: 503, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F8" + }, undefined, false, undefined, this))]: 504, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F9" + }, undefined, false, undefined, this))]: 505, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FA" + }, undefined, false, undefined, this))]: 506, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FB" + }, undefined, false, undefined, this))]: 507, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FC" + }, undefined, false, undefined, this))]: 508, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FD" + }, undefined, false, undefined, this))]: 509, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FE" + }, undefined, false, undefined, this))]: 510, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FF" + }, undefined, false, undefined, this))]: 511, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0200" + }, undefined, false, undefined, this))]: 512, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0201" + }, undefined, false, undefined, this))]: 513, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0202" + }, undefined, false, undefined, this))]: 514, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0203" + }, undefined, false, undefined, this))]: 515, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0204" + }, undefined, false, undefined, this))]: 516, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0205" + }, undefined, false, undefined, this))]: 517, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0206" + }, undefined, false, undefined, this))]: 518, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0207" + }, undefined, false, undefined, this))]: 519, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0208" + }, undefined, false, undefined, this))]: 520, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0209" + }, undefined, false, undefined, this))]: 521, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020A" + }, undefined, false, undefined, this))]: 522, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020B" + }, undefined, false, undefined, this))]: 523, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020C" + }, undefined, false, undefined, this))]: 524, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020D" + }, undefined, false, undefined, this))]: 525, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020E" + }, undefined, false, undefined, this))]: 526, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020F" + }, undefined, false, undefined, this))]: 527, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0210" + }, undefined, false, undefined, this))]: 528, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0211" + }, undefined, false, undefined, this))]: 529, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0212" + }, undefined, false, undefined, this))]: 530, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0213" + }, undefined, false, undefined, this))]: 531, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0214" + }, undefined, false, undefined, this))]: 532, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0215" + }, undefined, false, undefined, this))]: 533, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0216" + }, undefined, false, undefined, this))]: 534, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0217" + }, undefined, false, undefined, this))]: 535, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0218" + }, undefined, false, undefined, this))]: 536, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0219" + }, undefined, false, undefined, this))]: 537, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021A" + }, undefined, false, undefined, this))]: 538, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021B" + }, undefined, false, undefined, this))]: 539, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021C" + }, undefined, false, undefined, this))]: 540, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021D" + }, undefined, false, undefined, this))]: 541, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021E" + }, undefined, false, undefined, this))]: 542, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021F" + }, undefined, false, undefined, this))]: 543, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0220" + }, undefined, false, undefined, this))]: 544, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0221" + }, undefined, false, undefined, this))]: 545, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0222" + }, undefined, false, undefined, this))]: 546, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0223" + }, undefined, false, undefined, this))]: 547, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0224" + }, undefined, false, undefined, this))]: 548, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0225" + }, undefined, false, undefined, this))]: 549, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0226" + }, undefined, false, undefined, this))]: 550, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0227" + }, undefined, false, undefined, this))]: 551, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0228" + }, undefined, false, undefined, this))]: 552, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0229" + }, undefined, false, undefined, this))]: 553, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022A" + }, undefined, false, undefined, this))]: 554, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022B" + }, undefined, false, undefined, this))]: 555, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022C" + }, undefined, false, undefined, this))]: 556, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022D" + }, undefined, false, undefined, this))]: 557, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022E" + }, undefined, false, undefined, this))]: 558, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022F" + }, undefined, false, undefined, this))]: 559, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0230" + }, undefined, false, undefined, this))]: 560, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0231" + }, undefined, false, undefined, this))]: 561, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0232" + }, undefined, false, undefined, this))]: 562, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0233" + }, undefined, false, undefined, this))]: 563, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0234" + }, undefined, false, undefined, this))]: 564, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0235" + }, undefined, false, undefined, this))]: 565, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0236" + }, undefined, false, undefined, this))]: 566, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0237" + }, undefined, false, undefined, this))]: 567, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0238" + }, undefined, false, undefined, this))]: 568, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0239" + }, undefined, false, undefined, this))]: 569, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023A" + }, undefined, false, undefined, this))]: 570, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023B" + }, undefined, false, undefined, this))]: 571, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023C" + }, undefined, false, undefined, this))]: 572, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023D" + }, undefined, false, undefined, this))]: 573, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023E" + }, undefined, false, undefined, this))]: 574, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023F" + }, undefined, false, undefined, this))]: 575, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0240" + }, undefined, false, undefined, this))]: 576, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0241" + }, undefined, false, undefined, this))]: 577, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0242" + }, undefined, false, undefined, this))]: 578, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0243" + }, undefined, false, undefined, this))]: 579, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0244" + }, undefined, false, undefined, this))]: 580, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0245" + }, undefined, false, undefined, this))]: 581, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0246" + }, undefined, false, undefined, this))]: 582, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0247" + }, undefined, false, undefined, this))]: 583, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0248" + }, undefined, false, undefined, this))]: 584, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0249" + }, undefined, false, undefined, this))]: 585, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024A" + }, undefined, false, undefined, this))]: 586, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024B" + }, undefined, false, undefined, this))]: 587, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024C" + }, undefined, false, undefined, this))]: 588, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024D" + }, undefined, false, undefined, this))]: 589, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024E" + }, undefined, false, undefined, this))]: 590, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024F" + }, undefined, false, undefined, this))]: 591, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0250" + }, undefined, false, undefined, this))]: 592, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0251" + }, undefined, false, undefined, this))]: 593, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0252" + }, undefined, false, undefined, this))]: 594, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0253" + }, undefined, false, undefined, this))]: 595, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0254" + }, undefined, false, undefined, this))]: 596, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0255" + }, undefined, false, undefined, this))]: 597, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0256" + }, undefined, false, undefined, this))]: 598, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0257" + }, undefined, false, undefined, this))]: 599, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0258" + }, undefined, false, undefined, this))]: 600, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0259" + }, undefined, false, undefined, this))]: 601, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025A" + }, undefined, false, undefined, this))]: 602, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025B" + }, undefined, false, undefined, this))]: 603, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025C" + }, undefined, false, undefined, this))]: 604, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025D" + }, undefined, false, undefined, this))]: 605, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025E" + }, undefined, false, undefined, this))]: 606, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025F" + }, undefined, false, undefined, this))]: 607, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0260" + }, undefined, false, undefined, this))]: 608, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0261" + }, undefined, false, undefined, this))]: 609, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0262" + }, undefined, false, undefined, this))]: 610, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0263" + }, undefined, false, undefined, this))]: 611, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0264" + }, undefined, false, undefined, this))]: 612, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0265" + }, undefined, false, undefined, this))]: 613, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0266" + }, undefined, false, undefined, this))]: 614, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0267" + }, undefined, false, undefined, this))]: 615, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0268" + }, undefined, false, undefined, this))]: 616, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0269" + }, undefined, false, undefined, this))]: 617, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026A" + }, undefined, false, undefined, this))]: 618, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026B" + }, undefined, false, undefined, this))]: 619, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026C" + }, undefined, false, undefined, this))]: 620, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026D" + }, undefined, false, undefined, this))]: 621, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026E" + }, undefined, false, undefined, this))]: 622, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026F" + }, undefined, false, undefined, this))]: 623, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0270" + }, undefined, false, undefined, this))]: 624, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0271" + }, undefined, false, undefined, this))]: 625, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0272" + }, undefined, false, undefined, this))]: 626, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0273" + }, undefined, false, undefined, this))]: 627, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0274" + }, undefined, false, undefined, this))]: 628, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0275" + }, undefined, false, undefined, this))]: 629, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0276" + }, undefined, false, undefined, this))]: 630, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0277" + }, undefined, false, undefined, this))]: 631, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0278" + }, undefined, false, undefined, this))]: 632, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0279" + }, undefined, false, undefined, this))]: 633, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027A" + }, undefined, false, undefined, this))]: 634, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027B" + }, undefined, false, undefined, this))]: 635, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027C" + }, undefined, false, undefined, this))]: 636, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027D" + }, undefined, false, undefined, this))]: 637, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027E" + }, undefined, false, undefined, this))]: 638, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027F" + }, undefined, false, undefined, this))]: 639, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0280" + }, undefined, false, undefined, this))]: 640, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0281" + }, undefined, false, undefined, this))]: 641, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0282" + }, undefined, false, undefined, this))]: 642, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0283" + }, undefined, false, undefined, this))]: 643, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0284" + }, undefined, false, undefined, this))]: 644, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0285" + }, undefined, false, undefined, this))]: 645, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0286" + }, undefined, false, undefined, this))]: 646, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0287" + }, undefined, false, undefined, this))]: 647, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0288" + }, undefined, false, undefined, this))]: 648, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0289" + }, undefined, false, undefined, this))]: 649, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028A" + }, undefined, false, undefined, this))]: 650, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028B" + }, undefined, false, undefined, this))]: 651, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028C" + }, undefined, false, undefined, this))]: 652, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028D" + }, undefined, false, undefined, this))]: 653, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028E" + }, undefined, false, undefined, this))]: 654, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028F" + }, undefined, false, undefined, this))]: 655, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0290" + }, undefined, false, undefined, this))]: 656, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0291" + }, undefined, false, undefined, this))]: 657, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0292" + }, undefined, false, undefined, this))]: 658, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0293" + }, undefined, false, undefined, this))]: 659, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0294" + }, undefined, false, undefined, this))]: 660 + }; + function test() { + for (let rawKey in elements) { + var key = rawKey; + if (rawKey.startsWith("&")) { + var txt = document.createElement("textarea"); + txt.innerHTML = rawKey; + key = txt.value; + } + console.assert(elements[rawKey] === key.codePointAt(0), `${key} is not ${elements[rawKey]}`); + } + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/jsx-entities.jsx.map diff --git a/test/snapshots/jsx-entities.jsx b/test/snapshots/jsx-entities.jsx new file mode 100644 index 000000000..9fd075bc6 --- /dev/null +++ b/test/snapshots/jsx-entities.jsx @@ -0,0 +1,2768 @@ +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); +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); +const elements = { + [ReactDOM.renderToString(jsx(JSXFrag, { + children: '"' + }, undefined, false, undefined, this))]: 34, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "&" + }, undefined, false, undefined, this))]: 38, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "'" + }, undefined, false, undefined, this))]: 39, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "<" + }, undefined, false, undefined, this))]: 60, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ">" + }, undefined, false, undefined, this))]: 62, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA0" + }, undefined, false, undefined, this))]: 160, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA1" + }, undefined, false, undefined, this))]: 161, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA2" + }, undefined, false, undefined, this))]: 162, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA3" + }, undefined, false, undefined, this))]: 163, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA4" + }, undefined, false, undefined, this))]: 164, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA5" + }, undefined, false, undefined, this))]: 165, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA6" + }, undefined, false, undefined, this))]: 166, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA7" + }, undefined, false, undefined, this))]: 167, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA8" + }, undefined, false, undefined, this))]: 168, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA9" + }, undefined, false, undefined, this))]: 169, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAA" + }, undefined, false, undefined, this))]: 170, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAB" + }, undefined, false, undefined, this))]: 171, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAC" + }, undefined, false, undefined, this))]: 172, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAD" + }, undefined, false, undefined, this))]: 173, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAE" + }, undefined, false, undefined, this))]: 174, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAF" + }, undefined, false, undefined, this))]: 175, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB0" + }, undefined, false, undefined, this))]: 176, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB1" + }, undefined, false, undefined, this))]: 177, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB2" + }, undefined, false, undefined, this))]: 178, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB3" + }, undefined, false, undefined, this))]: 179, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB4" + }, undefined, false, undefined, this))]: 180, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB5" + }, undefined, false, undefined, this))]: 181, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB6" + }, undefined, false, undefined, this))]: 182, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB7" + }, undefined, false, undefined, this))]: 183, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB8" + }, undefined, false, undefined, this))]: 184, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB9" + }, undefined, false, undefined, this))]: 185, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBA" + }, undefined, false, undefined, this))]: 186, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBB" + }, undefined, false, undefined, this))]: 187, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBC" + }, undefined, false, undefined, this))]: 188, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBD" + }, undefined, false, undefined, this))]: 189, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBE" + }, undefined, false, undefined, this))]: 190, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBF" + }, undefined, false, undefined, this))]: 191, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC0" + }, undefined, false, undefined, this))]: 192, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC1" + }, undefined, false, undefined, this))]: 193, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC2" + }, undefined, false, undefined, this))]: 194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC3" + }, undefined, false, undefined, this))]: 195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC4" + }, undefined, false, undefined, this))]: 196, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC5" + }, undefined, false, undefined, this))]: 197, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC6" + }, undefined, false, undefined, this))]: 198, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC7" + }, undefined, false, undefined, this))]: 199, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC8" + }, undefined, false, undefined, this))]: 200, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC9" + }, undefined, false, undefined, this))]: 201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCA" + }, undefined, false, undefined, this))]: 202, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCB" + }, undefined, false, undefined, this))]: 203, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCC" + }, undefined, false, undefined, this))]: 204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCD" + }, undefined, false, undefined, this))]: 205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCE" + }, undefined, false, undefined, this))]: 206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCF" + }, undefined, false, undefined, this))]: 207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD0" + }, undefined, false, undefined, this))]: 208, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD1" + }, undefined, false, undefined, this))]: 209, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD2" + }, undefined, false, undefined, this))]: 210, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD3" + }, undefined, false, undefined, this))]: 211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD4" + }, undefined, false, undefined, this))]: 212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD5" + }, undefined, false, undefined, this))]: 213, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD6" + }, undefined, false, undefined, this))]: 214, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD7" + }, undefined, false, undefined, this))]: 215, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD8" + }, undefined, false, undefined, this))]: 216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD9" + }, undefined, false, undefined, this))]: 217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDA" + }, undefined, false, undefined, this))]: 218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDB" + }, undefined, false, undefined, this))]: 219, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDC" + }, undefined, false, undefined, this))]: 220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDD" + }, undefined, false, undefined, this))]: 221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDE" + }, undefined, false, undefined, this))]: 222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDF" + }, undefined, false, undefined, this))]: 223, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE0" + }, undefined, false, undefined, this))]: 224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE1" + }, undefined, false, undefined, this))]: 225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE2" + }, undefined, false, undefined, this))]: 226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE3" + }, undefined, false, undefined, this))]: 227, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE4" + }, undefined, false, undefined, this))]: 228, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE5" + }, undefined, false, undefined, this))]: 229, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE6" + }, undefined, false, undefined, this))]: 230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE7" + }, undefined, false, undefined, this))]: 231, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE8" + }, undefined, false, undefined, this))]: 232, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE9" + }, undefined, false, undefined, this))]: 233, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEA" + }, undefined, false, undefined, this))]: 234, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEB" + }, undefined, false, undefined, this))]: 235, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEC" + }, undefined, false, undefined, this))]: 236, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xED" + }, undefined, false, undefined, this))]: 237, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEE" + }, undefined, false, undefined, this))]: 238, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEF" + }, undefined, false, undefined, this))]: 239, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF0" + }, undefined, false, undefined, this))]: 240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF1" + }, undefined, false, undefined, this))]: 241, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF2" + }, undefined, false, undefined, this))]: 242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF3" + }, undefined, false, undefined, this))]: 243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF4" + }, undefined, false, undefined, this))]: 244, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF5" + }, undefined, false, undefined, this))]: 245, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF6" + }, undefined, false, undefined, this))]: 246, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF7" + }, undefined, false, undefined, this))]: 247, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF8" + }, undefined, false, undefined, this))]: 248, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF9" + }, undefined, false, undefined, this))]: 249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFA" + }, undefined, false, undefined, this))]: 250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFB" + }, undefined, false, undefined, this))]: 251, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFC" + }, undefined, false, undefined, this))]: 252, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFD" + }, undefined, false, undefined, this))]: 253, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFE" + }, undefined, false, undefined, this))]: 254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFF" + }, undefined, false, undefined, this))]: 255, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0152" + }, undefined, false, undefined, this))]: 338, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0153" + }, undefined, false, undefined, this))]: 339, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0160" + }, undefined, false, undefined, this))]: 352, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0161" + }, undefined, false, undefined, this))]: 353, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0178" + }, undefined, false, undefined, this))]: 376, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0192" + }, undefined, false, undefined, this))]: 402, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u02C6" + }, undefined, false, undefined, this))]: 710, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u02DC" + }, undefined, false, undefined, this))]: 732, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0391" + }, undefined, false, undefined, this))]: 913, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0392" + }, undefined, false, undefined, this))]: 914, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0393" + }, undefined, false, undefined, this))]: 915, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0394" + }, undefined, false, undefined, this))]: 916, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0395" + }, undefined, false, undefined, this))]: 917, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0396" + }, undefined, false, undefined, this))]: 918, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0397" + }, undefined, false, undefined, this))]: 919, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0398" + }, undefined, false, undefined, this))]: 920, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0399" + }, undefined, false, undefined, this))]: 921, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039A" + }, undefined, false, undefined, this))]: 922, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039B" + }, undefined, false, undefined, this))]: 923, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039C" + }, undefined, false, undefined, this))]: 924, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039D" + }, undefined, false, undefined, this))]: 925, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039E" + }, undefined, false, undefined, this))]: 926, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u039F" + }, undefined, false, undefined, this))]: 927, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A0" + }, undefined, false, undefined, this))]: 928, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A1" + }, undefined, false, undefined, this))]: 929, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A3" + }, undefined, false, undefined, this))]: 931, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A4" + }, undefined, false, undefined, this))]: 932, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A5" + }, undefined, false, undefined, this))]: 933, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A6" + }, undefined, false, undefined, this))]: 934, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A7" + }, undefined, false, undefined, this))]: 935, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A8" + }, undefined, false, undefined, this))]: 936, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03A9" + }, undefined, false, undefined, this))]: 937, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B1" + }, undefined, false, undefined, this))]: 945, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B2" + }, undefined, false, undefined, this))]: 946, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B3" + }, undefined, false, undefined, this))]: 947, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B4" + }, undefined, false, undefined, this))]: 948, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B5" + }, undefined, false, undefined, this))]: 949, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B6" + }, undefined, false, undefined, this))]: 950, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B7" + }, undefined, false, undefined, this))]: 951, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B8" + }, undefined, false, undefined, this))]: 952, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03B9" + }, undefined, false, undefined, this))]: 953, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BA" + }, undefined, false, undefined, this))]: 954, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BB" + }, undefined, false, undefined, this))]: 955, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BC" + }, undefined, false, undefined, this))]: 956, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BD" + }, undefined, false, undefined, this))]: 957, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BE" + }, undefined, false, undefined, this))]: 958, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03BF" + }, undefined, false, undefined, this))]: 959, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C0" + }, undefined, false, undefined, this))]: 960, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C1" + }, undefined, false, undefined, this))]: 961, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C2" + }, undefined, false, undefined, this))]: 962, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C3" + }, undefined, false, undefined, this))]: 963, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C4" + }, undefined, false, undefined, this))]: 964, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C5" + }, undefined, false, undefined, this))]: 965, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C6" + }, undefined, false, undefined, this))]: 966, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C7" + }, undefined, false, undefined, this))]: 967, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C8" + }, undefined, false, undefined, this))]: 968, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03C9" + }, undefined, false, undefined, this))]: 969, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D1" + }, undefined, false, undefined, this))]: 977, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D2" + }, undefined, false, undefined, this))]: 978, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u03D6" + }, undefined, false, undefined, this))]: 982, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2002" + }, undefined, false, undefined, this))]: 8194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2003" + }, undefined, false, undefined, this))]: 8195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2009" + }, undefined, false, undefined, this))]: 8201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200C" + }, undefined, false, undefined, this))]: 8204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200D" + }, undefined, false, undefined, this))]: 8205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200E" + }, undefined, false, undefined, this))]: 8206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u200F" + }, undefined, false, undefined, this))]: 8207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2013" + }, undefined, false, undefined, this))]: 8211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2014" + }, undefined, false, undefined, this))]: 8212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2018" + }, undefined, false, undefined, this))]: 8216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2019" + }, undefined, false, undefined, this))]: 8217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201A" + }, undefined, false, undefined, this))]: 8218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201C" + }, undefined, false, undefined, this))]: 8220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201D" + }, undefined, false, undefined, this))]: 8221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u201E" + }, undefined, false, undefined, this))]: 8222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2020" + }, undefined, false, undefined, this))]: 8224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2021" + }, undefined, false, undefined, this))]: 8225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2022" + }, undefined, false, undefined, this))]: 8226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2026" + }, undefined, false, undefined, this))]: 8230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2030" + }, undefined, false, undefined, this))]: 8240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2032" + }, undefined, false, undefined, this))]: 8242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2033" + }, undefined, false, undefined, this))]: 8243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2039" + }, undefined, false, undefined, this))]: 8249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u203A" + }, undefined, false, undefined, this))]: 8250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u203E" + }, undefined, false, undefined, this))]: 8254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2044" + }, undefined, false, undefined, this))]: 8260, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u20AC" + }, undefined, false, undefined, this))]: 8364, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2111" + }, undefined, false, undefined, this))]: 8465, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2118" + }, undefined, false, undefined, this))]: 8472, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u211C" + }, undefined, false, undefined, this))]: 8476, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2122" + }, undefined, false, undefined, this))]: 8482, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2135" + }, undefined, false, undefined, this))]: 8501, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2190" + }, undefined, false, undefined, this))]: 8592, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2191" + }, undefined, false, undefined, this))]: 8593, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2192" + }, undefined, false, undefined, this))]: 8594, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2193" + }, undefined, false, undefined, this))]: 8595, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2194" + }, undefined, false, undefined, this))]: 8596, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21B5" + }, undefined, false, undefined, this))]: 8629, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D0" + }, undefined, false, undefined, this))]: 8656, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D1" + }, undefined, false, undefined, this))]: 8657, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D2" + }, undefined, false, undefined, this))]: 8658, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D3" + }, undefined, false, undefined, this))]: 8659, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u21D4" + }, undefined, false, undefined, this))]: 8660, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2200" + }, undefined, false, undefined, this))]: 8704, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2202" + }, undefined, false, undefined, this))]: 8706, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2203" + }, undefined, false, undefined, this))]: 8707, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2205" + }, undefined, false, undefined, this))]: 8709, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2207" + }, undefined, false, undefined, this))]: 8711, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2208" + }, undefined, false, undefined, this))]: 8712, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2209" + }, undefined, false, undefined, this))]: 8713, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u220B" + }, undefined, false, undefined, this))]: 8715, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u220F" + }, undefined, false, undefined, this))]: 8719, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2211" + }, undefined, false, undefined, this))]: 8721, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2212" + }, undefined, false, undefined, this))]: 8722, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2217" + }, undefined, false, undefined, this))]: 8727, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221A" + }, undefined, false, undefined, this))]: 8730, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221D" + }, undefined, false, undefined, this))]: 8733, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u221E" + }, undefined, false, undefined, this))]: 8734, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2220" + }, undefined, false, undefined, this))]: 8736, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2227" + }, undefined, false, undefined, this))]: 8743, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2228" + }, undefined, false, undefined, this))]: 8744, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2229" + }, undefined, false, undefined, this))]: 8745, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u222A" + }, undefined, false, undefined, this))]: 8746, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u222B" + }, undefined, false, undefined, this))]: 8747, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2234" + }, undefined, false, undefined, this))]: 8756, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u223C" + }, undefined, false, undefined, this))]: 8764, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2245" + }, undefined, false, undefined, this))]: 8773, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2248" + }, undefined, false, undefined, this))]: 8776, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2260" + }, undefined, false, undefined, this))]: 8800, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2261" + }, undefined, false, undefined, this))]: 8801, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2264" + }, undefined, false, undefined, this))]: 8804, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2265" + }, undefined, false, undefined, this))]: 8805, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2282" + }, undefined, false, undefined, this))]: 8834, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2283" + }, undefined, false, undefined, this))]: 8835, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2284" + }, undefined, false, undefined, this))]: 8836, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2286" + }, undefined, false, undefined, this))]: 8838, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2287" + }, undefined, false, undefined, this))]: 8839, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2295" + }, undefined, false, undefined, this))]: 8853, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2297" + }, undefined, false, undefined, this))]: 8855, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u22A5" + }, undefined, false, undefined, this))]: 8869, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u22C5" + }, undefined, false, undefined, this))]: 8901, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2308" + }, undefined, false, undefined, this))]: 8968, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2309" + }, undefined, false, undefined, this))]: 8969, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u230A" + }, undefined, false, undefined, this))]: 8970, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u230B" + }, undefined, false, undefined, this))]: 8971, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2329" + }, undefined, false, undefined, this))]: 9001, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u232A" + }, undefined, false, undefined, this))]: 9002, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u25CA" + }, undefined, false, undefined, this))]: 9674, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2660" + }, undefined, false, undefined, this))]: 9824, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2663" + }, undefined, false, undefined, this))]: 9827, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2665" + }, undefined, false, undefined, this))]: 9829, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u2666" + }, undefined, false, undefined, this))]: 9830, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x01" + }, undefined, false, undefined, this))]: 1, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x02" + }, undefined, false, undefined, this))]: 2, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x03" + }, undefined, false, undefined, this))]: 3, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x04" + }, undefined, false, undefined, this))]: 4, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x05" + }, undefined, false, undefined, this))]: 5, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x06" + }, undefined, false, undefined, this))]: 6, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x07" + }, undefined, false, undefined, this))]: 7, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\f" + }, undefined, false, undefined, this))]: 8, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\t" + }, undefined, false, undefined, this))]: 9, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ` +` + }, undefined, false, undefined, this))]: 10, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\v" + }, undefined, false, undefined, this))]: 11, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\f" + }, undefined, false, undefined, this))]: 12, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: `\r` + }, undefined, false, undefined, this))]: 13, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x0E" + }, undefined, false, undefined, this))]: 14, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x0F" + }, undefined, false, undefined, this))]: 15, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x10" + }, undefined, false, undefined, this))]: 16, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x11" + }, undefined, false, undefined, this))]: 17, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x12" + }, undefined, false, undefined, this))]: 18, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x13" + }, undefined, false, undefined, this))]: 19, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x14" + }, undefined, false, undefined, this))]: 20, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x15" + }, undefined, false, undefined, this))]: 21, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x16" + }, undefined, false, undefined, this))]: 22, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x17" + }, undefined, false, undefined, this))]: 23, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x18" + }, undefined, false, undefined, this))]: 24, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x19" + }, undefined, false, undefined, this))]: 25, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1A" + }, undefined, false, undefined, this))]: 26, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1B" + }, undefined, false, undefined, this))]: 27, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1C" + }, undefined, false, undefined, this))]: 28, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1D" + }, undefined, false, undefined, this))]: 29, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1E" + }, undefined, false, undefined, this))]: 30, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x1F" + }, undefined, false, undefined, this))]: 31, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: " " + }, undefined, false, undefined, this))]: 32, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "!" + }, undefined, false, undefined, this))]: 33, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: '"' + }, undefined, false, undefined, this))]: 34, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "#" + }, undefined, false, undefined, this))]: 35, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "$" + }, undefined, false, undefined, this))]: 36, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "%" + }, undefined, false, undefined, this))]: 37, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "&" + }, undefined, false, undefined, this))]: 38, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "'" + }, undefined, false, undefined, this))]: 39, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "(" + }, undefined, false, undefined, this))]: 40, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ")" + }, undefined, false, undefined, this))]: 41, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "*" + }, undefined, false, undefined, this))]: 42, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "+" + }, undefined, false, undefined, this))]: 43, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "," + }, undefined, false, undefined, this))]: 44, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "-" + }, undefined, false, undefined, this))]: 45, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "." + }, undefined, false, undefined, this))]: 46, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "/" + }, undefined, false, undefined, this))]: 47, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "0" + }, undefined, false, undefined, this))]: 48, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "1" + }, undefined, false, undefined, this))]: 49, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "2" + }, undefined, false, undefined, this))]: 50, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "3" + }, undefined, false, undefined, this))]: 51, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "4" + }, undefined, false, undefined, this))]: 52, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "5" + }, undefined, false, undefined, this))]: 53, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "6" + }, undefined, false, undefined, this))]: 54, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "7" + }, undefined, false, undefined, this))]: 55, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "8" + }, undefined, false, undefined, this))]: 56, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "9" + }, undefined, false, undefined, this))]: 57, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ":" + }, undefined, false, undefined, this))]: 58, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ";" + }, undefined, false, undefined, this))]: 59, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "<" + }, undefined, false, undefined, this))]: 60, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "=" + }, undefined, false, undefined, this))]: 61, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: ">" + }, undefined, false, undefined, this))]: 62, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "?" + }, undefined, false, undefined, this))]: 63, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "@" + }, undefined, false, undefined, this))]: 64, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "A" + }, undefined, false, undefined, this))]: 65, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "B" + }, undefined, false, undefined, this))]: 66, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "C" + }, undefined, false, undefined, this))]: 67, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "D" + }, undefined, false, undefined, this))]: 68, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "E" + }, undefined, false, undefined, this))]: 69, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "F" + }, undefined, false, undefined, this))]: 70, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "G" + }, undefined, false, undefined, this))]: 71, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "H" + }, undefined, false, undefined, this))]: 72, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "I" + }, undefined, false, undefined, this))]: 73, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "J" + }, undefined, false, undefined, this))]: 74, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "K" + }, undefined, false, undefined, this))]: 75, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "L" + }, undefined, false, undefined, this))]: 76, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "M" + }, undefined, false, undefined, this))]: 77, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "N" + }, undefined, false, undefined, this))]: 78, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "O" + }, undefined, false, undefined, this))]: 79, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "P" + }, undefined, false, undefined, this))]: 80, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Q" + }, undefined, false, undefined, this))]: 81, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "R" + }, undefined, false, undefined, this))]: 82, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "S" + }, undefined, false, undefined, this))]: 83, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "T" + }, undefined, false, undefined, this))]: 84, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "U" + }, undefined, false, undefined, this))]: 85, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "V" + }, undefined, false, undefined, this))]: 86, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "W" + }, undefined, false, undefined, this))]: 87, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "X" + }, undefined, false, undefined, this))]: 88, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Y" + }, undefined, false, undefined, this))]: 89, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "Z" + }, undefined, false, undefined, this))]: 90, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "[" + }, undefined, false, undefined, this))]: 91, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\\" + }, undefined, false, undefined, this))]: 92, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "]" + }, undefined, false, undefined, this))]: 93, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "^" + }, undefined, false, undefined, this))]: 94, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "_" + }, undefined, false, undefined, this))]: 95, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "`" + }, undefined, false, undefined, this))]: 96, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "a" + }, undefined, false, undefined, this))]: 97, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "b" + }, undefined, false, undefined, this))]: 98, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "c" + }, undefined, false, undefined, this))]: 99, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "d" + }, undefined, false, undefined, this))]: 100, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "e" + }, undefined, false, undefined, this))]: 101, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "f" + }, undefined, false, undefined, this))]: 102, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "g" + }, undefined, false, undefined, this))]: 103, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "h" + }, undefined, false, undefined, this))]: 104, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "i" + }, undefined, false, undefined, this))]: 105, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "j" + }, undefined, false, undefined, this))]: 106, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "k" + }, undefined, false, undefined, this))]: 107, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "l" + }, undefined, false, undefined, this))]: 108, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "m" + }, undefined, false, undefined, this))]: 109, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "n" + }, undefined, false, undefined, this))]: 110, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "o" + }, undefined, false, undefined, this))]: 111, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "p" + }, undefined, false, undefined, this))]: 112, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "q" + }, undefined, false, undefined, this))]: 113, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "r" + }, undefined, false, undefined, this))]: 114, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "s" + }, undefined, false, undefined, this))]: 115, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "t" + }, undefined, false, undefined, this))]: 116, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "u" + }, undefined, false, undefined, this))]: 117, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "v" + }, undefined, false, undefined, this))]: 118, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "w" + }, undefined, false, undefined, this))]: 119, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "x" + }, undefined, false, undefined, this))]: 120, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "y" + }, undefined, false, undefined, this))]: 121, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "z" + }, undefined, false, undefined, this))]: 122, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "{" + }, undefined, false, undefined, this))]: 123, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "|" + }, undefined, false, undefined, this))]: 124, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "}" + }, undefined, false, undefined, this))]: 125, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "~" + }, undefined, false, undefined, this))]: 126, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x7F" + }, undefined, false, undefined, this))]: 127, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x80" + }, undefined, false, undefined, this))]: 128, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x81" + }, undefined, false, undefined, this))]: 129, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x82" + }, undefined, false, undefined, this))]: 130, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x83" + }, undefined, false, undefined, this))]: 131, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x84" + }, undefined, false, undefined, this))]: 132, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x85" + }, undefined, false, undefined, this))]: 133, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x86" + }, undefined, false, undefined, this))]: 134, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x87" + }, undefined, false, undefined, this))]: 135, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x88" + }, undefined, false, undefined, this))]: 136, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x89" + }, undefined, false, undefined, this))]: 137, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8A" + }, undefined, false, undefined, this))]: 138, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8B" + }, undefined, false, undefined, this))]: 139, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8C" + }, undefined, false, undefined, this))]: 140, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8D" + }, undefined, false, undefined, this))]: 141, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8E" + }, undefined, false, undefined, this))]: 142, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x8F" + }, undefined, false, undefined, this))]: 143, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x90" + }, undefined, false, undefined, this))]: 144, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x91" + }, undefined, false, undefined, this))]: 145, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x92" + }, undefined, false, undefined, this))]: 146, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x93" + }, undefined, false, undefined, this))]: 147, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x94" + }, undefined, false, undefined, this))]: 148, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x95" + }, undefined, false, undefined, this))]: 149, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x96" + }, undefined, false, undefined, this))]: 150, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x97" + }, undefined, false, undefined, this))]: 151, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x98" + }, undefined, false, undefined, this))]: 152, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x99" + }, undefined, false, undefined, this))]: 153, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9A" + }, undefined, false, undefined, this))]: 154, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9B" + }, undefined, false, undefined, this))]: 155, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9C" + }, undefined, false, undefined, this))]: 156, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9D" + }, undefined, false, undefined, this))]: 157, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9E" + }, undefined, false, undefined, this))]: 158, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\x9F" + }, undefined, false, undefined, this))]: 159, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA0" + }, undefined, false, undefined, this))]: 160, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA1" + }, undefined, false, undefined, this))]: 161, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA2" + }, undefined, false, undefined, this))]: 162, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA3" + }, undefined, false, undefined, this))]: 163, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA4" + }, undefined, false, undefined, this))]: 164, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA5" + }, undefined, false, undefined, this))]: 165, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA6" + }, undefined, false, undefined, this))]: 166, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA7" + }, undefined, false, undefined, this))]: 167, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA8" + }, undefined, false, undefined, this))]: 168, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xA9" + }, undefined, false, undefined, this))]: 169, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAA" + }, undefined, false, undefined, this))]: 170, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAB" + }, undefined, false, undefined, this))]: 171, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAC" + }, undefined, false, undefined, this))]: 172, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAD" + }, undefined, false, undefined, this))]: 173, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAE" + }, undefined, false, undefined, this))]: 174, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xAF" + }, undefined, false, undefined, this))]: 175, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB0" + }, undefined, false, undefined, this))]: 176, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB1" + }, undefined, false, undefined, this))]: 177, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB2" + }, undefined, false, undefined, this))]: 178, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB3" + }, undefined, false, undefined, this))]: 179, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB4" + }, undefined, false, undefined, this))]: 180, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB5" + }, undefined, false, undefined, this))]: 181, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB6" + }, undefined, false, undefined, this))]: 182, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB7" + }, undefined, false, undefined, this))]: 183, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB8" + }, undefined, false, undefined, this))]: 184, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xB9" + }, undefined, false, undefined, this))]: 185, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBA" + }, undefined, false, undefined, this))]: 186, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBB" + }, undefined, false, undefined, this))]: 187, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBC" + }, undefined, false, undefined, this))]: 188, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBD" + }, undefined, false, undefined, this))]: 189, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBE" + }, undefined, false, undefined, this))]: 190, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xBF" + }, undefined, false, undefined, this))]: 191, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC0" + }, undefined, false, undefined, this))]: 192, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC1" + }, undefined, false, undefined, this))]: 193, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC2" + }, undefined, false, undefined, this))]: 194, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC3" + }, undefined, false, undefined, this))]: 195, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC4" + }, undefined, false, undefined, this))]: 196, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC5" + }, undefined, false, undefined, this))]: 197, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC6" + }, undefined, false, undefined, this))]: 198, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC7" + }, undefined, false, undefined, this))]: 199, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC8" + }, undefined, false, undefined, this))]: 200, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xC9" + }, undefined, false, undefined, this))]: 201, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCA" + }, undefined, false, undefined, this))]: 202, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCB" + }, undefined, false, undefined, this))]: 203, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCC" + }, undefined, false, undefined, this))]: 204, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCD" + }, undefined, false, undefined, this))]: 205, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCE" + }, undefined, false, undefined, this))]: 206, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xCF" + }, undefined, false, undefined, this))]: 207, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD0" + }, undefined, false, undefined, this))]: 208, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD1" + }, undefined, false, undefined, this))]: 209, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD2" + }, undefined, false, undefined, this))]: 210, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD3" + }, undefined, false, undefined, this))]: 211, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD4" + }, undefined, false, undefined, this))]: 212, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD5" + }, undefined, false, undefined, this))]: 213, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD6" + }, undefined, false, undefined, this))]: 214, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD7" + }, undefined, false, undefined, this))]: 215, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD8" + }, undefined, false, undefined, this))]: 216, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xD9" + }, undefined, false, undefined, this))]: 217, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDA" + }, undefined, false, undefined, this))]: 218, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDB" + }, undefined, false, undefined, this))]: 219, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDC" + }, undefined, false, undefined, this))]: 220, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDD" + }, undefined, false, undefined, this))]: 221, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDE" + }, undefined, false, undefined, this))]: 222, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xDF" + }, undefined, false, undefined, this))]: 223, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE0" + }, undefined, false, undefined, this))]: 224, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE1" + }, undefined, false, undefined, this))]: 225, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE2" + }, undefined, false, undefined, this))]: 226, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE3" + }, undefined, false, undefined, this))]: 227, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE4" + }, undefined, false, undefined, this))]: 228, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE5" + }, undefined, false, undefined, this))]: 229, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE6" + }, undefined, false, undefined, this))]: 230, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE7" + }, undefined, false, undefined, this))]: 231, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE8" + }, undefined, false, undefined, this))]: 232, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xE9" + }, undefined, false, undefined, this))]: 233, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEA" + }, undefined, false, undefined, this))]: 234, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEB" + }, undefined, false, undefined, this))]: 235, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEC" + }, undefined, false, undefined, this))]: 236, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xED" + }, undefined, false, undefined, this))]: 237, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEE" + }, undefined, false, undefined, this))]: 238, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xEF" + }, undefined, false, undefined, this))]: 239, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF0" + }, undefined, false, undefined, this))]: 240, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF1" + }, undefined, false, undefined, this))]: 241, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF2" + }, undefined, false, undefined, this))]: 242, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF3" + }, undefined, false, undefined, this))]: 243, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF4" + }, undefined, false, undefined, this))]: 244, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF5" + }, undefined, false, undefined, this))]: 245, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF6" + }, undefined, false, undefined, this))]: 246, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF7" + }, undefined, false, undefined, this))]: 247, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF8" + }, undefined, false, undefined, this))]: 248, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xF9" + }, undefined, false, undefined, this))]: 249, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFA" + }, undefined, false, undefined, this))]: 250, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFB" + }, undefined, false, undefined, this))]: 251, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFC" + }, undefined, false, undefined, this))]: 252, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFD" + }, undefined, false, undefined, this))]: 253, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFE" + }, undefined, false, undefined, this))]: 254, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\xFF" + }, undefined, false, undefined, this))]: 255, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0100" + }, undefined, false, undefined, this))]: 256, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0101" + }, undefined, false, undefined, this))]: 257, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0102" + }, undefined, false, undefined, this))]: 258, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0103" + }, undefined, false, undefined, this))]: 259, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0104" + }, undefined, false, undefined, this))]: 260, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0105" + }, undefined, false, undefined, this))]: 261, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0106" + }, undefined, false, undefined, this))]: 262, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0107" + }, undefined, false, undefined, this))]: 263, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0108" + }, undefined, false, undefined, this))]: 264, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0109" + }, undefined, false, undefined, this))]: 265, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010A" + }, undefined, false, undefined, this))]: 266, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010B" + }, undefined, false, undefined, this))]: 267, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010C" + }, undefined, false, undefined, this))]: 268, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010D" + }, undefined, false, undefined, this))]: 269, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010E" + }, undefined, false, undefined, this))]: 270, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u010F" + }, undefined, false, undefined, this))]: 271, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0110" + }, undefined, false, undefined, this))]: 272, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0111" + }, undefined, false, undefined, this))]: 273, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0112" + }, undefined, false, undefined, this))]: 274, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0113" + }, undefined, false, undefined, this))]: 275, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0114" + }, undefined, false, undefined, this))]: 276, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0115" + }, undefined, false, undefined, this))]: 277, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0116" + }, undefined, false, undefined, this))]: 278, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0117" + }, undefined, false, undefined, this))]: 279, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0118" + }, undefined, false, undefined, this))]: 280, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0119" + }, undefined, false, undefined, this))]: 281, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011A" + }, undefined, false, undefined, this))]: 282, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011B" + }, undefined, false, undefined, this))]: 283, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011C" + }, undefined, false, undefined, this))]: 284, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011D" + }, undefined, false, undefined, this))]: 285, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011E" + }, undefined, false, undefined, this))]: 286, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u011F" + }, undefined, false, undefined, this))]: 287, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0120" + }, undefined, false, undefined, this))]: 288, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0121" + }, undefined, false, undefined, this))]: 289, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0122" + }, undefined, false, undefined, this))]: 290, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0123" + }, undefined, false, undefined, this))]: 291, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0124" + }, undefined, false, undefined, this))]: 292, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0125" + }, undefined, false, undefined, this))]: 293, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0126" + }, undefined, false, undefined, this))]: 294, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0127" + }, undefined, false, undefined, this))]: 295, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0128" + }, undefined, false, undefined, this))]: 296, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0129" + }, undefined, false, undefined, this))]: 297, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012A" + }, undefined, false, undefined, this))]: 298, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012B" + }, undefined, false, undefined, this))]: 299, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012C" + }, undefined, false, undefined, this))]: 300, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012D" + }, undefined, false, undefined, this))]: 301, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012E" + }, undefined, false, undefined, this))]: 302, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u012F" + }, undefined, false, undefined, this))]: 303, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0130" + }, undefined, false, undefined, this))]: 304, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0131" + }, undefined, false, undefined, this))]: 305, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0132" + }, undefined, false, undefined, this))]: 306, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0133" + }, undefined, false, undefined, this))]: 307, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0134" + }, undefined, false, undefined, this))]: 308, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0135" + }, undefined, false, undefined, this))]: 309, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0136" + }, undefined, false, undefined, this))]: 310, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0137" + }, undefined, false, undefined, this))]: 311, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0138" + }, undefined, false, undefined, this))]: 312, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0139" + }, undefined, false, undefined, this))]: 313, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013A" + }, undefined, false, undefined, this))]: 314, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013B" + }, undefined, false, undefined, this))]: 315, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013C" + }, undefined, false, undefined, this))]: 316, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013D" + }, undefined, false, undefined, this))]: 317, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013E" + }, undefined, false, undefined, this))]: 318, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u013F" + }, undefined, false, undefined, this))]: 319, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0140" + }, undefined, false, undefined, this))]: 320, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0141" + }, undefined, false, undefined, this))]: 321, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0142" + }, undefined, false, undefined, this))]: 322, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0143" + }, undefined, false, undefined, this))]: 323, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0144" + }, undefined, false, undefined, this))]: 324, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0145" + }, undefined, false, undefined, this))]: 325, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0146" + }, undefined, false, undefined, this))]: 326, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0147" + }, undefined, false, undefined, this))]: 327, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0148" + }, undefined, false, undefined, this))]: 328, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0149" + }, undefined, false, undefined, this))]: 329, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014A" + }, undefined, false, undefined, this))]: 330, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014B" + }, undefined, false, undefined, this))]: 331, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014C" + }, undefined, false, undefined, this))]: 332, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014D" + }, undefined, false, undefined, this))]: 333, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014E" + }, undefined, false, undefined, this))]: 334, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u014F" + }, undefined, false, undefined, this))]: 335, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0150" + }, undefined, false, undefined, this))]: 336, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0151" + }, undefined, false, undefined, this))]: 337, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0152" + }, undefined, false, undefined, this))]: 338, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0153" + }, undefined, false, undefined, this))]: 339, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0154" + }, undefined, false, undefined, this))]: 340, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0155" + }, undefined, false, undefined, this))]: 341, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0156" + }, undefined, false, undefined, this))]: 342, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0157" + }, undefined, false, undefined, this))]: 343, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0158" + }, undefined, false, undefined, this))]: 344, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0159" + }, undefined, false, undefined, this))]: 345, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015A" + }, undefined, false, undefined, this))]: 346, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015B" + }, undefined, false, undefined, this))]: 347, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015C" + }, undefined, false, undefined, this))]: 348, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015D" + }, undefined, false, undefined, this))]: 349, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015E" + }, undefined, false, undefined, this))]: 350, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u015F" + }, undefined, false, undefined, this))]: 351, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0160" + }, undefined, false, undefined, this))]: 352, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0161" + }, undefined, false, undefined, this))]: 353, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0162" + }, undefined, false, undefined, this))]: 354, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0163" + }, undefined, false, undefined, this))]: 355, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0164" + }, undefined, false, undefined, this))]: 356, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0165" + }, undefined, false, undefined, this))]: 357, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0166" + }, undefined, false, undefined, this))]: 358, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0167" + }, undefined, false, undefined, this))]: 359, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0168" + }, undefined, false, undefined, this))]: 360, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0169" + }, undefined, false, undefined, this))]: 361, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016A" + }, undefined, false, undefined, this))]: 362, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016B" + }, undefined, false, undefined, this))]: 363, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016C" + }, undefined, false, undefined, this))]: 364, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016D" + }, undefined, false, undefined, this))]: 365, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016E" + }, undefined, false, undefined, this))]: 366, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u016F" + }, undefined, false, undefined, this))]: 367, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0170" + }, undefined, false, undefined, this))]: 368, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0171" + }, undefined, false, undefined, this))]: 369, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0172" + }, undefined, false, undefined, this))]: 370, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0173" + }, undefined, false, undefined, this))]: 371, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0174" + }, undefined, false, undefined, this))]: 372, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0175" + }, undefined, false, undefined, this))]: 373, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0176" + }, undefined, false, undefined, this))]: 374, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0177" + }, undefined, false, undefined, this))]: 375, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0178" + }, undefined, false, undefined, this))]: 376, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0179" + }, undefined, false, undefined, this))]: 377, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017A" + }, undefined, false, undefined, this))]: 378, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017B" + }, undefined, false, undefined, this))]: 379, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017C" + }, undefined, false, undefined, this))]: 380, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017D" + }, undefined, false, undefined, this))]: 381, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017E" + }, undefined, false, undefined, this))]: 382, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u017F" + }, undefined, false, undefined, this))]: 383, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0180" + }, undefined, false, undefined, this))]: 384, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0181" + }, undefined, false, undefined, this))]: 385, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0182" + }, undefined, false, undefined, this))]: 386, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0183" + }, undefined, false, undefined, this))]: 387, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0184" + }, undefined, false, undefined, this))]: 388, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0185" + }, undefined, false, undefined, this))]: 389, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0186" + }, undefined, false, undefined, this))]: 390, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0187" + }, undefined, false, undefined, this))]: 391, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0188" + }, undefined, false, undefined, this))]: 392, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0189" + }, undefined, false, undefined, this))]: 393, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018A" + }, undefined, false, undefined, this))]: 394, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018B" + }, undefined, false, undefined, this))]: 395, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018C" + }, undefined, false, undefined, this))]: 396, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018D" + }, undefined, false, undefined, this))]: 397, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018E" + }, undefined, false, undefined, this))]: 398, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u018F" + }, undefined, false, undefined, this))]: 399, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0190" + }, undefined, false, undefined, this))]: 400, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0191" + }, undefined, false, undefined, this))]: 401, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0192" + }, undefined, false, undefined, this))]: 402, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0193" + }, undefined, false, undefined, this))]: 403, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0194" + }, undefined, false, undefined, this))]: 404, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0195" + }, undefined, false, undefined, this))]: 405, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0196" + }, undefined, false, undefined, this))]: 406, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0197" + }, undefined, false, undefined, this))]: 407, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0198" + }, undefined, false, undefined, this))]: 408, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0199" + }, undefined, false, undefined, this))]: 409, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019A" + }, undefined, false, undefined, this))]: 410, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019B" + }, undefined, false, undefined, this))]: 411, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019C" + }, undefined, false, undefined, this))]: 412, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019D" + }, undefined, false, undefined, this))]: 413, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019E" + }, undefined, false, undefined, this))]: 414, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u019F" + }, undefined, false, undefined, this))]: 415, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A0" + }, undefined, false, undefined, this))]: 416, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A1" + }, undefined, false, undefined, this))]: 417, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A2" + }, undefined, false, undefined, this))]: 418, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A3" + }, undefined, false, undefined, this))]: 419, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A4" + }, undefined, false, undefined, this))]: 420, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A5" + }, undefined, false, undefined, this))]: 421, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A6" + }, undefined, false, undefined, this))]: 422, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A7" + }, undefined, false, undefined, this))]: 423, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A8" + }, undefined, false, undefined, this))]: 424, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01A9" + }, undefined, false, undefined, this))]: 425, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AA" + }, undefined, false, undefined, this))]: 426, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AB" + }, undefined, false, undefined, this))]: 427, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AC" + }, undefined, false, undefined, this))]: 428, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AD" + }, undefined, false, undefined, this))]: 429, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AE" + }, undefined, false, undefined, this))]: 430, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01AF" + }, undefined, false, undefined, this))]: 431, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B0" + }, undefined, false, undefined, this))]: 432, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B1" + }, undefined, false, undefined, this))]: 433, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B2" + }, undefined, false, undefined, this))]: 434, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B3" + }, undefined, false, undefined, this))]: 435, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B4" + }, undefined, false, undefined, this))]: 436, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B5" + }, undefined, false, undefined, this))]: 437, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B6" + }, undefined, false, undefined, this))]: 438, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B7" + }, undefined, false, undefined, this))]: 439, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B8" + }, undefined, false, undefined, this))]: 440, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01B9" + }, undefined, false, undefined, this))]: 441, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BA" + }, undefined, false, undefined, this))]: 442, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BB" + }, undefined, false, undefined, this))]: 443, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BC" + }, undefined, false, undefined, this))]: 444, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BD" + }, undefined, false, undefined, this))]: 445, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BE" + }, undefined, false, undefined, this))]: 446, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01BF" + }, undefined, false, undefined, this))]: 447, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C0" + }, undefined, false, undefined, this))]: 448, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C1" + }, undefined, false, undefined, this))]: 449, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C2" + }, undefined, false, undefined, this))]: 450, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C3" + }, undefined, false, undefined, this))]: 451, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C4" + }, undefined, false, undefined, this))]: 452, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C5" + }, undefined, false, undefined, this))]: 453, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C6" + }, undefined, false, undefined, this))]: 454, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C7" + }, undefined, false, undefined, this))]: 455, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C8" + }, undefined, false, undefined, this))]: 456, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01C9" + }, undefined, false, undefined, this))]: 457, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CA" + }, undefined, false, undefined, this))]: 458, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CB" + }, undefined, false, undefined, this))]: 459, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CC" + }, undefined, false, undefined, this))]: 460, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CD" + }, undefined, false, undefined, this))]: 461, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CE" + }, undefined, false, undefined, this))]: 462, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01CF" + }, undefined, false, undefined, this))]: 463, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D0" + }, undefined, false, undefined, this))]: 464, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D1" + }, undefined, false, undefined, this))]: 465, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D2" + }, undefined, false, undefined, this))]: 466, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D3" + }, undefined, false, undefined, this))]: 467, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D4" + }, undefined, false, undefined, this))]: 468, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D5" + }, undefined, false, undefined, this))]: 469, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D6" + }, undefined, false, undefined, this))]: 470, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D7" + }, undefined, false, undefined, this))]: 471, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D8" + }, undefined, false, undefined, this))]: 472, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01D9" + }, undefined, false, undefined, this))]: 473, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DA" + }, undefined, false, undefined, this))]: 474, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DB" + }, undefined, false, undefined, this))]: 475, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DC" + }, undefined, false, undefined, this))]: 476, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DD" + }, undefined, false, undefined, this))]: 477, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DE" + }, undefined, false, undefined, this))]: 478, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01DF" + }, undefined, false, undefined, this))]: 479, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E0" + }, undefined, false, undefined, this))]: 480, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E1" + }, undefined, false, undefined, this))]: 481, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E2" + }, undefined, false, undefined, this))]: 482, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E3" + }, undefined, false, undefined, this))]: 483, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E4" + }, undefined, false, undefined, this))]: 484, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E5" + }, undefined, false, undefined, this))]: 485, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E6" + }, undefined, false, undefined, this))]: 486, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E7" + }, undefined, false, undefined, this))]: 487, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E8" + }, undefined, false, undefined, this))]: 488, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01E9" + }, undefined, false, undefined, this))]: 489, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EA" + }, undefined, false, undefined, this))]: 490, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EB" + }, undefined, false, undefined, this))]: 491, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EC" + }, undefined, false, undefined, this))]: 492, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01ED" + }, undefined, false, undefined, this))]: 493, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EE" + }, undefined, false, undefined, this))]: 494, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01EF" + }, undefined, false, undefined, this))]: 495, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F0" + }, undefined, false, undefined, this))]: 496, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F1" + }, undefined, false, undefined, this))]: 497, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F2" + }, undefined, false, undefined, this))]: 498, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F3" + }, undefined, false, undefined, this))]: 499, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F4" + }, undefined, false, undefined, this))]: 500, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F5" + }, undefined, false, undefined, this))]: 501, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F6" + }, undefined, false, undefined, this))]: 502, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F7" + }, undefined, false, undefined, this))]: 503, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F8" + }, undefined, false, undefined, this))]: 504, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01F9" + }, undefined, false, undefined, this))]: 505, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FA" + }, undefined, false, undefined, this))]: 506, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FB" + }, undefined, false, undefined, this))]: 507, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FC" + }, undefined, false, undefined, this))]: 508, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FD" + }, undefined, false, undefined, this))]: 509, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FE" + }, undefined, false, undefined, this))]: 510, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u01FF" + }, undefined, false, undefined, this))]: 511, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0200" + }, undefined, false, undefined, this))]: 512, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0201" + }, undefined, false, undefined, this))]: 513, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0202" + }, undefined, false, undefined, this))]: 514, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0203" + }, undefined, false, undefined, this))]: 515, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0204" + }, undefined, false, undefined, this))]: 516, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0205" + }, undefined, false, undefined, this))]: 517, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0206" + }, undefined, false, undefined, this))]: 518, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0207" + }, undefined, false, undefined, this))]: 519, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0208" + }, undefined, false, undefined, this))]: 520, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0209" + }, undefined, false, undefined, this))]: 521, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020A" + }, undefined, false, undefined, this))]: 522, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020B" + }, undefined, false, undefined, this))]: 523, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020C" + }, undefined, false, undefined, this))]: 524, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020D" + }, undefined, false, undefined, this))]: 525, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020E" + }, undefined, false, undefined, this))]: 526, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u020F" + }, undefined, false, undefined, this))]: 527, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0210" + }, undefined, false, undefined, this))]: 528, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0211" + }, undefined, false, undefined, this))]: 529, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0212" + }, undefined, false, undefined, this))]: 530, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0213" + }, undefined, false, undefined, this))]: 531, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0214" + }, undefined, false, undefined, this))]: 532, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0215" + }, undefined, false, undefined, this))]: 533, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0216" + }, undefined, false, undefined, this))]: 534, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0217" + }, undefined, false, undefined, this))]: 535, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0218" + }, undefined, false, undefined, this))]: 536, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0219" + }, undefined, false, undefined, this))]: 537, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021A" + }, undefined, false, undefined, this))]: 538, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021B" + }, undefined, false, undefined, this))]: 539, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021C" + }, undefined, false, undefined, this))]: 540, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021D" + }, undefined, false, undefined, this))]: 541, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021E" + }, undefined, false, undefined, this))]: 542, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u021F" + }, undefined, false, undefined, this))]: 543, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0220" + }, undefined, false, undefined, this))]: 544, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0221" + }, undefined, false, undefined, this))]: 545, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0222" + }, undefined, false, undefined, this))]: 546, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0223" + }, undefined, false, undefined, this))]: 547, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0224" + }, undefined, false, undefined, this))]: 548, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0225" + }, undefined, false, undefined, this))]: 549, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0226" + }, undefined, false, undefined, this))]: 550, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0227" + }, undefined, false, undefined, this))]: 551, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0228" + }, undefined, false, undefined, this))]: 552, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0229" + }, undefined, false, undefined, this))]: 553, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022A" + }, undefined, false, undefined, this))]: 554, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022B" + }, undefined, false, undefined, this))]: 555, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022C" + }, undefined, false, undefined, this))]: 556, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022D" + }, undefined, false, undefined, this))]: 557, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022E" + }, undefined, false, undefined, this))]: 558, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u022F" + }, undefined, false, undefined, this))]: 559, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0230" + }, undefined, false, undefined, this))]: 560, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0231" + }, undefined, false, undefined, this))]: 561, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0232" + }, undefined, false, undefined, this))]: 562, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0233" + }, undefined, false, undefined, this))]: 563, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0234" + }, undefined, false, undefined, this))]: 564, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0235" + }, undefined, false, undefined, this))]: 565, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0236" + }, undefined, false, undefined, this))]: 566, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0237" + }, undefined, false, undefined, this))]: 567, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0238" + }, undefined, false, undefined, this))]: 568, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0239" + }, undefined, false, undefined, this))]: 569, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023A" + }, undefined, false, undefined, this))]: 570, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023B" + }, undefined, false, undefined, this))]: 571, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023C" + }, undefined, false, undefined, this))]: 572, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023D" + }, undefined, false, undefined, this))]: 573, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023E" + }, undefined, false, undefined, this))]: 574, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u023F" + }, undefined, false, undefined, this))]: 575, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0240" + }, undefined, false, undefined, this))]: 576, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0241" + }, undefined, false, undefined, this))]: 577, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0242" + }, undefined, false, undefined, this))]: 578, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0243" + }, undefined, false, undefined, this))]: 579, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0244" + }, undefined, false, undefined, this))]: 580, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0245" + }, undefined, false, undefined, this))]: 581, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0246" + }, undefined, false, undefined, this))]: 582, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0247" + }, undefined, false, undefined, this))]: 583, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0248" + }, undefined, false, undefined, this))]: 584, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0249" + }, undefined, false, undefined, this))]: 585, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024A" + }, undefined, false, undefined, this))]: 586, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024B" + }, undefined, false, undefined, this))]: 587, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024C" + }, undefined, false, undefined, this))]: 588, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024D" + }, undefined, false, undefined, this))]: 589, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024E" + }, undefined, false, undefined, this))]: 590, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u024F" + }, undefined, false, undefined, this))]: 591, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0250" + }, undefined, false, undefined, this))]: 592, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0251" + }, undefined, false, undefined, this))]: 593, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0252" + }, undefined, false, undefined, this))]: 594, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0253" + }, undefined, false, undefined, this))]: 595, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0254" + }, undefined, false, undefined, this))]: 596, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0255" + }, undefined, false, undefined, this))]: 597, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0256" + }, undefined, false, undefined, this))]: 598, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0257" + }, undefined, false, undefined, this))]: 599, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0258" + }, undefined, false, undefined, this))]: 600, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0259" + }, undefined, false, undefined, this))]: 601, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025A" + }, undefined, false, undefined, this))]: 602, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025B" + }, undefined, false, undefined, this))]: 603, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025C" + }, undefined, false, undefined, this))]: 604, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025D" + }, undefined, false, undefined, this))]: 605, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025E" + }, undefined, false, undefined, this))]: 606, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u025F" + }, undefined, false, undefined, this))]: 607, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0260" + }, undefined, false, undefined, this))]: 608, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0261" + }, undefined, false, undefined, this))]: 609, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0262" + }, undefined, false, undefined, this))]: 610, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0263" + }, undefined, false, undefined, this))]: 611, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0264" + }, undefined, false, undefined, this))]: 612, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0265" + }, undefined, false, undefined, this))]: 613, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0266" + }, undefined, false, undefined, this))]: 614, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0267" + }, undefined, false, undefined, this))]: 615, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0268" + }, undefined, false, undefined, this))]: 616, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0269" + }, undefined, false, undefined, this))]: 617, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026A" + }, undefined, false, undefined, this))]: 618, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026B" + }, undefined, false, undefined, this))]: 619, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026C" + }, undefined, false, undefined, this))]: 620, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026D" + }, undefined, false, undefined, this))]: 621, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026E" + }, undefined, false, undefined, this))]: 622, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u026F" + }, undefined, false, undefined, this))]: 623, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0270" + }, undefined, false, undefined, this))]: 624, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0271" + }, undefined, false, undefined, this))]: 625, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0272" + }, undefined, false, undefined, this))]: 626, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0273" + }, undefined, false, undefined, this))]: 627, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0274" + }, undefined, false, undefined, this))]: 628, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0275" + }, undefined, false, undefined, this))]: 629, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0276" + }, undefined, false, undefined, this))]: 630, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0277" + }, undefined, false, undefined, this))]: 631, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0278" + }, undefined, false, undefined, this))]: 632, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0279" + }, undefined, false, undefined, this))]: 633, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027A" + }, undefined, false, undefined, this))]: 634, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027B" + }, undefined, false, undefined, this))]: 635, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027C" + }, undefined, false, undefined, this))]: 636, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027D" + }, undefined, false, undefined, this))]: 637, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027E" + }, undefined, false, undefined, this))]: 638, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u027F" + }, undefined, false, undefined, this))]: 639, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0280" + }, undefined, false, undefined, this))]: 640, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0281" + }, undefined, false, undefined, this))]: 641, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0282" + }, undefined, false, undefined, this))]: 642, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0283" + }, undefined, false, undefined, this))]: 643, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0284" + }, undefined, false, undefined, this))]: 644, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0285" + }, undefined, false, undefined, this))]: 645, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0286" + }, undefined, false, undefined, this))]: 646, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0287" + }, undefined, false, undefined, this))]: 647, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0288" + }, undefined, false, undefined, this))]: 648, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0289" + }, undefined, false, undefined, this))]: 649, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028A" + }, undefined, false, undefined, this))]: 650, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028B" + }, undefined, false, undefined, this))]: 651, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028C" + }, undefined, false, undefined, this))]: 652, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028D" + }, undefined, false, undefined, this))]: 653, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028E" + }, undefined, false, undefined, this))]: 654, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u028F" + }, undefined, false, undefined, this))]: 655, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0290" + }, undefined, false, undefined, this))]: 656, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0291" + }, undefined, false, undefined, this))]: 657, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0292" + }, undefined, false, undefined, this))]: 658, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0293" + }, undefined, false, undefined, this))]: 659, + [ReactDOM.renderToString(jsx(JSXFrag, { + children: "\u0294" + }, undefined, false, undefined, this))]: 660 +}; + +export function test() { + for (let rawKey in elements) { + var key = rawKey; + if (rawKey.startsWith("&")) { + var txt = document.createElement("textarea"); + txt.innerHTML = rawKey; + key = txt.value; + } + console.assert(elements[rawKey] === key.codePointAt(0), `${key} is not ${elements[rawKey]}`); + } + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/jsx-entities.jsx.map diff --git a/test/snapshots/jsx-spacing.debug.jsx b/test/snapshots/jsx-spacing.debug.jsx new file mode 100644 index 000000000..bfbcab92f --- /dev/null +++ b/test/snapshots/jsx-spacing.debug.jsx @@ -0,0 +1,49 @@ +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); +var jsx = require(JSX).jsxDEV; + +import * as $1f6f0e67 from "http://localhost:8080/node_modules/react-dom/server.browser.js"; +var ReactDOM = require($1f6f0e67); +const ReturnDescriptionAsString = ({ description }) => description; + +export function test() { + const _bun = ReactDOM.renderToString(jsx(ReturnDescriptionAsString, { + description: `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +` + }, undefined, false, undefined, this)); + const el = document.createElement("textarea"); + el.innerHTML = _bun; + const bun = el.value; + const esbuild = `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +`; + const tsc = `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +`; + console.assert(bun === esbuild && bun === tsc, `strings did not match: ${JSON.stringify({ + received: bun, + expected: esbuild + }, null, 2)}`); + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/jsx-spacing.jsx.map diff --git a/test/snapshots/jsx-spacing.hmr.debug.jsx b/test/snapshots/jsx-spacing.hmr.debug.jsx new file mode 100644 index 000000000..d9ec4e204 --- /dev/null +++ b/test/snapshots/jsx-spacing.hmr.debug.jsx @@ -0,0 +1,74 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; + +(hmr._load = function() { + const ReturnDescriptionAsString = ({ description }) => description; + function test() { + const _bun = ReactDOM.renderToString(jsx(ReturnDescriptionAsString, { + description: `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +` + }, undefined, false, undefined, this)); + const el = document.createElement("textarea"); + el.innerHTML = _bun; + const bun = el.value; + const esbuild = `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +`; + const tsc = `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +`; + console.assert(bun === esbuild && bun === tsc, `strings did not match: ${JSON.stringify({ + received: bun, + expected: esbuild + }, null, 2)}`); + testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/jsx-spacing.jsx.map diff --git a/test/snapshots/jsx-spacing.hmr.jsx b/test/snapshots/jsx-spacing.hmr.jsx new file mode 100644 index 000000000..59287257b --- /dev/null +++ b/test/snapshots/jsx-spacing.hmr.jsx @@ -0,0 +1,71 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; +(hmr._load = function() { + const ReturnDescriptionAsString = ({ description }) => description; + function test() { + const _bun = ReactDOM.renderToString(jsx(ReturnDescriptionAsString, { + description: `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +` + }, undefined, false, undefined, this)); + const el = document.createElement("textarea"); + el.innerHTML = _bun; + const bun = el.value; + const esbuild = `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +`; + const tsc = `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +`; + console.assert(bun === esbuild && bun === tsc, `strings did not match: ${JSON.stringify({ + received: bun, + expected: esbuild + }, null, 2)}`); + testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/jsx-spacing.jsx.map diff --git a/test/snapshots/jsx-spacing.jsx b/test/snapshots/jsx-spacing.jsx new file mode 100644 index 000000000..bfbcab92f --- /dev/null +++ b/test/snapshots/jsx-spacing.jsx @@ -0,0 +1,49 @@ +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); +var jsx = require(JSX).jsxDEV; + +import * as $1f6f0e67 from "http://localhost:8080/node_modules/react-dom/server.browser.js"; +var ReactDOM = require($1f6f0e67); +const ReturnDescriptionAsString = ({ description }) => description; + +export function test() { + const _bun = ReactDOM.renderToString(jsx(ReturnDescriptionAsString, { + description: `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +` + }, undefined, false, undefined, this)); + const el = document.createElement("textarea"); + el.innerHTML = _bun; + const bun = el.value; + const esbuild = `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +`; + const tsc = `line1 +line2 trailing space + +line4 no trailing space 'single quote' \\t\\f\\v\\uF000 \`template string\` + +line6 no trailing space +line7 trailing newline that \${terminates} the string literal +`; + console.assert(bun === esbuild && bun === tsc, `strings did not match: ${JSON.stringify({ + received: bun, + expected: esbuild + }, null, 2)}`); + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/jsx-spacing.jsx.map diff --git a/test/snapshots/latin1-chars-in-regexp.debug.js b/test/snapshots/latin1-chars-in-regexp.debug.js new file mode 100644 index 000000000..108874c39 --- /dev/null +++ b/test/snapshots/latin1-chars-in-regexp.debug.js @@ -0,0 +1,69 @@ +export var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; +export var re_btou = new RegExp([ + "[\xC0-\xDF][\x80-\xBF]", + "[\xE0-\xEF][\x80-\xBF]{2}", + "[\xF0-\xF7][\x80-\xBF]{3}" +].join("|"), "g"); +const encoder = new TextEncoder; +const realLines = [ + "[\xC0-\xDF][\x80-\xBF]", + "[\xE0-\xEF][\x80-\xBF]{2}", + "[\xF0-\xF7][\x80-\xBF]{3}" +]; +const real = realLines.map((input) => Array.from(encoder.encode(input))); +const expected = [ + [91, 195, 128, 45, 195, 159, 93, 91, 194, 128, 45, 194, 191, 93], + [ + 91, + 195, + 160, + 45, + 195, + 175, + 93, + 91, + 194, + 128, + 45, + 194, + 191, + 93, + 123, + 50, + 125 + ], + [ + 91, + 195, + 176, + 45, + 195, + 183, + 93, + 91, + 194, + 128, + 45, + 194, + 191, + 93, + 123, + 51, + 125 + ] +]; +const newlinePreserved = `\n`; +export function test() { + if (!real.every((point, i) => point.every((val, j) => val === expected[i][j]))) + throw new Error(`test failed +${JSON.stringify({ expected, real }, null, 2)}`); + if (newlinePreserved.length !== 1 || newlinePreserved.charCodeAt(0) !== 10) + throw new Error("Newline was not preserved"); + const decoder = new TextDecoder("utf8"); + if (!realLines.every((line, i) => decoder.decode(Uint8Array.from(expected[i])) === line)) + throw new Error(`test failed. Lines did not match. +${JSON.stringify({ expected, real }, null, 2)}`); + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/latin1-chars-in-regexp.js.map diff --git a/test/snapshots/latin1-chars-in-regexp.hmr.debug.js b/test/snapshots/latin1-chars-in-regexp.hmr.debug.js new file mode 100644 index 000000000..fee5714a2 --- /dev/null +++ b/test/snapshots/latin1-chars-in-regexp.hmr.debug.js @@ -0,0 +1,101 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(1430071586, "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([ + "[\xC0-\xDF][\x80-\xBF]", + "[\xE0-\xEF][\x80-\xBF]{2}", + "[\xF0-\xF7][\x80-\xBF]{3}" + ].join("|"), "g"); + const encoder = new TextEncoder; + const realLines = [ + "[\xC0-\xDF][\x80-\xBF]", + "[\xE0-\xEF][\x80-\xBF]{2}", + "[\xF0-\xF7][\x80-\xBF]{3}" + ]; + const real = realLines.map((input) => Array.from(encoder.encode(input))); + const expected = [ + [91, 195, 128, 45, 195, 159, 93, 91, 194, 128, 45, 194, 191, 93], + [ + 91, + 195, + 160, + 45, + 195, + 175, + 93, + 91, + 194, + 128, + 45, + 194, + 191, + 93, + 123, + 50, + 125 + ], + [ + 91, + 195, + 176, + 45, + 195, + 183, + 93, + 91, + 194, + 128, + 45, + 194, + 191, + 93, + 123, + 51, + 125 + ] + ]; + const newlinePreserved = `\n`; + function test() { + if (!real.every((point, i) => point.every((val, j) => val === expected[i][j]))) + throw new Error(`test failed +${JSON.stringify({ expected, real }, null, 2)}`); + if (newlinePreserved.length !== 1 || newlinePreserved.charCodeAt(0) !== 10) + throw new Error("Newline was not preserved"); + const decoder = new TextDecoder("utf8"); + if (!realLines.every((line, i) => decoder.decode(Uint8Array.from(expected[i])) === line)) + throw new Error(`test failed. Lines did not match. +${JSON.stringify({ expected, real }, null, 2)}`); + testDone(import.meta.url); + } + hmr.exportAll({ + re_utob: () => re_utob, + re_btou: () => re_btou, + test: () => test + }); +})(); +var $$hmr_re_utob = hmr.exports.re_utob, $$hmr_re_btou = hmr.exports.re_btou, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_re_utob = exports.re_utob; + $$hmr_re_btou = exports.re_btou; + $$hmr_test = exports.test; +}; + +export { + $$hmr_re_utob as re_utob, + $$hmr_re_btou as re_btou, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/latin1-chars-in-regexp.js.map diff --git a/test/snapshots/latin1-chars-in-regexp.hmr.js b/test/snapshots/latin1-chars-in-regexp.hmr.js new file mode 100644 index 000000000..afd3b813e --- /dev/null +++ b/test/snapshots/latin1-chars-in-regexp.hmr.js @@ -0,0 +1,99 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(1430071586, "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([ + "[\xC0-\xDF][\x80-\xBF]", + "[\xE0-\xEF][\x80-\xBF]{2}", + "[\xF0-\xF7][\x80-\xBF]{3}" + ].join("|"), "g"); + const encoder = new TextEncoder; + const realLines = [ + "[\xC0-\xDF][\x80-\xBF]", + "[\xE0-\xEF][\x80-\xBF]{2}", + "[\xF0-\xF7][\x80-\xBF]{3}" + ]; + const real = realLines.map((input) => Array.from(encoder.encode(input))); + const expected = [ + [91, 195, 128, 45, 195, 159, 93, 91, 194, 128, 45, 194, 191, 93], + [ + 91, + 195, + 160, + 45, + 195, + 175, + 93, + 91, + 194, + 128, + 45, + 194, + 191, + 93, + 123, + 50, + 125 + ], + [ + 91, + 195, + 176, + 45, + 195, + 183, + 93, + 91, + 194, + 128, + 45, + 194, + 191, + 93, + 123, + 51, + 125 + ] + ]; + const newlinePreserved = `\n`; + function test() { + if (!real.every((point, i) => point.every((val, j) => val === expected[i][j]))) + throw new Error(`test failed +${JSON.stringify({ expected, real }, null, 2)}`); + if (newlinePreserved.length !== 1 || newlinePreserved.charCodeAt(0) !== 10) + throw new Error("Newline was not preserved"); + const decoder = new TextDecoder("utf8"); + if (!realLines.every((line, i) => decoder.decode(Uint8Array.from(expected[i])) === line)) + throw new Error(`test failed. Lines did not match. +${JSON.stringify({ expected, real }, null, 2)}`); + testDone(import.meta.url); + } + hmr.exportAll({ + re_utob: () => re_utob, + re_btou: () => re_btou, + test: () => test + }); +})(); +var $$hmr_re_utob = hmr.exports.re_utob, $$hmr_re_btou = hmr.exports.re_btou, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_re_utob = exports.re_utob; + $$hmr_re_btou = exports.re_btou; + $$hmr_test = exports.test; +}; + +export { + $$hmr_re_utob as re_utob, + $$hmr_re_btou as re_btou, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/latin1-chars-in-regexp.js.map diff --git a/test/snapshots/latin1-chars-in-regexp.js b/test/snapshots/latin1-chars-in-regexp.js new file mode 100644 index 000000000..108874c39 --- /dev/null +++ b/test/snapshots/latin1-chars-in-regexp.js @@ -0,0 +1,69 @@ +export var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; +export var re_btou = new RegExp([ + "[\xC0-\xDF][\x80-\xBF]", + "[\xE0-\xEF][\x80-\xBF]{2}", + "[\xF0-\xF7][\x80-\xBF]{3}" +].join("|"), "g"); +const encoder = new TextEncoder; +const realLines = [ + "[\xC0-\xDF][\x80-\xBF]", + "[\xE0-\xEF][\x80-\xBF]{2}", + "[\xF0-\xF7][\x80-\xBF]{3}" +]; +const real = realLines.map((input) => Array.from(encoder.encode(input))); +const expected = [ + [91, 195, 128, 45, 195, 159, 93, 91, 194, 128, 45, 194, 191, 93], + [ + 91, + 195, + 160, + 45, + 195, + 175, + 93, + 91, + 194, + 128, + 45, + 194, + 191, + 93, + 123, + 50, + 125 + ], + [ + 91, + 195, + 176, + 45, + 195, + 183, + 93, + 91, + 194, + 128, + 45, + 194, + 191, + 93, + 123, + 51, + 125 + ] +]; +const newlinePreserved = `\n`; +export function test() { + if (!real.every((point, i) => point.every((val, j) => val === expected[i][j]))) + throw new Error(`test failed +${JSON.stringify({ expected, real }, null, 2)}`); + if (newlinePreserved.length !== 1 || newlinePreserved.charCodeAt(0) !== 10) + throw new Error("Newline was not preserved"); + const decoder = new TextDecoder("utf8"); + if (!realLines.every((line, i) => decoder.decode(Uint8Array.from(expected[i])) === line)) + throw new Error(`test failed. Lines did not match. +${JSON.stringify({ expected, real }, null, 2)}`); + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/latin1-chars-in-regexp.js.map diff --git a/test/snapshots/lodash-regexp.debug.js b/test/snapshots/lodash-regexp.debug.js new file mode 100644 index 000000000..b1566fb6d --- /dev/null +++ b/test/snapshots/lodash-regexp.debug.js @@ -0,0 +1,23 @@ +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); +export function test() { + const foo = [1, 2, 3, 4, 6]; + + const bar = shuffle(foo); + console.assert(bar !== foo); + console.assert(bar.length === foo.length); + bar.sort(); + foo.sort(); + for (let i = 0;i < bar.length; i++) { + console.assert(bar[i] === foo[i], "expected " + i + " to be " + foo[i]); + console.assert(typeof bar[i] === "number"); + console.assert(typeof foo[i] === "number"); + } + return testDone(import.meta.url); +} + + +//# sourceMappingURL=http://localhost:8080/lodash-regexp.js.map diff --git a/test/snapshots/lodash-regexp.hmr.debug.js b/test/snapshots/lodash-regexp.hmr.debug.js new file mode 100644 index 000000000..959e9e9c1 --- /dev/null +++ b/test/snapshots/lodash-regexp.hmr.debug.js @@ -0,0 +1,47 @@ +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import * as $60f52dc2 from "http://localhost:8080/node_modules/lodash/lodash.js"; +var { shuffle} = require($60f52dc2); +var hmr = new FastHMR(2158065009, "lodash-regexp.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + function test() { + const foo = [1, 2, 3, 4, 6]; + const bar = shuffle(foo); + console.assert(bar !== foo); + console.assert(bar.length === foo.length); + bar.sort(); + foo.sort(); + for (let i = 0;i < bar.length; i++) { + console.assert(bar[i] === foo[i], "expected " + i + " to be " + foo[i]); + console.assert(typeof bar[i] === "number"); + console.assert(typeof foo[i] === "number"); + } + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/lodash-regexp.js.map diff --git a/test/snapshots/lodash-regexp.hmr.js b/test/snapshots/lodash-regexp.hmr.js new file mode 100644 index 000000000..e5d6b9130 --- /dev/null +++ b/test/snapshots/lodash-regexp.hmr.js @@ -0,0 +1,45 @@ +import { +__require as require +} from "http://localhost:3000/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:3000/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; +(hmr._load = function() { + function test() { + const foo = [1, 2, 3, 4, 6]; + const bar = shuffle(foo); + console.assert(bar !== foo); + console.assert(bar.length === foo.length); + bar.sort(); + foo.sort(); + for (let i = 0;i < bar.length; i++) { + console.assert(bar[i] === foo[i], "expected " + i + " to be " + foo[i]); + console.assert(typeof bar[i] === "number"); + console.assert(typeof foo[i] === "number"); + } + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:3000/lodash-regexp.js.map diff --git a/test/snapshots/lodash-regexp.js b/test/snapshots/lodash-regexp.js new file mode 100644 index 000000000..b1566fb6d --- /dev/null +++ b/test/snapshots/lodash-regexp.js @@ -0,0 +1,23 @@ +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); +export function test() { + const foo = [1, 2, 3, 4, 6]; + + const bar = shuffle(foo); + console.assert(bar !== foo); + console.assert(bar.length === foo.length); + bar.sort(); + foo.sort(); + for (let i = 0;i < bar.length; i++) { + console.assert(bar[i] === foo[i], "expected " + i + " to be " + foo[i]); + console.assert(typeof bar[i] === "number"); + console.assert(typeof foo[i] === "number"); + } + return testDone(import.meta.url); +} + + +//# sourceMappingURL=http://localhost:8080/lodash-regexp.js.map diff --git a/test/snapshots/multiple-imports.debug.js b/test/snapshots/multiple-imports.debug.js new file mode 100644 index 000000000..af9396b46 --- /dev/null +++ b/test/snapshots/multiple-imports.debug.js @@ -0,0 +1,25 @@ +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); +var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; + +var { default: React} = require($bbcd215f); +var { default: React2} = require($bbcd215f); +const bacon = React; + +const bacon2 = jsx(JSXFrag, { + children: "hello" +}, undefined, false, undefined, this); +export function test() { + console.assert(bacon === React); + console.assert(bacon === React2); + console.assert(typeof bacon2 !== "undefined"); + console.assert(React.isValidElement(bacon2)); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/multiple-imports.js.map diff --git a/test/snapshots/multiple-imports.hmr.debug.js b/test/snapshots/multiple-imports.hmr.debug.js new file mode 100644 index 000000000..5cca375b2 --- /dev/null +++ b/test/snapshots/multiple-imports.hmr.debug.js @@ -0,0 +1,50 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; + +(hmr._load = function() { + const bacon = React; + const bacon2 = jsx(JSXFrag, { + children: "hello" + }, undefined, false, undefined, this); + function test() { + console.assert(bacon === React); + console.assert(bacon === React2); + console.assert(typeof bacon2 !== "undefined"); + console.assert(React.isValidElement(bacon2)); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/multiple-imports.js.map diff --git a/test/snapshots/multiple-imports.hmr.js b/test/snapshots/multiple-imports.hmr.js new file mode 100644 index 000000000..59d620c07 --- /dev/null +++ b/test/snapshots/multiple-imports.hmr.js @@ -0,0 +1,47 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:3000/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__require as require +} from "http://localhost:3000/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); +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; +(hmr._load = function() { + const bacon = React; + const bacon2 = jsx(JSXFrag, { + children: "hello" + }, undefined, false, undefined, this); + function test() { + console.assert(bacon === React); + console.assert(bacon === React2); + console.assert(typeof bacon2 !== "undefined"); + console.assert(React.isValidElement(bacon2)); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:3000/multiple-imports.js.map diff --git a/test/snapshots/multiple-imports.js b/test/snapshots/multiple-imports.js new file mode 100644 index 000000000..af9396b46 --- /dev/null +++ b/test/snapshots/multiple-imports.js @@ -0,0 +1,25 @@ +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); +var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; + +var { default: React} = require($bbcd215f); +var { default: React2} = require($bbcd215f); +const bacon = React; + +const bacon2 = jsx(JSXFrag, { + children: "hello" +}, undefined, false, undefined, this); +export function test() { + console.assert(bacon === React); + console.assert(bacon === React2); + console.assert(typeof bacon2 !== "undefined"); + console.assert(React.isValidElement(bacon2)); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/multiple-imports.js.map diff --git a/test/snapshots/multiple-var.debug.js b/test/snapshots/multiple-var.debug.js new file mode 100644 index 000000000..56d31d53e --- /dev/null +++ b/test/snapshots/multiple-var.debug.js @@ -0,0 +1,11 @@ +var foo = true; +globalThis.TRUE_BUT_WE_CANT_TREESHAKE_IT = true; +if (globalThis.TRUE_BUT_WE_CANT_TREESHAKE_IT) + ({ foo } = { foo: false }); +var foo; +export function test() { + console.assert(foo === false, "foo should be false"); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/multiple-var.js.map diff --git a/test/snapshots/multiple-var.hmr.debug.js b/test/snapshots/multiple-var.hmr.debug.js new file mode 100644 index 000000000..a5298f462 --- /dev/null +++ b/test/snapshots/multiple-var.hmr.debug.js @@ -0,0 +1,37 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(2883558553, "multiple-var.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + var foo = true; + globalThis.TRUE_BUT_WE_CANT_TREESHAKE_IT = true; + if (globalThis.TRUE_BUT_WE_CANT_TREESHAKE_IT) + ({ foo } = { foo: false }); + var foo; + function test() { + console.assert(foo === false, "foo should be false"); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/multiple-var.js.map diff --git a/test/snapshots/multiple-var.hmr.js b/test/snapshots/multiple-var.hmr.js new file mode 100644 index 000000000..3acb5b8d3 --- /dev/null +++ b/test/snapshots/multiple-var.hmr.js @@ -0,0 +1,35 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(2883558553, "multiple-var.js", FastRefresh), exports = hmr.exports; +(hmr._load = function() { + var foo = true; + globalThis.TRUE_BUT_WE_CANT_TREESHAKE_IT = true; + if (globalThis.TRUE_BUT_WE_CANT_TREESHAKE_IT) + ({ foo } = { foo: false }); + var foo; + function test() { + console.assert(foo === false, "foo should be false"); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/multiple-var.js.map diff --git a/test/snapshots/multiple-var.js b/test/snapshots/multiple-var.js new file mode 100644 index 000000000..56d31d53e --- /dev/null +++ b/test/snapshots/multiple-var.js @@ -0,0 +1,11 @@ +var foo = true; +globalThis.TRUE_BUT_WE_CANT_TREESHAKE_IT = true; +if (globalThis.TRUE_BUT_WE_CANT_TREESHAKE_IT) + ({ foo } = { foo: false }); +var foo; +export function test() { + console.assert(foo === false, "foo should be false"); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/multiple-var.js.map diff --git a/test/snapshots/number-literal-bug.debug.js b/test/snapshots/number-literal-bug.debug.js new file mode 100644 index 000000000..fb763061d --- /dev/null +++ b/test/snapshots/number-literal-bug.debug.js @@ -0,0 +1,11 @@ +export function test() { + const precision = 10; + try { + parseFloat(0 .toPrecision(precision) + "1"); + } catch (exception) { + throw new Error("Test Failed", exception); + } + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/number-literal-bug.js.map diff --git a/test/snapshots/number-literal-bug.hmr.debug.js b/test/snapshots/number-literal-bug.hmr.debug.js new file mode 100644 index 000000000..852aef372 --- /dev/null +++ b/test/snapshots/number-literal-bug.hmr.debug.js @@ -0,0 +1,37 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(583570002, "number-literal-bug.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + function test() { + const precision = 10; + try { + parseFloat(0 .toPrecision(precision) + "1"); + } catch (exception) { + throw new Error("Test Failed", exception); + } + testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/number-literal-bug.js.map diff --git a/test/snapshots/number-literal-bug.hmr.js b/test/snapshots/number-literal-bug.hmr.js new file mode 100644 index 000000000..cdb63994d --- /dev/null +++ b/test/snapshots/number-literal-bug.hmr.js @@ -0,0 +1,35 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(583570002, "number-literal-bug.js", FastRefresh), exports = hmr.exports; +(hmr._load = function() { + function test() { + const precision = 10; + try { + parseFloat(0 .toPrecision(precision) + "1"); + } catch (exception) { + throw new Error("Test Failed", exception); + } + testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/number-literal-bug.js.map diff --git a/test/snapshots/number-literal-bug.js b/test/snapshots/number-literal-bug.js new file mode 100644 index 000000000..fb763061d --- /dev/null +++ b/test/snapshots/number-literal-bug.js @@ -0,0 +1,11 @@ +export function test() { + const precision = 10; + try { + parseFloat(0 .toPrecision(precision) + "1"); + } catch (exception) { + throw new Error("Test Failed", exception); + } + testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/number-literal-bug.js.map diff --git a/test/snapshots/optional-chain-with-function.debug.js b/test/snapshots/optional-chain-with-function.debug.js new file mode 100644 index 000000000..4b53bb5ed --- /dev/null +++ b/test/snapshots/optional-chain-with-function.debug.js @@ -0,0 +1,15 @@ +export function test() { + try { + const multipleSecondaryValues = undefined; + const ratings = ["123"]; + var bar = multipleSecondaryValues?.map((value) => false); + bar = bar?.multipleSecondaryValues?.map((value) => false); + bar = bar?.bar?.multipleSecondaryValues?.map((value) => false); + bar = {}?.bar?.multipleSecondaryValues?.map((value) => false); + } catch (e) { + throw e; + } + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/optional-chain-with-function.js.map diff --git a/test/snapshots/optional-chain-with-function.hmr.debug.js b/test/snapshots/optional-chain-with-function.hmr.debug.js new file mode 100644 index 000000000..e7f97cb3f --- /dev/null +++ b/test/snapshots/optional-chain-with-function.hmr.debug.js @@ -0,0 +1,41 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(3608848620, "optional-chain-with-function.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + function test() { + try { + const multipleSecondaryValues = undefined; + const ratings = ["123"]; + var bar = multipleSecondaryValues?.map((value) => false); + bar = bar?.multipleSecondaryValues?.map((value) => false); + bar = bar?.bar?.multipleSecondaryValues?.map((value) => false); + bar = {}?.bar?.multipleSecondaryValues?.map((value) => false); + } catch (e) { + throw e; + } + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/optional-chain-with-function.js.map diff --git a/test/snapshots/optional-chain-with-function.hmr.js b/test/snapshots/optional-chain-with-function.hmr.js new file mode 100644 index 000000000..e9a89a827 --- /dev/null +++ b/test/snapshots/optional-chain-with-function.hmr.js @@ -0,0 +1,39 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(3608848620, "optional-chain-with-function.js", FastRefresh), exports = hmr.exports; +(hmr._load = function() { + function test() { + try { + const multipleSecondaryValues = undefined; + const ratings = ["123"]; + var bar = multipleSecondaryValues?.map((value) => false); + bar = bar?.multipleSecondaryValues?.map((value) => false); + bar = bar?.bar?.multipleSecondaryValues?.map((value) => false); + bar = {}?.bar?.multipleSecondaryValues?.map((value) => false); + } catch (e) { + throw e; + } + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/optional-chain-with-function.js.map diff --git a/test/snapshots/optional-chain-with-function.js b/test/snapshots/optional-chain-with-function.js new file mode 100644 index 000000000..4b53bb5ed --- /dev/null +++ b/test/snapshots/optional-chain-with-function.js @@ -0,0 +1,15 @@ +export function test() { + try { + const multipleSecondaryValues = undefined; + const ratings = ["123"]; + var bar = multipleSecondaryValues?.map((value) => false); + bar = bar?.multipleSecondaryValues?.map((value) => false); + bar = bar?.bar?.multipleSecondaryValues?.map((value) => false); + bar = {}?.bar?.multipleSecondaryValues?.map((value) => false); + } catch (e) { + throw e; + } + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/optional-chain-with-function.js.map diff --git a/test/snapshots/package-json-exports/index.debug.js b/test/snapshots/package-json-exports/index.debug.js new file mode 100644 index 000000000..3d41a7985 --- /dev/null +++ b/test/snapshots/package-json-exports/index.debug.js @@ -0,0 +1,22 @@ +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); +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-exports/index.hmr.debug.js b/test/snapshots/package-json-exports/index.hmr.debug.js new file mode 100644 index 000000000..e6cdaefba --- /dev/null +++ b/test/snapshots/package-json-exports/index.hmr.debug.js @@ -0,0 +1,46 @@ +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} 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); +var hmr = new FastHMR(1953708113, "package-json-exports/index.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + 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); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/package-json-exports/index.js.map diff --git a/test/snapshots/package-json-exports/index.hmr.js b/test/snapshots/package-json-exports/index.hmr.js new file mode 100644 index 000000000..69efa5194 --- /dev/null +++ b/test/snapshots/package-json-exports/index.hmr.js @@ -0,0 +1,44 @@ +import { +__require as require +} from "http://localhost:3000/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:3000/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; +(hmr._load = function() { + 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); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:3000/package-json-exports/index.js.map diff --git a/test/snapshots/package-json-exports/index.js b/test/snapshots/package-json-exports/index.js new file mode 100644 index 000000000..3d41a7985 --- /dev/null +++ b/test/snapshots/package-json-exports/index.js @@ -0,0 +1,22 @@ +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); +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.debug.js b/test/snapshots/package-json-utf8.debug.js new file mode 100644 index 000000000..8845090f0 --- /dev/null +++ b/test/snapshots/package-json-utf8.debug.js @@ -0,0 +1,9 @@ +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/package-json-utf8.hmr.debug.js b/test/snapshots/package-json-utf8.hmr.debug.js new file mode 100644 index 000000000..fe11070c2 --- /dev/null +++ b/test/snapshots/package-json-utf8.hmr.debug.js @@ -0,0 +1,33 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +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; + +(hmr._load = function() { + function test() { + console.assert(!!pkg.author); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/package-json-utf8.js.map diff --git a/test/snapshots/package-json-utf8.hmr.js b/test/snapshots/package-json-utf8.hmr.js new file mode 100644 index 000000000..5676d6477 --- /dev/null +++ b/test/snapshots/package-json-utf8.hmr.js @@ -0,0 +1,31 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +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; +(hmr._load = function() { + function test() { + console.assert(!!pkg.author); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/package-json-utf8.js.map diff --git a/test/snapshots/package-json-utf8.js b/test/snapshots/package-json-utf8.js new file mode 100644 index 000000000..8845090f0 --- /dev/null +++ b/test/snapshots/package-json-utf8.js @@ -0,0 +1,9 @@ +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.debug.tsx b/test/snapshots/react-context-value-func.debug.tsx new file mode 100644 index 000000000..71b5e5f60 --- /dev/null +++ b/test/snapshots/react-context-value-func.debug.tsx @@ -0,0 +1,38 @@ +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); +var jsx = require(JSX).jsxDEV; + +import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; +var { default: React} = require($bbcd215f); +const Context = React.createContext({}); + +const ContextProvider = ({ children }) => { + const [cb, setCB] = React.useState(function() { + }); + const foo = true; + return jsx(Context.Provider, { + value: cb, + children: children(foo) + }, undefined, false, undefined, this); +}; +const ContextValue = ({}) => jsx(Context.Consumer, { + children: (foo) => { + if (foo) + return jsx("div", { + children: "Worked!" + }, undefined, false, undefined, this); + throw `Value "${foo}"" should be true`; + } +}, undefined, false, undefined, this); +const TestComponent = () => jsx(ContextProvider, { + children: jsx(ContextValue, {}, undefined, false, undefined, this) +}, undefined, false, undefined, this); +export function test() { + const foo = jsx(TestComponent, {}, undefined, false, undefined, this); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/react-context-value-func.tsx.map diff --git a/test/snapshots/react-context-value-func.hmr.debug.tsx b/test/snapshots/react-context-value-func.hmr.debug.tsx new file mode 100644 index 000000000..d17a8fa88 --- /dev/null +++ b/test/snapshots/react-context-value-func.hmr.debug.tsx @@ -0,0 +1,63 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; + +(hmr._load = function() { + const Context = React.createContext({}); + const ContextProvider = ({ children }) => { + const [cb, setCB] = React.useState(function() { + }); + const foo = true; + return jsx(Context.Provider, { + value: cb, + children: children(foo) + }, undefined, false, undefined, this); + }; + const ContextValue = ({}) => jsx(Context.Consumer, { + children: (foo) => { + if (foo) + return jsx("div", { + children: "Worked!" + }, undefined, false, undefined, this); + throw `Value "${foo}"" should be true`; + } + }, undefined, false, undefined, this); + const TestComponent = () => jsx(ContextProvider, { + children: jsx(ContextValue, {}, undefined, false, undefined, this) + }, undefined, false, undefined, this); + function test() { + const foo = jsx(TestComponent, {}, undefined, false, undefined, this); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/react-context-value-func.tsx.map diff --git a/test/snapshots/react-context-value-func.hmr.tsx b/test/snapshots/react-context-value-func.hmr.tsx new file mode 100644 index 000000000..0c751a7a9 --- /dev/null +++ b/test/snapshots/react-context-value-func.hmr.tsx @@ -0,0 +1,60 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; +(hmr._load = function() { + const Context = React.createContext({}); + const ContextProvider = ({ children }) => { + const [cb, setCB] = React.useState(function() { + }); + const foo = true; + return jsx(Context.Provider, { + value: cb, + children: children(foo) + }, undefined, false, undefined, this); + }; + const ContextValue = ({}) => jsx(Context.Consumer, { + children: (foo) => { + if (foo) + return jsx("div", { + children: "Worked!" + }, undefined, false, undefined, this); + throw `Value "${foo}"" should be true`; + } + }, undefined, false, undefined, this); + const TestComponent = () => jsx(ContextProvider, { + children: jsx(ContextValue, {}, undefined, false, undefined, this) + }, undefined, false, undefined, this); + function test() { + const foo = jsx(TestComponent, {}, undefined, false, undefined, this); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/react-context-value-func.tsx.map diff --git a/test/snapshots/react-context-value-func.tsx b/test/snapshots/react-context-value-func.tsx new file mode 100644 index 000000000..71b5e5f60 --- /dev/null +++ b/test/snapshots/react-context-value-func.tsx @@ -0,0 +1,38 @@ +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); +var jsx = require(JSX).jsxDEV; + +import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; +var { default: React} = require($bbcd215f); +const Context = React.createContext({}); + +const ContextProvider = ({ children }) => { + const [cb, setCB] = React.useState(function() { + }); + const foo = true; + return jsx(Context.Provider, { + value: cb, + children: children(foo) + }, undefined, false, undefined, this); +}; +const ContextValue = ({}) => jsx(Context.Consumer, { + children: (foo) => { + if (foo) + return jsx("div", { + children: "Worked!" + }, undefined, false, undefined, this); + throw `Value "${foo}"" should be true`; + } +}, undefined, false, undefined, this); +const TestComponent = () => jsx(ContextProvider, { + children: jsx(ContextValue, {}, undefined, false, undefined, this) +}, undefined, false, undefined, this); +export function test() { + const foo = jsx(TestComponent, {}, undefined, false, undefined, this); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/react-context-value-func.tsx.map diff --git a/test/snapshots/spread_with_key.debug.tsx b/test/snapshots/spread_with_key.debug.tsx new file mode 100644 index 000000000..e096a76c8 --- /dev/null +++ b/test/snapshots/spread_with_key.debug.tsx @@ -0,0 +1,29 @@ +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); +var jsx = require(JSX).jsxDEV, jsxEl = require(JSXClassic).createElement; + +var { default: React} = require($bbcd215f); +export function SpreadWithTheKey({ className }) { + const rest = {}; + + return jsxEl("div", { + className, + ...rest, + onClick: () => console.log("click"), + key: "spread-with-the-key" + }, "Rendered component containing warning"); +} + +export function test() { + console.assert(React.isValidElement(jsx(SpreadWithTheKey, { + className: "foo" + }, undefined, false, undefined, this))); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/spread_with_key.tsx.map diff --git a/test/snapshots/spread_with_key.hmr.debug.tsx b/test/snapshots/spread_with_key.hmr.debug.tsx new file mode 100644 index 000000000..0123867ee --- /dev/null +++ b/test/snapshots/spread_with_key.hmr.debug.tsx @@ -0,0 +1,56 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; + +(hmr._load = function() { + function SpreadWithTheKey({ className }) { + const rest = {}; + return jsxEl("div", { + className, + ...rest, + onClick: () => console.log("click"), + key: "spread-with-the-key" + }, "Rendered component containing warning"); + } + function test() { + console.assert(React.isValidElement(jsx(SpreadWithTheKey, { + className: "foo" + }, undefined, false, undefined, this))); + return testDone(import.meta.url); + } + hmr.exportAll({ + SpreadWithTheKey: () => SpreadWithTheKey, + test: () => test + }); +})(); +var $$hmr_SpreadWithTheKey = hmr.exports.SpreadWithTheKey, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_SpreadWithTheKey = exports.SpreadWithTheKey; + $$hmr_test = exports.test; +}; + +export { + $$hmr_SpreadWithTheKey as SpreadWithTheKey, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/spread_with_key.tsx.map diff --git a/test/snapshots/spread_with_key.hmr.tsx b/test/snapshots/spread_with_key.hmr.tsx new file mode 100644 index 000000000..37cb57b34 --- /dev/null +++ b/test/snapshots/spread_with_key.hmr.tsx @@ -0,0 +1,53 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; +(hmr._load = function() { + function SpreadWithTheKey({ className }) { + const rest = {}; + return jsxEl("div", { + className, + ...rest, + onClick: () => console.log("click"), + key: "spread-with-the-key" + }, "Rendered component containing warning"); + } + function test() { + console.assert(React.isValidElement(jsx(SpreadWithTheKey, { + className: "foo" + }, undefined, false, undefined, this))); + return testDone(import.meta.url); + } + hmr.exportAll({ + SpreadWithTheKey: () => SpreadWithTheKey, + test: () => test + }); +})(); +var $$hmr_SpreadWithTheKey = hmr.exports.SpreadWithTheKey, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_SpreadWithTheKey = exports.SpreadWithTheKey; + $$hmr_test = exports.test; +}; + +export { + $$hmr_SpreadWithTheKey as SpreadWithTheKey, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/spread_with_key.tsx.map diff --git a/test/snapshots/spread_with_key.tsx b/test/snapshots/spread_with_key.tsx new file mode 100644 index 000000000..e096a76c8 --- /dev/null +++ b/test/snapshots/spread_with_key.tsx @@ -0,0 +1,29 @@ +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); +var jsx = require(JSX).jsxDEV, jsxEl = require(JSXClassic).createElement; + +var { default: React} = require($bbcd215f); +export function SpreadWithTheKey({ className }) { + const rest = {}; + + return jsxEl("div", { + className, + ...rest, + onClick: () => console.log("click"), + key: "spread-with-the-key" + }, "Rendered component containing warning"); +} + +export function test() { + console.assert(React.isValidElement(jsx(SpreadWithTheKey, { + className: "foo" + }, undefined, false, undefined, this))); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/spread_with_key.tsx.map diff --git a/test/snapshots/string-escapes.debug.js b/test/snapshots/string-escapes.debug.js new file mode 100644 index 000000000..9084bc362 --- /dev/null +++ b/test/snapshots/string-escapes.debug.js @@ -0,0 +1,463 @@ +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); +var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; + +var tab = "\t"; +var f = ""; +var f = "\u2087"; +var obj = { + "\r\n": "\r\n", + "\n": "\n", + "\t": "\t", + "\f": "\f", + "\v": "\v", + "\u2028": "\u2028", + "\u2029": "\u2029", + "\0": "\0\xA0null byte", + "\uD83D\uDE0A": "\uD83D\uDE0A", + "\uD83D\uDE03": "\uD83D\uDE03", + "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F": "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", + "\u32E1": "\u32E1", + "\u263A": "\u263A", + "γ·": "\u30B7", + "\uD83D\uDC4B": "\uD83D\uDC4B", + f, + "\u2639": "\u2639", + "\u263B": "\u263B", + children: 123 +}; +const encoder = new TextEncoder; +const encodedObj = encoder.encode(JSON.stringify(obj)); +const correctEncodedObj = [ + 123, + 34, + 92, + 114, + 92, + 110, + 34, + 58, + 34, + 92, + 114, + 92, + 110, + 34, + 44, + 34, + 92, + 110, + 34, + 58, + 34, + 92, + 110, + 34, + 44, + 34, + 92, + 116, + 34, + 58, + 34, + 92, + 116, + 34, + 44, + 34, + 92, + 102, + 34, + 58, + 34, + 92, + 102, + 34, + 44, + 34, + 92, + 117, + 48, + 48, + 48, + 98, + 34, + 58, + 34, + 92, + 117, + 48, + 48, + 48, + 98, + 34, + 44, + 34, + 226, + 128, + 168, + 34, + 58, + 34, + 226, + 128, + 168, + 34, + 44, + 34, + 226, + 128, + 169, + 34, + 58, + 34, + 226, + 128, + 169, + 34, + 44, + 34, + 92, + 117, + 48, + 48, + 48, + 48, + 34, + 58, + 34, + 92, + 117, + 48, + 48, + 48, + 48, + 194, + 160, + 110, + 117, + 108, + 108, + 32, + 98, + 121, + 116, + 101, + 34, + 44, + 34, + 240, + 159, + 152, + 138, + 34, + 58, + 34, + 240, + 159, + 152, + 138, + 34, + 44, + 34, + 240, + 159, + 152, + 131, + 34, + 58, + 34, + 240, + 159, + 152, + 131, + 34, + 44, + 34, + 240, + 159, + 149, + 181, + 240, + 159, + 143, + 189, + 226, + 128, + 141, + 226, + 153, + 130, + 239, + 184, + 143, + 34, + 58, + 34, + 240, + 159, + 149, + 181, + 240, + 159, + 143, + 189, + 226, + 128, + 141, + 226, + 153, + 130, + 239, + 184, + 143, + 34, + 44, + 34, + 227, + 139, + 161, + 34, + 58, + 34, + 227, + 139, + 161, + 34, + 44, + 34, + 226, + 152, + 186, + 34, + 58, + 34, + 226, + 152, + 186, + 34, + 44, + 34, + 227, + 130, + 183, + 34, + 58, + 34, + 227, + 130, + 183, + 34, + 44, + 34, + 240, + 159, + 145, + 139, + 34, + 58, + 34, + 240, + 159, + 145, + 139, + 34, + 44, + 34, + 102, + 34, + 58, + 34, + 226, + 130, + 135, + 34, + 44, + 34, + 226, + 152, + 185, + 34, + 58, + 34, + 226, + 152, + 185, + 34, + 44, + 34, + 226, + 152, + 187, + 34, + 58, + 34, + 226, + 152, + 187, + 34, + 44, + 34, + 99, + 104, + 105, + 108, + 100, + 114, + 101, + 110, + 34, + 58, + 49, + 50, + 51, + 125 +]; +export const jsxVariants = jsx(JSXFrag, { + children: [ + '"\\r\\n": "\\r\\n", "\\n": "\\n", "\\t": "\\t", "\\f": "\\f", "\\v": "\\v", "\\u2028": "\\u2028", "\\u2029": "\\u2029", "\uD83D\uDE0A": "\uD83D\uDE0A", "\uD83D\uDE03": "\uD83D\uDE03", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F": "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", "\u32E1": "\u32E1", "\u263A": "\u263A", \u30B7: "\u30B7", "\uD83D\uDC4B": "\uD83D\uDC4B", f: f, "\u2639": "\u2639", "\u263B": "\u263B", children: 123,', + jsx("div", { + data: "\r\n" + }, undefined, false, undefined, this), + jsx("div", { + data: "\n" + }, undefined, false, undefined, this), + jsx("div", { + data: "\t" + }, undefined, false, undefined, this), + jsx("div", { + data: "\f" + }, undefined, false, undefined, this), + jsx("div", { + data: "\v" + }, undefined, false, undefined, this), + jsx("div", { + data: "\\u2028" + }, undefined, false, undefined, this), + jsx("div", { + data: "\\u2029" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDE0A" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDE03" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u32E1" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u263A" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u30B7" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDC4B" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u2639" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u263B" + }, undefined, false, undefined, this), + jsx("div", { + data: "123" + }, undefined, false, undefined, this), + jsx("div", {}, "\r\n", false, undefined, this), + jsx("div", { + children: "\r\n" + }, undefined, false, undefined, this), + jsx("div", {}, "\n", false, undefined, this), + jsx("div", { + children: "\n" + }, undefined, false, undefined, this), + jsx("div", {}, "\t", false, undefined, this), + jsx("div", { + children: "\t" + }, undefined, false, undefined, this), + jsx("div", {}, "\f", false, undefined, this), + jsx("div", { + children: "\f" + }, undefined, false, undefined, this), + jsx("div", {}, "\v", false, undefined, this), + jsx("div", { + children: "\v" + }, undefined, false, undefined, this), + jsx("div", {}, "\\u2028", false, undefined, this), + jsx("div", { + children: "\u2028" + }, undefined, false, undefined, this), + jsx("div", {}, "\\u2029", false, undefined, this), + jsx("div", { + children: "\u2029" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDE0A", false, undefined, this), + jsx("div", { + children: "\uD83D\uDE0A" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDE03", false, undefined, this), + jsx("div", { + children: "\uD83D\uDE03" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", false, undefined, this), + jsx("div", { + children: "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F" + }, undefined, false, undefined, this), + jsx("div", {}, "\u32E1", false, undefined, this), + jsx("div", { + children: "\u32E1" + }, undefined, false, undefined, this), + jsx("div", {}, "\u263A", false, undefined, this), + jsx("div", { + children: "\u263A" + }, undefined, false, undefined, this), + jsx("div", {}, "\u30B7", false, undefined, this), + jsx("div", { + children: "\u30B7" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDC4B", false, undefined, this), + jsx("div", { + children: "\uD83D\uDC4B" + }, undefined, false, undefined, this), + jsx("div", {}, "\u2639", false, undefined, this), + jsx("div", { + children: "\u2639" + }, undefined, false, undefined, this), + jsx("div", {}, "\u263B", false, undefined, this), + jsx("div", { + children: "\u263B" + }, undefined, false, undefined, this), + jsx("div", {}, "123", false, undefined, this), + jsx("div", { + children: "123" + }, undefined, false, undefined, this) + ] +}, undefined, true, undefined, this); +const foo = () => { +}; +const Bar = foo("a", { + children: 123 +}); +const carriage = obj["\r\n"]; +const newline = obj["\n"]; + +export { obj }; +export function test() { + console.assert(carriage === "\r\n"); + console.assert(newline === "\n"); + console.assert(tab === "\t"); + console.assert(correctEncodedObj.length === encodedObj.length); + console.assert(correctEncodedObj.every((v, i) => v === encodedObj[i])); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/string-escapes.js.map diff --git a/test/snapshots/string-escapes.hmr.debug.js b/test/snapshots/string-escapes.hmr.debug.js new file mode 100644 index 000000000..a247fc16d --- /dev/null +++ b/test/snapshots/string-escapes.hmr.debug.js @@ -0,0 +1,492 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; + +var hmr = new FastHMR(2482749838, "string-escapes.js", FastRefresh), exports = hmr.exports; +(hmr._load = function() { + var tab = "\t"; + var f = ""; + var f = "\u2087"; + var obj = { + "\r\n": "\r\n", + "\n": "\n", + "\t": "\t", + "\f": "\f", + "\v": "\v", + "\u2028": "\u2028", + "\u2029": "\u2029", + "\0": "\0\xA0null byte", + "\uD83D\uDE0A": "\uD83D\uDE0A", + "\uD83D\uDE03": "\uD83D\uDE03", + "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F": "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", + "\u32E1": "\u32E1", + "\u263A": "\u263A", + "γ·": "\u30B7", + "\uD83D\uDC4B": "\uD83D\uDC4B", + f, + "\u2639": "\u2639", + "\u263B": "\u263B", + children: 123 + }; + const encoder = new TextEncoder; + const encodedObj = encoder.encode(JSON.stringify(obj)); + const correctEncodedObj = [ + 123, + 34, + 92, + 114, + 92, + 110, + 34, + 58, + 34, + 92, + 114, + 92, + 110, + 34, + 44, + 34, + 92, + 110, + 34, + 58, + 34, + 92, + 110, + 34, + 44, + 34, + 92, + 116, + 34, + 58, + 34, + 92, + 116, + 34, + 44, + 34, + 92, + 102, + 34, + 58, + 34, + 92, + 102, + 34, + 44, + 34, + 92, + 117, + 48, + 48, + 48, + 98, + 34, + 58, + 34, + 92, + 117, + 48, + 48, + 48, + 98, + 34, + 44, + 34, + 226, + 128, + 168, + 34, + 58, + 34, + 226, + 128, + 168, + 34, + 44, + 34, + 226, + 128, + 169, + 34, + 58, + 34, + 226, + 128, + 169, + 34, + 44, + 34, + 92, + 117, + 48, + 48, + 48, + 48, + 34, + 58, + 34, + 92, + 117, + 48, + 48, + 48, + 48, + 194, + 160, + 110, + 117, + 108, + 108, + 32, + 98, + 121, + 116, + 101, + 34, + 44, + 34, + 240, + 159, + 152, + 138, + 34, + 58, + 34, + 240, + 159, + 152, + 138, + 34, + 44, + 34, + 240, + 159, + 152, + 131, + 34, + 58, + 34, + 240, + 159, + 152, + 131, + 34, + 44, + 34, + 240, + 159, + 149, + 181, + 240, + 159, + 143, + 189, + 226, + 128, + 141, + 226, + 153, + 130, + 239, + 184, + 143, + 34, + 58, + 34, + 240, + 159, + 149, + 181, + 240, + 159, + 143, + 189, + 226, + 128, + 141, + 226, + 153, + 130, + 239, + 184, + 143, + 34, + 44, + 34, + 227, + 139, + 161, + 34, + 58, + 34, + 227, + 139, + 161, + 34, + 44, + 34, + 226, + 152, + 186, + 34, + 58, + 34, + 226, + 152, + 186, + 34, + 44, + 34, + 227, + 130, + 183, + 34, + 58, + 34, + 227, + 130, + 183, + 34, + 44, + 34, + 240, + 159, + 145, + 139, + 34, + 58, + 34, + 240, + 159, + 145, + 139, + 34, + 44, + 34, + 102, + 34, + 58, + 34, + 226, + 130, + 135, + 34, + 44, + 34, + 226, + 152, + 185, + 34, + 58, + 34, + 226, + 152, + 185, + 34, + 44, + 34, + 226, + 152, + 187, + 34, + 58, + 34, + 226, + 152, + 187, + 34, + 44, + 34, + 99, + 104, + 105, + 108, + 100, + 114, + 101, + 110, + 34, + 58, + 49, + 50, + 51, + 125 + ]; + var jsxVariants = jsx(JSXFrag, { + children: [ + '"\\r\\n": "\\r\\n", "\\n": "\\n", "\\t": "\\t", "\\f": "\\f", "\\v": "\\v", "\\u2028": "\\u2028", "\\u2029": "\\u2029", "\uD83D\uDE0A": "\uD83D\uDE0A", "\uD83D\uDE03": "\uD83D\uDE03", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F": "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", "\u32E1": "\u32E1", "\u263A": "\u263A", \u30B7: "\u30B7", "\uD83D\uDC4B": "\uD83D\uDC4B", f: f, "\u2639": "\u2639", "\u263B": "\u263B", children: 123,', + jsx("div", { + data: "\r\n" + }, undefined, false, undefined, this), + jsx("div", { + data: "\n" + }, undefined, false, undefined, this), + jsx("div", { + data: "\t" + }, undefined, false, undefined, this), + jsx("div", { + data: "\f" + }, undefined, false, undefined, this), + jsx("div", { + data: "\v" + }, undefined, false, undefined, this), + jsx("div", { + data: "\\u2028" + }, undefined, false, undefined, this), + jsx("div", { + data: "\\u2029" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDE0A" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDE03" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u32E1" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u263A" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u30B7" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDC4B" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u2639" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u263B" + }, undefined, false, undefined, this), + jsx("div", { + data: "123" + }, undefined, false, undefined, this), + jsx("div", {}, "\r\n", false, undefined, this), + jsx("div", { + children: "\r\n" + }, undefined, false, undefined, this), + jsx("div", {}, "\n", false, undefined, this), + jsx("div", { + children: "\n" + }, undefined, false, undefined, this), + jsx("div", {}, "\t", false, undefined, this), + jsx("div", { + children: "\t" + }, undefined, false, undefined, this), + jsx("div", {}, "\f", false, undefined, this), + jsx("div", { + children: "\f" + }, undefined, false, undefined, this), + jsx("div", {}, "\v", false, undefined, this), + jsx("div", { + children: "\v" + }, undefined, false, undefined, this), + jsx("div", {}, "\\u2028", false, undefined, this), + jsx("div", { + children: "\u2028" + }, undefined, false, undefined, this), + jsx("div", {}, "\\u2029", false, undefined, this), + jsx("div", { + children: "\u2029" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDE0A", false, undefined, this), + jsx("div", { + children: "\uD83D\uDE0A" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDE03", false, undefined, this), + jsx("div", { + children: "\uD83D\uDE03" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", false, undefined, this), + jsx("div", { + children: "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F" + }, undefined, false, undefined, this), + jsx("div", {}, "\u32E1", false, undefined, this), + jsx("div", { + children: "\u32E1" + }, undefined, false, undefined, this), + jsx("div", {}, "\u263A", false, undefined, this), + jsx("div", { + children: "\u263A" + }, undefined, false, undefined, this), + jsx("div", {}, "\u30B7", false, undefined, this), + jsx("div", { + children: "\u30B7" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDC4B", false, undefined, this), + jsx("div", { + children: "\uD83D\uDC4B" + }, undefined, false, undefined, this), + jsx("div", {}, "\u2639", false, undefined, this), + jsx("div", { + children: "\u2639" + }, undefined, false, undefined, this), + jsx("div", {}, "\u263B", false, undefined, this), + jsx("div", { + children: "\u263B" + }, undefined, false, undefined, this), + jsx("div", {}, "123", false, undefined, this), + jsx("div", { + children: "123" + }, undefined, false, undefined, this) + ] + }, undefined, true, undefined, this); + const foo = () => { + }; + const Bar = foo("a", { + children: 123 + }); + const carriage = obj["\r\n"]; + const newline = obj["\n"]; + function test() { + console.assert(carriage === "\r\n"); + console.assert(newline === "\n"); + console.assert(tab === "\t"); + console.assert(correctEncodedObj.length === encodedObj.length); + console.assert(correctEncodedObj.every((v, i) => v === encodedObj[i])); + return testDone(import.meta.url); + } + hmr.exportAll({ + jsxVariants: () => jsxVariants, + obj: () => obj, + test: () => test + }); +})(); +var $$hmr_jsxVariants = hmr.exports.jsxVariants, $$hmr_obj = hmr.exports.obj, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_jsxVariants = exports.jsxVariants; + $$hmr_obj = exports.obj; + $$hmr_test = exports.test; +}; + +export { + $$hmr_jsxVariants as jsxVariants, + $$hmr_obj as obj, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/string-escapes.js.map diff --git a/test/snapshots/string-escapes.hmr.js b/test/snapshots/string-escapes.hmr.js new file mode 100644 index 000000000..5847bdf97 --- /dev/null +++ b/test/snapshots/string-escapes.hmr.js @@ -0,0 +1,490 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:3000/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__require as require +} from "http://localhost:3000/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); +var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; +var hmr = new FastHMR(2482749838, "string-escapes.js", FastRefresh), exports = hmr.exports; +(hmr._load = function() { + var tab = "\t"; + var f = ""; + var f = "\u2087"; + var obj = { + "\r\n": "\r\n", + "\n": "\n", + "\t": "\t", + "\f": "\f", + "\v": "\v", + "\u2028": "\u2028", + "\u2029": "\u2029", + "\0": "\0\xA0null byte", + "\uD83D\uDE0A": "\uD83D\uDE0A", + "\uD83D\uDE03": "\uD83D\uDE03", + "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F": "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", + "\u32E1": "\u32E1", + "\u263A": "\u263A", + "γ·": "\u30B7", + "\uD83D\uDC4B": "\uD83D\uDC4B", + f, + "\u2639": "\u2639", + "\u263B": "\u263B", + children: 123 + }; + const encoder = new TextEncoder; + const encodedObj = encoder.encode(JSON.stringify(obj)); + const correctEncodedObj = [ + 123, + 34, + 92, + 114, + 92, + 110, + 34, + 58, + 34, + 92, + 114, + 92, + 110, + 34, + 44, + 34, + 92, + 110, + 34, + 58, + 34, + 92, + 110, + 34, + 44, + 34, + 92, + 116, + 34, + 58, + 34, + 92, + 116, + 34, + 44, + 34, + 92, + 102, + 34, + 58, + 34, + 92, + 102, + 34, + 44, + 34, + 92, + 117, + 48, + 48, + 48, + 98, + 34, + 58, + 34, + 92, + 117, + 48, + 48, + 48, + 98, + 34, + 44, + 34, + 226, + 128, + 168, + 34, + 58, + 34, + 226, + 128, + 168, + 34, + 44, + 34, + 226, + 128, + 169, + 34, + 58, + 34, + 226, + 128, + 169, + 34, + 44, + 34, + 92, + 117, + 48, + 48, + 48, + 48, + 34, + 58, + 34, + 92, + 117, + 48, + 48, + 48, + 48, + 194, + 160, + 110, + 117, + 108, + 108, + 32, + 98, + 121, + 116, + 101, + 34, + 44, + 34, + 240, + 159, + 152, + 138, + 34, + 58, + 34, + 240, + 159, + 152, + 138, + 34, + 44, + 34, + 240, + 159, + 152, + 131, + 34, + 58, + 34, + 240, + 159, + 152, + 131, + 34, + 44, + 34, + 240, + 159, + 149, + 181, + 240, + 159, + 143, + 189, + 226, + 128, + 141, + 226, + 153, + 130, + 239, + 184, + 143, + 34, + 58, + 34, + 240, + 159, + 149, + 181, + 240, + 159, + 143, + 189, + 226, + 128, + 141, + 226, + 153, + 130, + 239, + 184, + 143, + 34, + 44, + 34, + 227, + 139, + 161, + 34, + 58, + 34, + 227, + 139, + 161, + 34, + 44, + 34, + 226, + 152, + 186, + 34, + 58, + 34, + 226, + 152, + 186, + 34, + 44, + 34, + 227, + 130, + 183, + 34, + 58, + 34, + 227, + 130, + 183, + 34, + 44, + 34, + 240, + 159, + 145, + 139, + 34, + 58, + 34, + 240, + 159, + 145, + 139, + 34, + 44, + 34, + 102, + 34, + 58, + 34, + 226, + 130, + 135, + 34, + 44, + 34, + 226, + 152, + 185, + 34, + 58, + 34, + 226, + 152, + 185, + 34, + 44, + 34, + 226, + 152, + 187, + 34, + 58, + 34, + 226, + 152, + 187, + 34, + 44, + 34, + 99, + 104, + 105, + 108, + 100, + 114, + 101, + 110, + 34, + 58, + 49, + 50, + 51, + 125 + ]; + var jsxVariants = jsx(JSXFrag, { + children: [ + '"\\r\\n": "\\r\\n", "\\n": "\\n", "\\t": "\\t", "\\f": "\\f", "\\v": "\\v", "\\u2028": "\\u2028", "\\u2029": "\\u2029", "\uD83D\uDE0A": "\uD83D\uDE0A", "\uD83D\uDE03": "\uD83D\uDE03", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F": "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", "\u32E1": "\u32E1", "\u263A": "\u263A", \u30B7: "\u30B7", "\uD83D\uDC4B": "\uD83D\uDC4B", f: f, "\u2639": "\u2639", "\u263B": "\u263B", children: 123,', + jsx("div", { + data: "\r\n" + }, undefined, false, undefined, this), + jsx("div", { + data: "\n" + }, undefined, false, undefined, this), + jsx("div", { + data: "\t" + }, undefined, false, undefined, this), + jsx("div", { + data: "\f" + }, undefined, false, undefined, this), + jsx("div", { + data: "\v" + }, undefined, false, undefined, this), + jsx("div", { + data: "\\u2028" + }, undefined, false, undefined, this), + jsx("div", { + data: "\\u2029" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDE0A" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDE03" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u32E1" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u263A" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u30B7" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDC4B" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u2639" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u263B" + }, undefined, false, undefined, this), + jsx("div", { + data: "123" + }, undefined, false, undefined, this), + jsx("div", {}, "\r\n", false, undefined, this), + jsx("div", { + children: "\r\n" + }, undefined, false, undefined, this), + jsx("div", {}, "\n", false, undefined, this), + jsx("div", { + children: "\n" + }, undefined, false, undefined, this), + jsx("div", {}, "\t", false, undefined, this), + jsx("div", { + children: "\t" + }, undefined, false, undefined, this), + jsx("div", {}, "\f", false, undefined, this), + jsx("div", { + children: "\f" + }, undefined, false, undefined, this), + jsx("div", {}, "\v", false, undefined, this), + jsx("div", { + children: "\v" + }, undefined, false, undefined, this), + jsx("div", {}, "\\u2028", false, undefined, this), + jsx("div", { + children: "\u2028" + }, undefined, false, undefined, this), + jsx("div", {}, "\\u2029", false, undefined, this), + jsx("div", { + children: "\u2029" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDE0A", false, undefined, this), + jsx("div", { + children: "\uD83D\uDE0A" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDE03", false, undefined, this), + jsx("div", { + children: "\uD83D\uDE03" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", false, undefined, this), + jsx("div", { + children: "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F" + }, undefined, false, undefined, this), + jsx("div", {}, "\u32E1", false, undefined, this), + jsx("div", { + children: "\u32E1" + }, undefined, false, undefined, this), + jsx("div", {}, "\u263A", false, undefined, this), + jsx("div", { + children: "\u263A" + }, undefined, false, undefined, this), + jsx("div", {}, "\u30B7", false, undefined, this), + jsx("div", { + children: "\u30B7" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDC4B", false, undefined, this), + jsx("div", { + children: "\uD83D\uDC4B" + }, undefined, false, undefined, this), + jsx("div", {}, "\u2639", false, undefined, this), + jsx("div", { + children: "\u2639" + }, undefined, false, undefined, this), + jsx("div", {}, "\u263B", false, undefined, this), + jsx("div", { + children: "\u263B" + }, undefined, false, undefined, this), + jsx("div", {}, "123", false, undefined, this), + jsx("div", { + children: "123" + }, undefined, false, undefined, this) + ] + }, undefined, true, undefined, this); + const foo = () => { + }; + const Bar = foo("a", { + children: 123 + }); + const carriage = obj["\r\n"]; + const newline = obj["\n"]; + function test() { + console.assert(carriage === "\r\n"); + console.assert(newline === "\n"); + console.assert(tab === "\t"); + console.assert(correctEncodedObj.length === encodedObj.length); + console.assert(correctEncodedObj.every((v, i) => v === encodedObj[i])); + return testDone(import.meta.url); + } + hmr.exportAll({ + jsxVariants: () => jsxVariants, + obj: () => obj, + test: () => test + }); +})(); +var $$hmr_jsxVariants = hmr.exports.jsxVariants, $$hmr_obj = hmr.exports.obj, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_jsxVariants = exports.jsxVariants; + $$hmr_obj = exports.obj; + $$hmr_test = exports.test; +}; + +export { + $$hmr_jsxVariants as jsxVariants, + $$hmr_obj as obj, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:3000/string-escapes.js.map diff --git a/test/snapshots/string-escapes.js b/test/snapshots/string-escapes.js new file mode 100644 index 000000000..9084bc362 --- /dev/null +++ b/test/snapshots/string-escapes.js @@ -0,0 +1,463 @@ +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); +var jsx = require(JSX).jsxDEV, JSXFrag = require(JSXClassic).Fragment; + +var tab = "\t"; +var f = ""; +var f = "\u2087"; +var obj = { + "\r\n": "\r\n", + "\n": "\n", + "\t": "\t", + "\f": "\f", + "\v": "\v", + "\u2028": "\u2028", + "\u2029": "\u2029", + "\0": "\0\xA0null byte", + "\uD83D\uDE0A": "\uD83D\uDE0A", + "\uD83D\uDE03": "\uD83D\uDE03", + "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F": "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", + "\u32E1": "\u32E1", + "\u263A": "\u263A", + "γ·": "\u30B7", + "\uD83D\uDC4B": "\uD83D\uDC4B", + f, + "\u2639": "\u2639", + "\u263B": "\u263B", + children: 123 +}; +const encoder = new TextEncoder; +const encodedObj = encoder.encode(JSON.stringify(obj)); +const correctEncodedObj = [ + 123, + 34, + 92, + 114, + 92, + 110, + 34, + 58, + 34, + 92, + 114, + 92, + 110, + 34, + 44, + 34, + 92, + 110, + 34, + 58, + 34, + 92, + 110, + 34, + 44, + 34, + 92, + 116, + 34, + 58, + 34, + 92, + 116, + 34, + 44, + 34, + 92, + 102, + 34, + 58, + 34, + 92, + 102, + 34, + 44, + 34, + 92, + 117, + 48, + 48, + 48, + 98, + 34, + 58, + 34, + 92, + 117, + 48, + 48, + 48, + 98, + 34, + 44, + 34, + 226, + 128, + 168, + 34, + 58, + 34, + 226, + 128, + 168, + 34, + 44, + 34, + 226, + 128, + 169, + 34, + 58, + 34, + 226, + 128, + 169, + 34, + 44, + 34, + 92, + 117, + 48, + 48, + 48, + 48, + 34, + 58, + 34, + 92, + 117, + 48, + 48, + 48, + 48, + 194, + 160, + 110, + 117, + 108, + 108, + 32, + 98, + 121, + 116, + 101, + 34, + 44, + 34, + 240, + 159, + 152, + 138, + 34, + 58, + 34, + 240, + 159, + 152, + 138, + 34, + 44, + 34, + 240, + 159, + 152, + 131, + 34, + 58, + 34, + 240, + 159, + 152, + 131, + 34, + 44, + 34, + 240, + 159, + 149, + 181, + 240, + 159, + 143, + 189, + 226, + 128, + 141, + 226, + 153, + 130, + 239, + 184, + 143, + 34, + 58, + 34, + 240, + 159, + 149, + 181, + 240, + 159, + 143, + 189, + 226, + 128, + 141, + 226, + 153, + 130, + 239, + 184, + 143, + 34, + 44, + 34, + 227, + 139, + 161, + 34, + 58, + 34, + 227, + 139, + 161, + 34, + 44, + 34, + 226, + 152, + 186, + 34, + 58, + 34, + 226, + 152, + 186, + 34, + 44, + 34, + 227, + 130, + 183, + 34, + 58, + 34, + 227, + 130, + 183, + 34, + 44, + 34, + 240, + 159, + 145, + 139, + 34, + 58, + 34, + 240, + 159, + 145, + 139, + 34, + 44, + 34, + 102, + 34, + 58, + 34, + 226, + 130, + 135, + 34, + 44, + 34, + 226, + 152, + 185, + 34, + 58, + 34, + 226, + 152, + 185, + 34, + 44, + 34, + 226, + 152, + 187, + 34, + 58, + 34, + 226, + 152, + 187, + 34, + 44, + 34, + 99, + 104, + 105, + 108, + 100, + 114, + 101, + 110, + 34, + 58, + 49, + 50, + 51, + 125 +]; +export const jsxVariants = jsx(JSXFrag, { + children: [ + '"\\r\\n": "\\r\\n", "\\n": "\\n", "\\t": "\\t", "\\f": "\\f", "\\v": "\\v", "\\u2028": "\\u2028", "\\u2029": "\\u2029", "\uD83D\uDE0A": "\uD83D\uDE0A", "\uD83D\uDE03": "\uD83D\uDE03", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F": "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", "\u32E1": "\u32E1", "\u263A": "\u263A", \u30B7: "\u30B7", "\uD83D\uDC4B": "\uD83D\uDC4B", f: f, "\u2639": "\u2639", "\u263B": "\u263B", children: 123,', + jsx("div", { + data: "\r\n" + }, undefined, false, undefined, this), + jsx("div", { + data: "\n" + }, undefined, false, undefined, this), + jsx("div", { + data: "\t" + }, undefined, false, undefined, this), + jsx("div", { + data: "\f" + }, undefined, false, undefined, this), + jsx("div", { + data: "\v" + }, undefined, false, undefined, this), + jsx("div", { + data: "\\u2028" + }, undefined, false, undefined, this), + jsx("div", { + data: "\\u2029" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDE0A" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDE03" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u32E1" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u263A" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u30B7" + }, undefined, false, undefined, this), + jsx("div", { + data: "\uD83D\uDC4B" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u2639" + }, undefined, false, undefined, this), + jsx("div", { + data: "\u263B" + }, undefined, false, undefined, this), + jsx("div", { + data: "123" + }, undefined, false, undefined, this), + jsx("div", {}, "\r\n", false, undefined, this), + jsx("div", { + children: "\r\n" + }, undefined, false, undefined, this), + jsx("div", {}, "\n", false, undefined, this), + jsx("div", { + children: "\n" + }, undefined, false, undefined, this), + jsx("div", {}, "\t", false, undefined, this), + jsx("div", { + children: "\t" + }, undefined, false, undefined, this), + jsx("div", {}, "\f", false, undefined, this), + jsx("div", { + children: "\f" + }, undefined, false, undefined, this), + jsx("div", {}, "\v", false, undefined, this), + jsx("div", { + children: "\v" + }, undefined, false, undefined, this), + jsx("div", {}, "\\u2028", false, undefined, this), + jsx("div", { + children: "\u2028" + }, undefined, false, undefined, this), + jsx("div", {}, "\\u2029", false, undefined, this), + jsx("div", { + children: "\u2029" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDE0A", false, undefined, this), + jsx("div", { + children: "\uD83D\uDE0A" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDE03", false, undefined, this), + jsx("div", { + children: "\uD83D\uDE03" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", false, undefined, this), + jsx("div", { + children: "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F" + }, undefined, false, undefined, this), + jsx("div", {}, "\u32E1", false, undefined, this), + jsx("div", { + children: "\u32E1" + }, undefined, false, undefined, this), + jsx("div", {}, "\u263A", false, undefined, this), + jsx("div", { + children: "\u263A" + }, undefined, false, undefined, this), + jsx("div", {}, "\u30B7", false, undefined, this), + jsx("div", { + children: "\u30B7" + }, undefined, false, undefined, this), + jsx("div", {}, "\uD83D\uDC4B", false, undefined, this), + jsx("div", { + children: "\uD83D\uDC4B" + }, undefined, false, undefined, this), + jsx("div", {}, "\u2639", false, undefined, this), + jsx("div", { + children: "\u2639" + }, undefined, false, undefined, this), + jsx("div", {}, "\u263B", false, undefined, this), + jsx("div", { + children: "\u263B" + }, undefined, false, undefined, this), + jsx("div", {}, "123", false, undefined, this), + jsx("div", { + children: "123" + }, undefined, false, undefined, this) + ] +}, undefined, true, undefined, this); +const foo = () => { +}; +const Bar = foo("a", { + children: 123 +}); +const carriage = obj["\r\n"]; +const newline = obj["\n"]; + +export { obj }; +export function test() { + console.assert(carriage === "\r\n"); + console.assert(newline === "\n"); + console.assert(tab === "\t"); + console.assert(correctEncodedObj.length === encodedObj.length); + console.assert(correctEncodedObj.every((v, i) => v === encodedObj[i])); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/string-escapes.js.map diff --git a/test/snapshots/styled-components-output.hmr.js b/test/snapshots/styled-components-output.hmr.js new file mode 100644 index 000000000..1bf09ed2d --- /dev/null +++ b/test/snapshots/styled-components-output.hmr.js @@ -0,0 +1,67 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/__runtime.js"; +import { +__require as require +} from "http://localhost:8080/__runtime.js"; +import { +__HMRModule as HMR +} from "http://localhost:8080/__runtime.js"; +import * as JSX from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js"; +var jsx = require(JSX).jsxDEV, fileName = "styled-components-output.js"; + +import * as $3b6c9f54 from "http://localhost:8080/node_modules/styled-components/dist/styled-components.esm.js"; +var { default: styled} = require($3b6c9f54); +import * as $bbcd215f from "http://localhost:8080/node_modules/react/index.js"; +var { default: React} = require($bbcd215f); +Bun.activate(false); + +var hmr = new HMR(2972367994, "styled-components-output.js"), exports = hmr.exports; +(hmr._load = function() { + const ErrorScreenRoot = styled.div` + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background: #fff; + text-align: center; + background-color: #0b2988; + color: #fff; + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + line-height: 1.5em; + + & > p { + margin-top: 10px; + } + + & a { + color: inherit; + } +`; + function test() { + console.assert(React.isValidElement(jsx(ErrorScreenRoot, {}, undefined, true, { + fileName, + lineNumber: 698 + }, this))); + testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; diff --git a/test/snapshots/styledcomponents-output.debug.js b/test/snapshots/styledcomponents-output.debug.js new file mode 100644 index 000000000..f3a59d365 --- /dev/null +++ b/test/snapshots/styledcomponents-output.debug.js @@ -0,0 +1,63 @@ +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); +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); +const ErrorScreenRoot = styled.div` + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background: #fff; + text-align: center; + background-color: #0b2988; + color: #fff; + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + line-height: 1.5em; + + & > p { + margin-top: 10px; + } + + & a { + color: inherit; + } +`; + +export function test() { + if (typeof window !== "undefined") { + const reactEl = document.createElement("div"); + document.body.appendChild(reactEl); + ReactDOM.render(jsx(ErrorScreenRoot, { + id: "error-el", + children: "The react child should have this text" + }, undefined, false, undefined, this), reactEl); + const style = document.querySelector("style[data-styled]"); + console.assert(style, "style tag should exist"); + console.assert(style.textContent.split("").every((a) => a.codePointAt(0) < 128), "style tag should not contain invalid unicode codepoints"); + console.assert(document.querySelector("#error-el").textContent === "The react child should have this text"); + ReactDOM.unmountComponentAtNode(reactEl); + reactEl.remove(); + style.remove(); + return testDone(import.meta.url); + } + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/styledcomponents-output.js.map diff --git a/test/snapshots/styledcomponents-output.hmr.debug.js b/test/snapshots/styledcomponents-output.hmr.debug.js new file mode 100644 index 000000000..027d5f35b --- /dev/null +++ b/test/snapshots/styledcomponents-output.hmr.debug.js @@ -0,0 +1,88 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; + +(hmr._load = function() { + const ErrorScreenRoot = styled.div` + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background: #fff; + text-align: center; + background-color: #0b2988; + color: #fff; + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + line-height: 1.5em; + + & > p { + margin-top: 10px; + } + + & a { + color: inherit; + } +`; + function test() { + if (typeof window !== "undefined") { + const reactEl = document.createElement("div"); + document.body.appendChild(reactEl); + ReactDOM.render(jsx(ErrorScreenRoot, { + id: "error-el", + children: "The react child should have this text" + }, undefined, false, undefined, this), reactEl); + const style = document.querySelector("style[data-styled]"); + console.assert(style, "style tag should exist"); + console.assert(style.textContent.split("").every((a) => a.codePointAt(0) < 128), "style tag should not contain invalid unicode codepoints"); + console.assert(document.querySelector("#error-el").textContent === "The react child should have this text"); + ReactDOM.unmountComponentAtNode(reactEl); + reactEl.remove(); + style.remove(); + return testDone(import.meta.url); + } + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/styledcomponents-output.js.map diff --git a/test/snapshots/styledcomponents-output.hmr.js b/test/snapshots/styledcomponents-output.hmr.js new file mode 100644 index 000000000..b39adb87c --- /dev/null +++ b/test/snapshots/styledcomponents-output.hmr.js @@ -0,0 +1,85 @@ +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__require as require +} from "http://localhost:8080/bun:wrap"; +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); +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; +(hmr._load = function() { + const ErrorScreenRoot = styled.div` + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background: #fff; + text-align: center; + background-color: #0b2988; + color: #fff; + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + line-height: 1.5em; + + & > p { + margin-top: 10px; + } + + & a { + color: inherit; + } +`; + function test() { + if (typeof window !== "undefined") { + const reactEl = document.createElement("div"); + document.body.appendChild(reactEl); + ReactDOM.render(jsx(ErrorScreenRoot, { + id: "error-el", + children: "The react child should have this text" + }, undefined, false, undefined, this), reactEl); + const style = document.querySelector("style[data-styled]"); + console.assert(style, "style tag should exist"); + console.assert(style.textContent.split("").every((a) => a.codePointAt(0) < 128), "style tag should not contain invalid unicode codepoints"); + console.assert(document.querySelector("#error-el").textContent === "The react child should have this text"); + ReactDOM.unmountComponentAtNode(reactEl); + reactEl.remove(); + style.remove(); + return testDone(import.meta.url); + } + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/styledcomponents-output.js.map diff --git a/test/snapshots/styledcomponents-output.js b/test/snapshots/styledcomponents-output.js new file mode 100644 index 000000000..f3a59d365 --- /dev/null +++ b/test/snapshots/styledcomponents-output.js @@ -0,0 +1,63 @@ +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); +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); +const ErrorScreenRoot = styled.div` + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background: #fff; + text-align: center; + background-color: #0b2988; + color: #fff; + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + line-height: 1.5em; + + & > p { + margin-top: 10px; + } + + & a { + color: inherit; + } +`; + +export function test() { + if (typeof window !== "undefined") { + const reactEl = document.createElement("div"); + document.body.appendChild(reactEl); + ReactDOM.render(jsx(ErrorScreenRoot, { + id: "error-el", + children: "The react child should have this text" + }, undefined, false, undefined, this), reactEl); + const style = document.querySelector("style[data-styled]"); + console.assert(style, "style tag should exist"); + console.assert(style.textContent.split("").every((a) => a.codePointAt(0) < 128), "style tag should not contain invalid unicode codepoints"); + console.assert(document.querySelector("#error-el").textContent === "The react child should have this text"); + ReactDOM.unmountComponentAtNode(reactEl); + reactEl.remove(); + style.remove(); + return testDone(import.meta.url); + } + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/styledcomponents-output.js.map diff --git a/test/snapshots/template-literal.debug.js b/test/snapshots/template-literal.debug.js new file mode 100644 index 000000000..2c0d55e8e --- /dev/null +++ b/test/snapshots/template-literal.debug.js @@ -0,0 +1,39 @@ +const css = (templ) => templ.toString(); +const fooNoBracesUTF8 = css` + before + /* */ + after +`; +const fooNoBracesUT16 = css` + before + \uD83D\uDE43 + after +`; +const fooUTF8 = css` + before + ${true} + after + +`; +const fooUTF16 = css` + before + \uD83D\uDE43 ${true} + after + +`; +const templateLiteralWhichDefinesAFunction = ((...args) => args[args.length - 1]().toString())` + before + \uD83D\uDE43 ${() => true} + after + +`; +export function test() { + for (let foo of [fooNoBracesUT16, fooNoBracesUTF8, fooUTF16, fooUTF8]) { + console.assert(foo.includes("before"), `Expected ${foo} to include "before"`); + console.assert(foo.includes("after"), `Expected ${foo} to include "after"`); + } + console.assert(templateLiteralWhichDefinesAFunction.includes("true"), "Expected fooFunction to include 'true'"); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/template-literal.js.map diff --git a/test/snapshots/template-literal.hmr.debug.js b/test/snapshots/template-literal.hmr.debug.js new file mode 100644 index 000000000..b5a8ac52b --- /dev/null +++ b/test/snapshots/template-literal.hmr.debug.js @@ -0,0 +1,65 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(2201713056, "template-literal.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + const css = (templ) => templ.toString(); + const fooNoBracesUTF8 = css` + before + /* */ + after +`; + const fooNoBracesUT16 = css` + before + \uD83D\uDE43 + after +`; + const fooUTF8 = css` + before + ${true} + after + +`; + const fooUTF16 = css` + before + \uD83D\uDE43 ${true} + after + +`; + const templateLiteralWhichDefinesAFunction = ((...args) => args[args.length - 1]().toString())` + before + \uD83D\uDE43 ${() => true} + after + +`; + function test() { + for (let foo of [fooNoBracesUT16, fooNoBracesUTF8, fooUTF16, fooUTF8]) { + console.assert(foo.includes("before"), `Expected ${foo} to include "before"`); + console.assert(foo.includes("after"), `Expected ${foo} to include "after"`); + } + console.assert(templateLiteralWhichDefinesAFunction.includes("true"), "Expected fooFunction to include 'true'"); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/template-literal.js.map diff --git a/test/snapshots/template-literal.hmr.js b/test/snapshots/template-literal.hmr.js new file mode 100644 index 000000000..0baee2be1 --- /dev/null +++ b/test/snapshots/template-literal.hmr.js @@ -0,0 +1,63 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(2201713056, "template-literal.js", FastRefresh), exports = hmr.exports; +(hmr._load = function() { + const css = (templ) => templ.toString(); + const fooNoBracesUTF8 = css` + before + /* */ + after +`; + const fooNoBracesUT16 = css` + before + \uD83D\uDE43 + after +`; + const fooUTF8 = css` + before + ${true} + after + +`; + const fooUTF16 = css` + before + \uD83D\uDE43 ${true} + after + +`; + const templateLiteralWhichDefinesAFunction = ((...args) => args[args.length - 1]().toString())` + before + \uD83D\uDE43 ${() => true} + after + +`; + function test() { + for (let foo of [fooNoBracesUT16, fooNoBracesUTF8, fooUTF16, fooUTF8]) { + console.assert(foo.includes("before"), `Expected ${foo} to include "before"`); + console.assert(foo.includes("after"), `Expected ${foo} to include "after"`); + } + console.assert(templateLiteralWhichDefinesAFunction.includes("true"), "Expected fooFunction to include 'true'"); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/template-literal.js.map diff --git a/test/snapshots/template-literal.js b/test/snapshots/template-literal.js new file mode 100644 index 000000000..2c0d55e8e --- /dev/null +++ b/test/snapshots/template-literal.js @@ -0,0 +1,39 @@ +const css = (templ) => templ.toString(); +const fooNoBracesUTF8 = css` + before + /* */ + after +`; +const fooNoBracesUT16 = css` + before + \uD83D\uDE43 + after +`; +const fooUTF8 = css` + before + ${true} + after + +`; +const fooUTF16 = css` + before + \uD83D\uDE43 ${true} + after + +`; +const templateLiteralWhichDefinesAFunction = ((...args) => args[args.length - 1]().toString())` + before + \uD83D\uDE43 ${() => true} + after + +`; +export function test() { + for (let foo of [fooNoBracesUT16, fooNoBracesUTF8, fooUTF16, fooUTF8]) { + console.assert(foo.includes("before"), `Expected ${foo} to include "before"`); + console.assert(foo.includes("after"), `Expected ${foo} to include "after"`); + } + console.assert(templateLiteralWhichDefinesAFunction.includes("true"), "Expected fooFunction to include 'true'"); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/template-literal.js.map diff --git a/test/snapshots/ts-fallback-rewrite-works.debug.js b/test/snapshots/ts-fallback-rewrite-works.debug.js new file mode 100644 index 000000000..4b0789922 --- /dev/null +++ b/test/snapshots/ts-fallback-rewrite-works.debug.js @@ -0,0 +1,5 @@ +export function test() { + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/ts-fallback-rewrite-works.js.map diff --git a/test/snapshots/ts-fallback-rewrite-works.hmr.debug.js b/test/snapshots/ts-fallback-rewrite-works.hmr.debug.js new file mode 100644 index 000000000..1d59ba0d5 --- /dev/null +++ b/test/snapshots/ts-fallback-rewrite-works.hmr.debug.js @@ -0,0 +1,28 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__HMRModule as HMR +} from "http://localhost:8080/bun:wrap"; +var hmr = new HMR(421762902, "ts-fallback-rewrite-works.ts"), exports = hmr.exports; + +(hmr._load = function() { + function test() { + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/ts-fallback-rewrite-works.js.map diff --git a/test/snapshots/ts-fallback-rewrite-works.hmr.js b/test/snapshots/ts-fallback-rewrite-works.hmr.js new file mode 100644 index 000000000..09f26c952 --- /dev/null +++ b/test/snapshots/ts-fallback-rewrite-works.hmr.js @@ -0,0 +1,26 @@ +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__HMRModule as HMR +} from "http://localhost:3000/bun:wrap"; +var hmr = new HMR(421762902, "ts-fallback-rewrite-works.ts"), exports = hmr.exports; +(hmr._load = function() { + function test() { + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:3000/ts-fallback-rewrite-works.js.map diff --git a/test/snapshots/ts-fallback-rewrite-works.js b/test/snapshots/ts-fallback-rewrite-works.js new file mode 100644 index 000000000..4b0789922 --- /dev/null +++ b/test/snapshots/ts-fallback-rewrite-works.js @@ -0,0 +1,5 @@ +export function test() { + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/ts-fallback-rewrite-works.js.map diff --git a/test/snapshots/tsx-fallback-rewrite-works.debug.js b/test/snapshots/tsx-fallback-rewrite-works.debug.js new file mode 100644 index 000000000..5de13ced2 --- /dev/null +++ b/test/snapshots/tsx-fallback-rewrite-works.debug.js @@ -0,0 +1,5 @@ +export function test() { + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/tsx-fallback-rewrite-works.js.map diff --git a/test/snapshots/tsx-fallback-rewrite-works.hmr.debug.js b/test/snapshots/tsx-fallback-rewrite-works.hmr.debug.js new file mode 100644 index 000000000..ea15fc922 --- /dev/null +++ b/test/snapshots/tsx-fallback-rewrite-works.hmr.debug.js @@ -0,0 +1,31 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(2117426367, "tsx-fallback-rewrite-works.tsx", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + function test() { + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/tsx-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 new file mode 100644 index 000000000..b33df25c4 --- /dev/null +++ b/test/snapshots/tsx-fallback-rewrite-works.hmr.js @@ -0,0 +1,29 @@ +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:3000/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; +(hmr._load = function() { + function test() { + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:3000/tsx-fallback-rewrite-works.js.map diff --git a/test/snapshots/tsx-fallback-rewrite-works.js b/test/snapshots/tsx-fallback-rewrite-works.js new file mode 100644 index 000000000..5de13ced2 --- /dev/null +++ b/test/snapshots/tsx-fallback-rewrite-works.js @@ -0,0 +1,5 @@ +export function test() { + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/tsx-fallback-rewrite-works.js.map diff --git a/test/snapshots/type-only-imports.debug.ts b/test/snapshots/type-only-imports.debug.ts new file mode 100644 index 000000000..0a1eb4249 --- /dev/null +++ b/test/snapshots/type-only-imports.debug.ts @@ -0,0 +1,9 @@ +export const baconator = true; +export const SilentSymbolCollisionsAreOkayInTypeScript = true; +export function test() { + console.assert(SilentSymbolCollisionsAreOkayInTypeScript); + console.assert(baconator); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/type-only-imports.ts.map diff --git a/test/snapshots/type-only-imports.hmr.debug.ts b/test/snapshots/type-only-imports.hmr.debug.ts new file mode 100644 index 000000000..ff8f4864b --- /dev/null +++ b/test/snapshots/type-only-imports.hmr.debug.ts @@ -0,0 +1,38 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__HMRModule as HMR +} from "http://localhost:8080/bun:wrap"; +var hmr = new HMR(650094581, "type-only-imports.ts"), exports = hmr.exports; + +(hmr._load = function() { + var baconator = true; + var SilentSymbolCollisionsAreOkayInTypeScript = true; + function test() { + console.assert(SilentSymbolCollisionsAreOkayInTypeScript); + console.assert(baconator); + return testDone(import.meta.url); + } + hmr.exportAll({ + baconator: () => baconator, + SilentSymbolCollisionsAreOkayInTypeScript: () => SilentSymbolCollisionsAreOkayInTypeScript, + test: () => test + }); +})(); +var $$hmr_baconator = hmr.exports.baconator, $$hmr_SilentSymbolCollisionsAreOkayInTypeScript = hmr.exports.SilentSymbolCollisionsAreOkayInTypeScript, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_baconator = exports.baconator; + $$hmr_SilentSymbolCollisionsAreOkayInTypeScript = exports.SilentSymbolCollisionsAreOkayInTypeScript; + $$hmr_test = exports.test; +}; + +export { + $$hmr_baconator as baconator, + $$hmr_SilentSymbolCollisionsAreOkayInTypeScript as SilentSymbolCollisionsAreOkayInTypeScript, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/type-only-imports.ts.map diff --git a/test/snapshots/type-only-imports.hmr.ts b/test/snapshots/type-only-imports.hmr.ts new file mode 100644 index 000000000..f732881b7 --- /dev/null +++ b/test/snapshots/type-only-imports.hmr.ts @@ -0,0 +1,36 @@ +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__HMRModule as HMR +} from "http://localhost:3000/bun:wrap"; +var hmr = new HMR(650094581, "type-only-imports.ts"), exports = hmr.exports; +(hmr._load = function() { + var baconator = true; + var SilentSymbolCollisionsAreOkayInTypeScript = true; + function test() { + console.assert(SilentSymbolCollisionsAreOkayInTypeScript); + console.assert(baconator); + return testDone(import.meta.url); + } + hmr.exportAll({ + baconator: () => baconator, + SilentSymbolCollisionsAreOkayInTypeScript: () => SilentSymbolCollisionsAreOkayInTypeScript, + test: () => test + }); +})(); +var $$hmr_baconator = hmr.exports.baconator, $$hmr_SilentSymbolCollisionsAreOkayInTypeScript = hmr.exports.SilentSymbolCollisionsAreOkayInTypeScript, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_baconator = exports.baconator; + $$hmr_SilentSymbolCollisionsAreOkayInTypeScript = exports.SilentSymbolCollisionsAreOkayInTypeScript; + $$hmr_test = exports.test; +}; + +export { + $$hmr_baconator as baconator, + $$hmr_SilentSymbolCollisionsAreOkayInTypeScript as SilentSymbolCollisionsAreOkayInTypeScript, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:3000/type-only-imports.ts.map diff --git a/test/snapshots/type-only-imports.ts b/test/snapshots/type-only-imports.ts new file mode 100644 index 000000000..0a1eb4249 --- /dev/null +++ b/test/snapshots/type-only-imports.ts @@ -0,0 +1,9 @@ +export const baconator = true; +export const SilentSymbolCollisionsAreOkayInTypeScript = true; +export function test() { + console.assert(SilentSymbolCollisionsAreOkayInTypeScript); + console.assert(baconator); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/type-only-imports.ts.map diff --git a/test/snapshots/unicode-identifiers.debug.js b/test/snapshots/unicode-identifiers.debug.js new file mode 100644 index 000000000..85b76376e --- /dev/null +++ b/test/snapshots/unicode-identifiers.debug.js @@ -0,0 +1,16 @@ +var Ξ΅ = 0.000001; +var Ξ΅2 = Ξ΅ * Ξ΅; +var Ο = Math.PI; +var Ο = 2 * Ο; +var ΟΞ΅ = Ο - Ξ΅; +var halfΟ = Ο / 2; +var d3_radians = Ο / 180; +var d3_degrees = 180 / Ο; + +export { d3_radians }; +export function test() { + console.assert(Ξ΅ === 0.000001); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/unicode-identifiers.js.map diff --git a/test/snapshots/unicode-identifiers.hmr.debug.js b/test/snapshots/unicode-identifiers.hmr.debug.js new file mode 100644 index 000000000..53fbb30d5 --- /dev/null +++ b/test/snapshots/unicode-identifiers.hmr.debug.js @@ -0,0 +1,43 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:8080/bun:wrap"; +var hmr = new FastHMR(1398361736, "unicode-identifiers.js", FastRefresh), exports = hmr.exports; + +(hmr._load = function() { + var Ξ΅ = 0.000001; + var Ξ΅2 = Ξ΅ * Ξ΅; + var Ο = Math.PI; + var Ο = 2 * Ο; + var ΟΞ΅ = Ο - Ξ΅; + var halfΟ = Ο / 2; + var d3_radians = Ο / 180; + var d3_degrees = 180 / Ο; + function test() { + console.assert(Ξ΅ === 0.000001); + return testDone(import.meta.url); + } + hmr.exportAll({ + d3_radians: () => d3_radians, + test: () => test + }); +})(); +var $$hmr_d3_radians = hmr.exports.d3_radians, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_d3_radians = exports.d3_radians; + $$hmr_test = exports.test; +}; + +export { + $$hmr_d3_radians as d3_radians, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/unicode-identifiers.js.map diff --git a/test/snapshots/unicode-identifiers.hmr.js b/test/snapshots/unicode-identifiers.hmr.js new file mode 100644 index 000000000..be84e436e --- /dev/null +++ b/test/snapshots/unicode-identifiers.hmr.js @@ -0,0 +1,41 @@ +import { +__HMRClient as Bun +} from "http://localhost:3000/bun:wrap"; +Bun.activate(true); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:3000/bun:wrap"; +import { +__FastRefreshRuntime as FastRefresh +} from "http://localhost:3000/bun:wrap"; +var hmr = new FastHMR(1398361736, "unicode-identifiers.js", FastRefresh), exports = hmr.exports; +(hmr._load = function() { + var Ξ΅ = 0.000001; + var Ξ΅2 = Ξ΅ * Ξ΅; + var Ο = Math.PI; + var Ο = 2 * Ο; + var ΟΞ΅ = Ο - Ξ΅; + var halfΟ = Ο / 2; + var d3_radians = Ο / 180; + var d3_degrees = 180 / Ο; + function test() { + console.assert(Ξ΅ === 0.000001); + return testDone(import.meta.url); + } + hmr.exportAll({ + d3_radians: () => d3_radians, + test: () => test + }); +})(); +var $$hmr_d3_radians = hmr.exports.d3_radians, $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_d3_radians = exports.d3_radians; + $$hmr_test = exports.test; +}; + +export { + $$hmr_d3_radians as d3_radians, + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:3000/unicode-identifiers.js.map diff --git a/test/snapshots/unicode-identifiers.js b/test/snapshots/unicode-identifiers.js new file mode 100644 index 000000000..85b76376e --- /dev/null +++ b/test/snapshots/unicode-identifiers.js @@ -0,0 +1,16 @@ +var Ξ΅ = 0.000001; +var Ξ΅2 = Ξ΅ * Ξ΅; +var Ο = Math.PI; +var Ο = 2 * Ο; +var ΟΞ΅ = Ο - Ξ΅; +var halfΟ = Ο / 2; +var d3_radians = Ο / 180; +var d3_degrees = 180 / Ο; + +export { d3_radians }; +export function test() { + console.assert(Ξ΅ === 0.000001); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/unicode-identifiers.js.map diff --git a/test/snapshots/void-shouldnt-delete-call-expressions.debug.js b/test/snapshots/void-shouldnt-delete-call-expressions.debug.js new file mode 100644 index 000000000..5620ead56 --- /dev/null +++ b/test/snapshots/void-shouldnt-delete-call-expressions.debug.js @@ -0,0 +1,12 @@ +var was_called = false; +function thisShouldBeCalled() { + was_called = true; +} +thisShouldBeCalled(); +export function test() { + if (!was_called) + throw new Error("Expected thisShouldBeCalled to be called"); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/void-shouldnt-delete-call-expressions.js.map diff --git a/test/snapshots/void-shouldnt-delete-call-expressions.hmr.debug.js b/test/snapshots/void-shouldnt-delete-call-expressions.hmr.debug.js new file mode 100644 index 000000000..bbb0a451c --- /dev/null +++ b/test/snapshots/void-shouldnt-delete-call-expressions.hmr.debug.js @@ -0,0 +1,38 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(true); + +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +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; + +(hmr._load = function() { + var was_called = false; + function thisShouldBeCalled() { + was_called = true; + } + thisShouldBeCalled(); + function test() { + if (!was_called) + throw new Error("Expected thisShouldBeCalled to be called"); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/void-shouldnt-delete-call-expressions.js.map diff --git a/test/snapshots/void-shouldnt-delete-call-expressions.hmr.js b/test/snapshots/void-shouldnt-delete-call-expressions.hmr.js new file mode 100644 index 000000000..f2a1dbf18 --- /dev/null +++ b/test/snapshots/void-shouldnt-delete-call-expressions.hmr.js @@ -0,0 +1,36 @@ +import { +__HMRClient as Bun +} from "http://localhost:8080/bun:wrap"; +Bun.activate(false); +import { +__FastRefreshModule as FastHMR +} from "http://localhost:8080/bun:wrap"; +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; +(hmr._load = function() { + var was_called = false; + function thisShouldBeCalled() { + was_called = true; + } + thisShouldBeCalled(); + function test() { + if (!was_called) + throw new Error("Expected thisShouldBeCalled to be called"); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; + +//# sourceMappingURL=http://localhost:8080/void-shouldnt-delete-call-expressions.js.map diff --git a/test/snapshots/void-shouldnt-delete-call-expressions.js b/test/snapshots/void-shouldnt-delete-call-expressions.js new file mode 100644 index 000000000..5620ead56 --- /dev/null +++ b/test/snapshots/void-shouldnt-delete-call-expressions.js @@ -0,0 +1,12 @@ +var was_called = false; +function thisShouldBeCalled() { + was_called = true; +} +thisShouldBeCalled(); +export function test() { + if (!was_called) + throw new Error("Expected thisShouldBeCalled to be called"); + return testDone(import.meta.url); +} + +//# sourceMappingURL=http://localhost:8080/void-shouldnt-delete-call-expressions.js.map diff --git a/test/snippets/_auth.js b/test/snippets/_auth.js new file mode 100644 index 000000000..407090812 --- /dev/null +++ b/test/snippets/_auth.js @@ -0,0 +1 @@ +export default "hi"; diff --git a/test/snippets/_bacon.js b/test/snippets/_bacon.js new file mode 100644 index 000000000..c07ffb9be --- /dev/null +++ b/test/snippets/_bacon.js @@ -0,0 +1 @@ +export let hello = true; diff --git a/test/snippets/_login.js b/test/snippets/_login.js new file mode 100644 index 000000000..b2fc2ef65 --- /dev/null +++ b/test/snippets/_login.js @@ -0,0 +1,3 @@ +export default function () { + return true; +} diff --git a/test/snippets/array-args-with-default-values.js b/test/snippets/array-args-with-default-values.js new file mode 100644 index 000000000..f733a1bfa --- /dev/null +++ b/test/snippets/array-args-with-default-values.js @@ -0,0 +1,28 @@ +var lines; +const data = () => + lines.map(([a = null, b = null, c = null, d = null]) => ({ + a, + b, + c, + d, + })); + +export function test() { + let ran = false; + lines = [ + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined], + [undefined, undefined, undefined, undefined], + ]; + + for (let foo of data()) { + console.assert(foo.a === null); + console.assert(foo.b === null); + console.assert(foo.c === null); + console.assert(foo.d === null); + ran = true; + } + console.assert(ran); + testDone(import.meta.url); +} diff --git a/test/snippets/bun.lockb b/test/snippets/bun.lockb Binary files differnew file mode 100755 index 000000000..127db7b6d --- /dev/null +++ b/test/snippets/bun.lockb diff --git a/test/snippets/bundled-entry-point.js b/test/snippets/bundled-entry-point.js new file mode 100644 index 000000000..a996f8632 --- /dev/null +++ b/test/snippets/bundled-entry-point.js @@ -0,0 +1,7 @@ +import "react"; + +var hello = 123 ? null ?? "world" : "ok"; + +export function test() { + return testDone(import.meta.url); +} diff --git a/test/snippets/caught-require.js b/test/snippets/caught-require.js new file mode 100644 index 000000000..6111d2b10 --- /dev/null +++ b/test/snippets/caught-require.js @@ -0,0 +1,31 @@ +// Since top-level await is Special, we run these checks in the top-level scope as well. +try { + require("this-package-should-not-exist"); +} catch (exception) {} + +try { + await import("this-package-should-not-exist"); +} catch (exception) {} + +import("this-package-should-not-exist").then( + () => {}, + () => {} +); + +export async function test() { + // none of these should error + try { + require("this-package-should-not-exist"); + } catch (exception) {} + + try { + await import("this-package-should-not-exist"); + } catch (exception) {} + + import("this-package-should-not-exist").then( + () => {}, + () => {} + ); + + return testDone(import.meta.url); +} diff --git a/test/snippets/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js b/test/snippets/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js new file mode 100644 index 000000000..1ba6c059d --- /dev/null +++ b/test/snippets/cjs-transform-shouldnt-have-static-imports-in-cjs-function.js @@ -0,0 +1,17 @@ +import _login from "./_login"; +import _auth from "./_auth"; +import * as _loginReally from "./_login"; +import * as _loginReally2 from "./_login"; +import * as _authReally from "./_auth"; + +// module.exports.iAmCommonJs = true; +// exports.YouAreCommonJS = true; +// require("./_login"); +// require("./_login"); +export { _login as login }; + +export function test() { + return testDone(import.meta.url); +} + +export let foo, bar; diff --git a/test/snippets/code-simplification-neql-define.js b/test/snippets/code-simplification-neql-define.js new file mode 100644 index 000000000..ed5c5c395 --- /dev/null +++ b/test/snippets/code-simplification-neql-define.js @@ -0,0 +1,56 @@ +var testFailed = false; +const invariant = () => { + testFailed = true; +}; +var $$m = (arg) => { + var module = { exports: {} }, + exports = module.exports; + return arg(module, exports); +}; +var size = 100, + ttl = 3600; + +export var $f332019d = $$m( + { + "relay-runtime/lib/network/RelayQueryResponseCache.js": ( + module, + exports + ) => { + var RelayQueryResponseCache = function () { + var foo = function RelayQueryResponseCache(_ref) { + var size = _ref.size, + ttl = _ref.ttl; + !(size > 0) + ? process.env.NODE_ENV !== "production" + ? invariant( + false, + "RelayQueryResponseCache: Expected the max cache size to be > 0, got " + + "`%s`.", + size + ) + : invariant(false) + : void 0; + !(ttl > 0) + ? process.env.NODE_ENV !== "production" + ? invariant( + false, + "RelayQueryResponseCache: Expected the max ttl to be > 0, got `%s`.", + ttl + ) + : invariant(false) + : void 0; + }; + foo({ size: 100, ttl: 3600 }); + }; + RelayQueryResponseCache(); + }, + }["relay-runtime/lib/network/RelayQueryResponseCache.js"] +); + +export function test() { + var foo = () => result; + // $f332019d; + + if (testFailed) throw new Error("invariant should not be called"); + return testDone(import.meta.url); +} diff --git a/test/snippets/custom-emotion-jsx/file.jsx b/test/snippets/custom-emotion-jsx/file.jsx new file mode 100644 index 000000000..c00cb0543 --- /dev/null +++ b/test/snippets/custom-emotion-jsx/file.jsx @@ -0,0 +1,15 @@ +import * as ReactDOM from "react-dom"; +export const Foo = () => <div css={{ content: '"it worked!"' }}></div>; + +export function test() { + const element = document.createElement("div"); + element.id = "custom-emotion-jsx"; + document.body.appendChild(element); + ReactDOM.render(<Foo />, element); + const style = window.getComputedStyle(element.firstChild); + if (!(style["content"] ?? "").includes("it worked!")) { + throw new Error('Expected "it worked!" but received: ' + style["content"]); + } + + return testDone(import.meta.url); +} diff --git a/test/snippets/custom-emotion-jsx/tsconfig.json b/test/snippets/custom-emotion-jsx/tsconfig.json new file mode 100644 index 000000000..7bb0f58a0 --- /dev/null +++ b/test/snippets/custom-emotion-jsx/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "jsxImportSource": "@emotion/react" + } +} diff --git a/test/snippets/export-default-module-hot.js b/test/snippets/export-default-module-hot.js new file mode 100644 index 000000000..aee4e2468 --- /dev/null +++ b/test/snippets/export-default-module-hot.js @@ -0,0 +1,6 @@ +// This test passes if there's no syntax error +export default typeof module !== "undefined" && module.id; + +export function test() { + testDone(import.meta.url); +} diff --git a/test/snippets/export.js b/test/snippets/export.js new file mode 100644 index 000000000..fe0abfa53 --- /dev/null +++ b/test/snippets/export.js @@ -0,0 +1,29 @@ +import what from "./_auth"; +export { default as auth } from "./_auth"; +export { default as login } from "./_login"; +export * from "./_bacon"; +export let yoyoyo = "yoyoyo"; +export default function hey() { + return true; +} +export const foo = () => {}; +export var bar = 100; +export let powerLevel = Symbol("9001"); +export { what }; +export { what as when, what as whence }; +export {} from "./_bacon"; +export * as where from "./_auth"; +export { bar as booop }; + +export function test() { + hey(); + foo(); + if (where.default !== "hi") { + throw new Error(`_auth import is incorrect.`); + } + console.assert( + powerLevel.description === "9001", + "Symbol is not exported correctly" + ); + return testDone(import.meta.url); +} diff --git a/test/snippets/forbid-in-is-correct.js b/test/snippets/forbid-in-is-correct.js new file mode 100644 index 000000000..cdd62bffb --- /dev/null +++ b/test/snippets/forbid-in-is-correct.js @@ -0,0 +1,10 @@ +var foo = () => { + // prettier-ignore + var D=(i,r)=>()=>(r||i((r={exports:{}}).exports,r),r.exports); + return D; +}; + +export function test() { + foo(); + testDone(import.meta.url); +} diff --git a/test/snippets/global-is-remapped-to-globalThis.js b/test/snippets/global-is-remapped-to-globalThis.js new file mode 100644 index 000000000..06b887925 --- /dev/null +++ b/test/snippets/global-is-remapped-to-globalThis.js @@ -0,0 +1,4 @@ +export function test() { + console.assert(global === globalThis); + return testDone(import.meta.url); +} diff --git a/test/snippets/jsx-entities.jsx b/test/snippets/jsx-entities.jsx new file mode 100644 index 000000000..adabace2c --- /dev/null +++ b/test/snippets/jsx-entities.jsx @@ -0,0 +1,936 @@ +import * as ReactDOM from "react-dom/server"; + +const elements = { + [ReactDOM.renderToString(<>"</>)]: 0x0022, + [ReactDOM.renderToString(<>&</>)]: 0x0026, + [ReactDOM.renderToString(<>'</>)]: 0x0027, + [ReactDOM.renderToString(<><</>)]: 0x003c, + [ReactDOM.renderToString(<>></>)]: 0x003e, + [ReactDOM.renderToString(<> </>)]: 0x00a0, + [ReactDOM.renderToString(<>¡</>)]: 0x00a1, + [ReactDOM.renderToString(<>¢</>)]: 0x00a2, + [ReactDOM.renderToString(<>£</>)]: 0x00a3, + [ReactDOM.renderToString(<>¤</>)]: 0x00a4, + [ReactDOM.renderToString(<>¥</>)]: 0x00a5, + [ReactDOM.renderToString(<>¦</>)]: 0x00a6, + [ReactDOM.renderToString(<>§</>)]: 0x00a7, + [ReactDOM.renderToString(<>¨</>)]: 0x00a8, + [ReactDOM.renderToString(<>©</>)]: 0x00a9, + [ReactDOM.renderToString(<>ª</>)]: 0x00aa, + [ReactDOM.renderToString(<>«</>)]: 0x00ab, + [ReactDOM.renderToString(<>¬</>)]: 0x00ac, + [ReactDOM.renderToString(<>­</>)]: 0x00ad, + [ReactDOM.renderToString(<>®</>)]: 0x00ae, + [ReactDOM.renderToString(<>¯</>)]: 0x00af, + [ReactDOM.renderToString(<>°</>)]: 0x00b0, + [ReactDOM.renderToString(<>±</>)]: 0x00b1, + [ReactDOM.renderToString(<>²</>)]: 0x00b2, + [ReactDOM.renderToString(<>³</>)]: 0x00b3, + [ReactDOM.renderToString(<>´</>)]: 0x00b4, + [ReactDOM.renderToString(<>µ</>)]: 0x00b5, + [ReactDOM.renderToString(<>¶</>)]: 0x00b6, + [ReactDOM.renderToString(<>·</>)]: 0x00b7, + [ReactDOM.renderToString(<>¸</>)]: 0x00b8, + [ReactDOM.renderToString(<>¹</>)]: 0x00b9, + [ReactDOM.renderToString(<>º</>)]: 0x00ba, + [ReactDOM.renderToString(<>»</>)]: 0x00bb, + [ReactDOM.renderToString(<>¼</>)]: 0x00bc, + [ReactDOM.renderToString(<>½</>)]: 0x00bd, + [ReactDOM.renderToString(<>¾</>)]: 0x00be, + [ReactDOM.renderToString(<>¿</>)]: 0x00bf, + [ReactDOM.renderToString(<>À</>)]: 0x00c0, + [ReactDOM.renderToString(<>Á</>)]: 0x00c1, + [ReactDOM.renderToString(<>Â</>)]: 0x00c2, + [ReactDOM.renderToString(<>Ã</>)]: 0x00c3, + [ReactDOM.renderToString(<>Ä</>)]: 0x00c4, + [ReactDOM.renderToString(<>Å</>)]: 0x00c5, + [ReactDOM.renderToString(<>Æ</>)]: 0x00c6, + [ReactDOM.renderToString(<>Ç</>)]: 0x00c7, + [ReactDOM.renderToString(<>È</>)]: 0x00c8, + [ReactDOM.renderToString(<>É</>)]: 0x00c9, + [ReactDOM.renderToString(<>Ê</>)]: 0x00ca, + [ReactDOM.renderToString(<>Ë</>)]: 0x00cb, + [ReactDOM.renderToString(<>Ì</>)]: 0x00cc, + [ReactDOM.renderToString(<>Í</>)]: 0x00cd, + [ReactDOM.renderToString(<>Î</>)]: 0x00ce, + [ReactDOM.renderToString(<>Ï</>)]: 0x00cf, + [ReactDOM.renderToString(<>Ð</>)]: 0x00d0, + [ReactDOM.renderToString(<>Ñ</>)]: 0x00d1, + [ReactDOM.renderToString(<>Ò</>)]: 0x00d2, + [ReactDOM.renderToString(<>Ó</>)]: 0x00d3, + [ReactDOM.renderToString(<>Ô</>)]: 0x00d4, + [ReactDOM.renderToString(<>Õ</>)]: 0x00d5, + [ReactDOM.renderToString(<>Ö</>)]: 0x00d6, + [ReactDOM.renderToString(<>×</>)]: 0x00d7, + [ReactDOM.renderToString(<>Ø</>)]: 0x00d8, + [ReactDOM.renderToString(<>Ù</>)]: 0x00d9, + [ReactDOM.renderToString(<>Ú</>)]: 0x00da, + [ReactDOM.renderToString(<>Û</>)]: 0x00db, + [ReactDOM.renderToString(<>Ü</>)]: 0x00dc, + [ReactDOM.renderToString(<>Ý</>)]: 0x00dd, + [ReactDOM.renderToString(<>Þ</>)]: 0x00de, + [ReactDOM.renderToString(<>ß</>)]: 0x00df, + [ReactDOM.renderToString(<>à</>)]: 0x00e0, + [ReactDOM.renderToString(<>á</>)]: 0x00e1, + [ReactDOM.renderToString(<>â</>)]: 0x00e2, + [ReactDOM.renderToString(<>ã</>)]: 0x00e3, + [ReactDOM.renderToString(<>ä</>)]: 0x00e4, + [ReactDOM.renderToString(<>å</>)]: 0x00e5, + [ReactDOM.renderToString(<>æ</>)]: 0x00e6, + [ReactDOM.renderToString(<>ç</>)]: 0x00e7, + [ReactDOM.renderToString(<>è</>)]: 0x00e8, + [ReactDOM.renderToString(<>é</>)]: 0x00e9, + [ReactDOM.renderToString(<>ê</>)]: 0x00ea, + [ReactDOM.renderToString(<>ë</>)]: 0x00eb, + [ReactDOM.renderToString(<>ì</>)]: 0x00ec, + [ReactDOM.renderToString(<>í</>)]: 0x00ed, + [ReactDOM.renderToString(<>î</>)]: 0x00ee, + [ReactDOM.renderToString(<>ï</>)]: 0x00ef, + [ReactDOM.renderToString(<>ð</>)]: 0x00f0, + [ReactDOM.renderToString(<>ñ</>)]: 0x00f1, + [ReactDOM.renderToString(<>ò</>)]: 0x00f2, + [ReactDOM.renderToString(<>ó</>)]: 0x00f3, + [ReactDOM.renderToString(<>ô</>)]: 0x00f4, + [ReactDOM.renderToString(<>õ</>)]: 0x00f5, + [ReactDOM.renderToString(<>ö</>)]: 0x00f6, + [ReactDOM.renderToString(<>÷</>)]: 0x00f7, + [ReactDOM.renderToString(<>ø</>)]: 0x00f8, + [ReactDOM.renderToString(<>ù</>)]: 0x00f9, + [ReactDOM.renderToString(<>ú</>)]: 0x00fa, + [ReactDOM.renderToString(<>û</>)]: 0x00fb, + [ReactDOM.renderToString(<>ü</>)]: 0x00fc, + [ReactDOM.renderToString(<>ý</>)]: 0x00fd, + [ReactDOM.renderToString(<>þ</>)]: 0x00fe, + [ReactDOM.renderToString(<>ÿ</>)]: 0x00ff, + [ReactDOM.renderToString(<>Œ</>)]: 0x0152, + [ReactDOM.renderToString(<>œ</>)]: 0x0153, + [ReactDOM.renderToString(<>Š</>)]: 0x0160, + [ReactDOM.renderToString(<>š</>)]: 0x0161, + [ReactDOM.renderToString(<>Ÿ</>)]: 0x0178, + [ReactDOM.renderToString(<>ƒ</>)]: 0x0192, + [ReactDOM.renderToString(<>ˆ</>)]: 0x02c6, + [ReactDOM.renderToString(<>˜</>)]: 0x02dc, + [ReactDOM.renderToString(<>Α</>)]: 0x0391, + [ReactDOM.renderToString(<>Β</>)]: 0x0392, + [ReactDOM.renderToString(<>Γ</>)]: 0x0393, + [ReactDOM.renderToString(<>Δ</>)]: 0x0394, + [ReactDOM.renderToString(<>Ε</>)]: 0x0395, + [ReactDOM.renderToString(<>Ζ</>)]: 0x0396, + [ReactDOM.renderToString(<>Η</>)]: 0x0397, + [ReactDOM.renderToString(<>Θ</>)]: 0x0398, + [ReactDOM.renderToString(<>Ι</>)]: 0x0399, + [ReactDOM.renderToString(<>Κ</>)]: 0x039a, + [ReactDOM.renderToString(<>Λ</>)]: 0x039b, + [ReactDOM.renderToString(<>Μ</>)]: 0x039c, + [ReactDOM.renderToString(<>Ν</>)]: 0x039d, + [ReactDOM.renderToString(<>Ξ</>)]: 0x039e, + [ReactDOM.renderToString(<>Ο</>)]: 0x039f, + [ReactDOM.renderToString(<>Π</>)]: 0x03a0, + [ReactDOM.renderToString(<>Ρ</>)]: 0x03a1, + [ReactDOM.renderToString(<>Σ</>)]: 0x03a3, + [ReactDOM.renderToString(<>Τ</>)]: 0x03a4, + [ReactDOM.renderToString(<>Υ</>)]: 0x03a5, + [ReactDOM.renderToString(<>Φ</>)]: 0x03a6, + [ReactDOM.renderToString(<>Χ</>)]: 0x03a7, + [ReactDOM.renderToString(<>Ψ</>)]: 0x03a8, + [ReactDOM.renderToString(<>Ω</>)]: 0x03a9, + [ReactDOM.renderToString(<>α</>)]: 0x03b1, + [ReactDOM.renderToString(<>β</>)]: 0x03b2, + [ReactDOM.renderToString(<>γ</>)]: 0x03b3, + [ReactDOM.renderToString(<>δ</>)]: 0x03b4, + [ReactDOM.renderToString(<>ε</>)]: 0x03b5, + [ReactDOM.renderToString(<>ζ</>)]: 0x03b6, + [ReactDOM.renderToString(<>η</>)]: 0x03b7, + [ReactDOM.renderToString(<>θ</>)]: 0x03b8, + [ReactDOM.renderToString(<>ι</>)]: 0x03b9, + [ReactDOM.renderToString(<>κ</>)]: 0x03ba, + [ReactDOM.renderToString(<>λ</>)]: 0x03bb, + [ReactDOM.renderToString(<>μ</>)]: 0x03bc, + [ReactDOM.renderToString(<>ν</>)]: 0x03bd, + [ReactDOM.renderToString(<>ξ</>)]: 0x03be, + [ReactDOM.renderToString(<>ο</>)]: 0x03bf, + [ReactDOM.renderToString(<>π</>)]: 0x03c0, + [ReactDOM.renderToString(<>ρ</>)]: 0x03c1, + [ReactDOM.renderToString(<>ς</>)]: 0x03c2, + [ReactDOM.renderToString(<>σ</>)]: 0x03c3, + [ReactDOM.renderToString(<>τ</>)]: 0x03c4, + [ReactDOM.renderToString(<>υ</>)]: 0x03c5, + [ReactDOM.renderToString(<>φ</>)]: 0x03c6, + [ReactDOM.renderToString(<>χ</>)]: 0x03c7, + [ReactDOM.renderToString(<>ψ</>)]: 0x03c8, + [ReactDOM.renderToString(<>ω</>)]: 0x03c9, + [ReactDOM.renderToString(<>ϑ</>)]: 0x03d1, + [ReactDOM.renderToString(<>ϒ</>)]: 0x03d2, + [ReactDOM.renderToString(<>ϖ</>)]: 0x03d6, + [ReactDOM.renderToString(<> </>)]: 0x2002, + [ReactDOM.renderToString(<> </>)]: 0x2003, + [ReactDOM.renderToString(<> </>)]: 0x2009, + [ReactDOM.renderToString(<>‌</>)]: 0x200c, + [ReactDOM.renderToString(<>‍</>)]: 0x200d, + [ReactDOM.renderToString(<>‎</>)]: 0x200e, + [ReactDOM.renderToString(<>‏</>)]: 0x200f, + [ReactDOM.renderToString(<>–</>)]: 0x2013, + [ReactDOM.renderToString(<>—</>)]: 0x2014, + [ReactDOM.renderToString(<>‘</>)]: 0x2018, + [ReactDOM.renderToString(<>’</>)]: 0x2019, + [ReactDOM.renderToString(<>‚</>)]: 0x201a, + [ReactDOM.renderToString(<>“</>)]: 0x201c, + [ReactDOM.renderToString(<>”</>)]: 0x201d, + [ReactDOM.renderToString(<>„</>)]: 0x201e, + [ReactDOM.renderToString(<>†</>)]: 0x2020, + [ReactDOM.renderToString(<>‡</>)]: 0x2021, + [ReactDOM.renderToString(<>•</>)]: 0x2022, + [ReactDOM.renderToString(<>…</>)]: 0x2026, + [ReactDOM.renderToString(<>‰</>)]: 0x2030, + [ReactDOM.renderToString(<>′</>)]: 0x2032, + [ReactDOM.renderToString(<>″</>)]: 0x2033, + [ReactDOM.renderToString(<>‹</>)]: 0x2039, + [ReactDOM.renderToString(<>›</>)]: 0x203a, + [ReactDOM.renderToString(<>‾</>)]: 0x203e, + [ReactDOM.renderToString(<>⁄</>)]: 0x2044, + [ReactDOM.renderToString(<>€</>)]: 0x20ac, + [ReactDOM.renderToString(<>ℑ</>)]: 0x2111, + [ReactDOM.renderToString(<>℘</>)]: 0x2118, + [ReactDOM.renderToString(<>ℜ</>)]: 0x211c, + [ReactDOM.renderToString(<>™</>)]: 0x2122, + [ReactDOM.renderToString(<>ℵ</>)]: 0x2135, + [ReactDOM.renderToString(<>←</>)]: 0x2190, + [ReactDOM.renderToString(<>↑</>)]: 0x2191, + [ReactDOM.renderToString(<>→</>)]: 0x2192, + [ReactDOM.renderToString(<>↓</>)]: 0x2193, + [ReactDOM.renderToString(<>↔</>)]: 0x2194, + [ReactDOM.renderToString(<>↵</>)]: 0x21b5, + [ReactDOM.renderToString(<>⇐</>)]: 0x21d0, + [ReactDOM.renderToString(<>⇑</>)]: 0x21d1, + [ReactDOM.renderToString(<>⇒</>)]: 0x21d2, + [ReactDOM.renderToString(<>⇓</>)]: 0x21d3, + [ReactDOM.renderToString(<>⇔</>)]: 0x21d4, + [ReactDOM.renderToString(<>∀</>)]: 0x2200, + [ReactDOM.renderToString(<>∂</>)]: 0x2202, + [ReactDOM.renderToString(<>∃</>)]: 0x2203, + [ReactDOM.renderToString(<>∅</>)]: 0x2205, + [ReactDOM.renderToString(<>∇</>)]: 0x2207, + [ReactDOM.renderToString(<>∈</>)]: 0x2208, + [ReactDOM.renderToString(<>∉</>)]: 0x2209, + [ReactDOM.renderToString(<>∋</>)]: 0x220b, + [ReactDOM.renderToString(<>∏</>)]: 0x220f, + [ReactDOM.renderToString(<>∑</>)]: 0x2211, + [ReactDOM.renderToString(<>−</>)]: 0x2212, + [ReactDOM.renderToString(<>∗</>)]: 0x2217, + [ReactDOM.renderToString(<>√</>)]: 0x221a, + [ReactDOM.renderToString(<>∝</>)]: 0x221d, + [ReactDOM.renderToString(<>∞</>)]: 0x221e, + [ReactDOM.renderToString(<>∠</>)]: 0x2220, + [ReactDOM.renderToString(<>∧</>)]: 0x2227, + [ReactDOM.renderToString(<>∨</>)]: 0x2228, + [ReactDOM.renderToString(<>∩</>)]: 0x2229, + [ReactDOM.renderToString(<>∪</>)]: 0x222a, + [ReactDOM.renderToString(<>∫</>)]: 0x222b, + [ReactDOM.renderToString(<>∴</>)]: 0x2234, + [ReactDOM.renderToString(<>∼</>)]: 0x223c, + [ReactDOM.renderToString(<>≅</>)]: 0x2245, + [ReactDOM.renderToString(<>≈</>)]: 0x2248, + [ReactDOM.renderToString(<>≠</>)]: 0x2260, + [ReactDOM.renderToString(<>≡</>)]: 0x2261, + [ReactDOM.renderToString(<>≤</>)]: 0x2264, + [ReactDOM.renderToString(<>≥</>)]: 0x2265, + [ReactDOM.renderToString(<>⊂</>)]: 0x2282, + [ReactDOM.renderToString(<>⊃</>)]: 0x2283, + [ReactDOM.renderToString(<>⊄</>)]: 0x2284, + [ReactDOM.renderToString(<>⊆</>)]: 0x2286, + [ReactDOM.renderToString(<>⊇</>)]: 0x2287, + [ReactDOM.renderToString(<>⊕</>)]: 0x2295, + [ReactDOM.renderToString(<>⊗</>)]: 0x2297, + [ReactDOM.renderToString(<>⊥</>)]: 0x22a5, + [ReactDOM.renderToString(<>⋅</>)]: 0x22c5, + [ReactDOM.renderToString(<>⌈</>)]: 0x2308, + [ReactDOM.renderToString(<>⌉</>)]: 0x2309, + [ReactDOM.renderToString(<>⌊</>)]: 0x230a, + [ReactDOM.renderToString(<>⌋</>)]: 0x230b, + [ReactDOM.renderToString(<>⟨</>)]: 0x2329, + [ReactDOM.renderToString(<>⟩</>)]: 0x232a, + [ReactDOM.renderToString(<>◊</>)]: 0x25ca, + [ReactDOM.renderToString(<>♠</>)]: 0x2660, + [ReactDOM.renderToString(<>♣</>)]: 0x2663, + [ReactDOM.renderToString(<>♥</>)]: 0x2665, + [ReactDOM.renderToString(<>♦</>)]: 0x2666, + + [ReactDOM.renderToString(<></>)]: 0x1, + [ReactDOM.renderToString(<></>)]: 0x2, + [ReactDOM.renderToString(<></>)]: 0x3, + [ReactDOM.renderToString(<></>)]: 0x4, + [ReactDOM.renderToString(<></>)]: 0x5, + [ReactDOM.renderToString(<></>)]: 0x6, + [ReactDOM.renderToString(<></>)]: 0x7, + [ReactDOM.renderToString(<></>)]: 0x8, + [ReactDOM.renderToString(<>	</>)]: 0x9, + [ReactDOM.renderToString(<>
</>)]: 0xa, + [ReactDOM.renderToString(<></>)]: 0xb, + [ReactDOM.renderToString(<></>)]: 0xc, + [ReactDOM.renderToString(<>
</>)]: 0xd, + [ReactDOM.renderToString(<></>)]: 0xe, + [ReactDOM.renderToString(<></>)]: 0xf, + [ReactDOM.renderToString(<></>)]: 0x10, + [ReactDOM.renderToString(<></>)]: 0x11, + [ReactDOM.renderToString(<></>)]: 0x12, + [ReactDOM.renderToString(<></>)]: 0x13, + [ReactDOM.renderToString(<></>)]: 0x14, + [ReactDOM.renderToString(<></>)]: 0x15, + [ReactDOM.renderToString(<></>)]: 0x16, + [ReactDOM.renderToString(<></>)]: 0x17, + [ReactDOM.renderToString(<></>)]: 0x18, + [ReactDOM.renderToString(<></>)]: 0x19, + [ReactDOM.renderToString(<></>)]: 0x1a, + [ReactDOM.renderToString(<></>)]: 0x1b, + [ReactDOM.renderToString(<></>)]: 0x1c, + [ReactDOM.renderToString(<></>)]: 0x1d, + [ReactDOM.renderToString(<></>)]: 0x1e, + [ReactDOM.renderToString(<></>)]: 0x1f, + [ReactDOM.renderToString(<> </>)]: 0x20, + [ReactDOM.renderToString(<>!</>)]: 0x21, + [ReactDOM.renderToString(<>"</>)]: 0x22, + [ReactDOM.renderToString(<>#</>)]: 0x23, + [ReactDOM.renderToString(<>$</>)]: 0x24, + [ReactDOM.renderToString(<>%</>)]: 0x25, + [ReactDOM.renderToString(<>&</>)]: 0x26, + [ReactDOM.renderToString(<>'</>)]: 0x27, + [ReactDOM.renderToString(<>(</>)]: 0x28, + [ReactDOM.renderToString(<>)</>)]: 0x29, + [ReactDOM.renderToString(<>*</>)]: 0x2a, + [ReactDOM.renderToString(<>+</>)]: 0x2b, + [ReactDOM.renderToString(<>,</>)]: 0x2c, + [ReactDOM.renderToString(<>-</>)]: 0x2d, + [ReactDOM.renderToString(<>.</>)]: 0x2e, + [ReactDOM.renderToString(<>/</>)]: 0x2f, + [ReactDOM.renderToString(<>0</>)]: 0x30, + [ReactDOM.renderToString(<>1</>)]: 0x31, + [ReactDOM.renderToString(<>2</>)]: 0x32, + [ReactDOM.renderToString(<>3</>)]: 0x33, + [ReactDOM.renderToString(<>4</>)]: 0x34, + [ReactDOM.renderToString(<>5</>)]: 0x35, + [ReactDOM.renderToString(<>6</>)]: 0x36, + [ReactDOM.renderToString(<>7</>)]: 0x37, + [ReactDOM.renderToString(<>8</>)]: 0x38, + [ReactDOM.renderToString(<>9</>)]: 0x39, + [ReactDOM.renderToString(<>:</>)]: 0x3a, + [ReactDOM.renderToString(<>;</>)]: 0x3b, + [ReactDOM.renderToString(<><</>)]: 0x3c, + [ReactDOM.renderToString(<>=</>)]: 0x3d, + [ReactDOM.renderToString(<>></>)]: 0x3e, + [ReactDOM.renderToString(<>?</>)]: 0x3f, + [ReactDOM.renderToString(<>@</>)]: 0x40, + [ReactDOM.renderToString(<>A</>)]: 0x41, + [ReactDOM.renderToString(<>B</>)]: 0x42, + [ReactDOM.renderToString(<>C</>)]: 0x43, + [ReactDOM.renderToString(<>D</>)]: 0x44, + [ReactDOM.renderToString(<>E</>)]: 0x45, + [ReactDOM.renderToString(<>F</>)]: 0x46, + [ReactDOM.renderToString(<>G</>)]: 0x47, + [ReactDOM.renderToString(<>H</>)]: 0x48, + [ReactDOM.renderToString(<>I</>)]: 0x49, + [ReactDOM.renderToString(<>J</>)]: 0x4a, + [ReactDOM.renderToString(<>K</>)]: 0x4b, + [ReactDOM.renderToString(<>L</>)]: 0x4c, + [ReactDOM.renderToString(<>M</>)]: 0x4d, + [ReactDOM.renderToString(<>N</>)]: 0x4e, + [ReactDOM.renderToString(<>O</>)]: 0x4f, + [ReactDOM.renderToString(<>P</>)]: 0x50, + [ReactDOM.renderToString(<>Q</>)]: 0x51, + [ReactDOM.renderToString(<>R</>)]: 0x52, + [ReactDOM.renderToString(<>S</>)]: 0x53, + [ReactDOM.renderToString(<>T</>)]: 0x54, + [ReactDOM.renderToString(<>U</>)]: 0x55, + [ReactDOM.renderToString(<>V</>)]: 0x56, + [ReactDOM.renderToString(<>W</>)]: 0x57, + [ReactDOM.renderToString(<>X</>)]: 0x58, + [ReactDOM.renderToString(<>Y</>)]: 0x59, + [ReactDOM.renderToString(<>Z</>)]: 0x5a, + [ReactDOM.renderToString(<>[</>)]: 0x5b, + [ReactDOM.renderToString(<>\</>)]: 0x5c, + [ReactDOM.renderToString(<>]</>)]: 0x5d, + [ReactDOM.renderToString(<>^</>)]: 0x5e, + [ReactDOM.renderToString(<>_</>)]: 0x5f, + [ReactDOM.renderToString(<>`</>)]: 0x60, + [ReactDOM.renderToString(<>a</>)]: 0x61, + [ReactDOM.renderToString(<>b</>)]: 0x62, + [ReactDOM.renderToString(<>c</>)]: 0x63, + [ReactDOM.renderToString(<>d</>)]: 0x64, + [ReactDOM.renderToString(<>e</>)]: 0x65, + [ReactDOM.renderToString(<>f</>)]: 0x66, + [ReactDOM.renderToString(<>g</>)]: 0x67, + [ReactDOM.renderToString(<>h</>)]: 0x68, + [ReactDOM.renderToString(<>i</>)]: 0x69, + [ReactDOM.renderToString(<>j</>)]: 0x6a, + [ReactDOM.renderToString(<>k</>)]: 0x6b, + [ReactDOM.renderToString(<>l</>)]: 0x6c, + [ReactDOM.renderToString(<>m</>)]: 0x6d, + [ReactDOM.renderToString(<>n</>)]: 0x6e, + [ReactDOM.renderToString(<>o</>)]: 0x6f, + [ReactDOM.renderToString(<>p</>)]: 0x70, + [ReactDOM.renderToString(<>q</>)]: 0x71, + [ReactDOM.renderToString(<>r</>)]: 0x72, + [ReactDOM.renderToString(<>s</>)]: 0x73, + [ReactDOM.renderToString(<>t</>)]: 0x74, + [ReactDOM.renderToString(<>u</>)]: 0x75, + [ReactDOM.renderToString(<>v</>)]: 0x76, + [ReactDOM.renderToString(<>w</>)]: 0x77, + [ReactDOM.renderToString(<>x</>)]: 0x78, + [ReactDOM.renderToString(<>y</>)]: 0x79, + [ReactDOM.renderToString(<>z</>)]: 0x7a, + [ReactDOM.renderToString(<>{</>)]: 0x7b, + [ReactDOM.renderToString(<>|</>)]: 0x7c, + [ReactDOM.renderToString(<>}</>)]: 0x7d, + [ReactDOM.renderToString(<>~</>)]: 0x7e, + [ReactDOM.renderToString(<></>)]: 0x7f, + [ReactDOM.renderToString(<>€</>)]: 0x80, + [ReactDOM.renderToString(<></>)]: 0x81, + [ReactDOM.renderToString(<>‚</>)]: 0x82, + [ReactDOM.renderToString(<>ƒ</>)]: 0x83, + [ReactDOM.renderToString(<>„</>)]: 0x84, + [ReactDOM.renderToString(<>…</>)]: 0x85, + [ReactDOM.renderToString(<>†</>)]: 0x86, + [ReactDOM.renderToString(<>‡</>)]: 0x87, + [ReactDOM.renderToString(<>ˆ</>)]: 0x88, + [ReactDOM.renderToString(<>‰</>)]: 0x89, + [ReactDOM.renderToString(<>Š</>)]: 0x8a, + [ReactDOM.renderToString(<>‹</>)]: 0x8b, + [ReactDOM.renderToString(<>Œ</>)]: 0x8c, + [ReactDOM.renderToString(<></>)]: 0x8d, + [ReactDOM.renderToString(<>Ž</>)]: 0x8e, + [ReactDOM.renderToString(<></>)]: 0x8f, + [ReactDOM.renderToString(<></>)]: 0x90, + [ReactDOM.renderToString(<>‘</>)]: 0x91, + [ReactDOM.renderToString(<>’</>)]: 0x92, + [ReactDOM.renderToString(<>“</>)]: 0x93, + [ReactDOM.renderToString(<>”</>)]: 0x94, + [ReactDOM.renderToString(<>•</>)]: 0x95, + [ReactDOM.renderToString(<>–</>)]: 0x96, + [ReactDOM.renderToString(<>—</>)]: 0x97, + [ReactDOM.renderToString(<>˜</>)]: 0x98, + [ReactDOM.renderToString(<>™</>)]: 0x99, + [ReactDOM.renderToString(<>š</>)]: 0x9a, + [ReactDOM.renderToString(<>›</>)]: 0x9b, + [ReactDOM.renderToString(<>œ</>)]: 0x9c, + [ReactDOM.renderToString(<></>)]: 0x9d, + [ReactDOM.renderToString(<>ž</>)]: 0x9e, + [ReactDOM.renderToString(<>Ÿ</>)]: 0x9f, + [ReactDOM.renderToString(<> </>)]: 0xa0, + [ReactDOM.renderToString(<>¡</>)]: 0xa1, + [ReactDOM.renderToString(<>¢</>)]: 0xa2, + [ReactDOM.renderToString(<>£</>)]: 0xa3, + [ReactDOM.renderToString(<>¤</>)]: 0xa4, + [ReactDOM.renderToString(<>¥</>)]: 0xa5, + [ReactDOM.renderToString(<>¦</>)]: 0xa6, + [ReactDOM.renderToString(<>§</>)]: 0xa7, + [ReactDOM.renderToString(<>¨</>)]: 0xa8, + [ReactDOM.renderToString(<>©</>)]: 0xa9, + [ReactDOM.renderToString(<>ª</>)]: 0xaa, + [ReactDOM.renderToString(<>«</>)]: 0xab, + [ReactDOM.renderToString(<>¬</>)]: 0xac, + [ReactDOM.renderToString(<>­</>)]: 0xad, + [ReactDOM.renderToString(<>®</>)]: 0xae, + [ReactDOM.renderToString(<>¯</>)]: 0xaf, + [ReactDOM.renderToString(<>°</>)]: 0xb0, + [ReactDOM.renderToString(<>±</>)]: 0xb1, + [ReactDOM.renderToString(<>²</>)]: 0xb2, + [ReactDOM.renderToString(<>³</>)]: 0xb3, + [ReactDOM.renderToString(<>´</>)]: 0xb4, + [ReactDOM.renderToString(<>µ</>)]: 0xb5, + [ReactDOM.renderToString(<>¶</>)]: 0xb6, + [ReactDOM.renderToString(<>·</>)]: 0xb7, + [ReactDOM.renderToString(<>¸</>)]: 0xb8, + [ReactDOM.renderToString(<>¹</>)]: 0xb9, + [ReactDOM.renderToString(<>º</>)]: 0xba, + [ReactDOM.renderToString(<>»</>)]: 0xbb, + [ReactDOM.renderToString(<>¼</>)]: 0xbc, + [ReactDOM.renderToString(<>½</>)]: 0xbd, + [ReactDOM.renderToString(<>¾</>)]: 0xbe, + [ReactDOM.renderToString(<>¿</>)]: 0xbf, + [ReactDOM.renderToString(<>À</>)]: 0xc0, + [ReactDOM.renderToString(<>Á</>)]: 0xc1, + [ReactDOM.renderToString(<>Â</>)]: 0xc2, + [ReactDOM.renderToString(<>Ã</>)]: 0xc3, + [ReactDOM.renderToString(<>Ä</>)]: 0xc4, + [ReactDOM.renderToString(<>Å</>)]: 0xc5, + [ReactDOM.renderToString(<>Æ</>)]: 0xc6, + [ReactDOM.renderToString(<>Ç</>)]: 0xc7, + [ReactDOM.renderToString(<>È</>)]: 0xc8, + [ReactDOM.renderToString(<>É</>)]: 0xc9, + [ReactDOM.renderToString(<>Ê</>)]: 0xca, + [ReactDOM.renderToString(<>Ë</>)]: 0xcb, + [ReactDOM.renderToString(<>Ì</>)]: 0xcc, + [ReactDOM.renderToString(<>Í</>)]: 0xcd, + [ReactDOM.renderToString(<>Î</>)]: 0xce, + [ReactDOM.renderToString(<>Ï</>)]: 0xcf, + [ReactDOM.renderToString(<>Ð</>)]: 0xd0, + [ReactDOM.renderToString(<>Ñ</>)]: 0xd1, + [ReactDOM.renderToString(<>Ò</>)]: 0xd2, + [ReactDOM.renderToString(<>Ó</>)]: 0xd3, + [ReactDOM.renderToString(<>Ô</>)]: 0xd4, + [ReactDOM.renderToString(<>Õ</>)]: 0xd5, + [ReactDOM.renderToString(<>Ö</>)]: 0xd6, + [ReactDOM.renderToString(<>×</>)]: 0xd7, + [ReactDOM.renderToString(<>Ø</>)]: 0xd8, + [ReactDOM.renderToString(<>Ù</>)]: 0xd9, + [ReactDOM.renderToString(<>Ú</>)]: 0xda, + [ReactDOM.renderToString(<>Û</>)]: 0xdb, + [ReactDOM.renderToString(<>Ü</>)]: 0xdc, + [ReactDOM.renderToString(<>Ý</>)]: 0xdd, + [ReactDOM.renderToString(<>Þ</>)]: 0xde, + [ReactDOM.renderToString(<>ß</>)]: 0xdf, + [ReactDOM.renderToString(<>à</>)]: 0xe0, + [ReactDOM.renderToString(<>á</>)]: 0xe1, + [ReactDOM.renderToString(<>â</>)]: 0xe2, + [ReactDOM.renderToString(<>ã</>)]: 0xe3, + [ReactDOM.renderToString(<>ä</>)]: 0xe4, + [ReactDOM.renderToString(<>å</>)]: 0xe5, + [ReactDOM.renderToString(<>æ</>)]: 0xe6, + [ReactDOM.renderToString(<>ç</>)]: 0xe7, + [ReactDOM.renderToString(<>è</>)]: 0xe8, + [ReactDOM.renderToString(<>é</>)]: 0xe9, + [ReactDOM.renderToString(<>ê</>)]: 0xea, + [ReactDOM.renderToString(<>ë</>)]: 0xeb, + [ReactDOM.renderToString(<>ì</>)]: 0xec, + [ReactDOM.renderToString(<>í</>)]: 0xed, + [ReactDOM.renderToString(<>î</>)]: 0xee, + [ReactDOM.renderToString(<>ï</>)]: 0xef, + [ReactDOM.renderToString(<>ð</>)]: 0xf0, + [ReactDOM.renderToString(<>ñ</>)]: 0xf1, + [ReactDOM.renderToString(<>ò</>)]: 0xf2, + [ReactDOM.renderToString(<>ó</>)]: 0xf3, + [ReactDOM.renderToString(<>ô</>)]: 0xf4, + [ReactDOM.renderToString(<>õ</>)]: 0xf5, + [ReactDOM.renderToString(<>ö</>)]: 0xf6, + [ReactDOM.renderToString(<>÷</>)]: 0xf7, + [ReactDOM.renderToString(<>ø</>)]: 0xf8, + [ReactDOM.renderToString(<>ù</>)]: 0xf9, + [ReactDOM.renderToString(<>ú</>)]: 0xfa, + [ReactDOM.renderToString(<>û</>)]: 0xfb, + [ReactDOM.renderToString(<>ü</>)]: 0xfc, + [ReactDOM.renderToString(<>ý</>)]: 0xfd, + [ReactDOM.renderToString(<>þ</>)]: 0xfe, + [ReactDOM.renderToString(<>ÿ</>)]: 0xff, + [ReactDOM.renderToString(<>Ā</>)]: 0x100, + [ReactDOM.renderToString(<>ā</>)]: 0x101, + [ReactDOM.renderToString(<>Ă</>)]: 0x102, + [ReactDOM.renderToString(<>ă</>)]: 0x103, + [ReactDOM.renderToString(<>Ą</>)]: 0x104, + [ReactDOM.renderToString(<>ą</>)]: 0x105, + [ReactDOM.renderToString(<>Ć</>)]: 0x106, + [ReactDOM.renderToString(<>ć</>)]: 0x107, + [ReactDOM.renderToString(<>Ĉ</>)]: 0x108, + [ReactDOM.renderToString(<>ĉ</>)]: 0x109, + [ReactDOM.renderToString(<>Ċ</>)]: 0x10a, + [ReactDOM.renderToString(<>ċ</>)]: 0x10b, + [ReactDOM.renderToString(<>Č</>)]: 0x10c, + [ReactDOM.renderToString(<>č</>)]: 0x10d, + [ReactDOM.renderToString(<>Ď</>)]: 0x10e, + [ReactDOM.renderToString(<>ď</>)]: 0x10f, + [ReactDOM.renderToString(<>Đ</>)]: 0x110, + [ReactDOM.renderToString(<>đ</>)]: 0x111, + [ReactDOM.renderToString(<>Ē</>)]: 0x112, + [ReactDOM.renderToString(<>ē</>)]: 0x113, + [ReactDOM.renderToString(<>Ĕ</>)]: 0x114, + [ReactDOM.renderToString(<>ĕ</>)]: 0x115, + [ReactDOM.renderToString(<>Ė</>)]: 0x116, + [ReactDOM.renderToString(<>ė</>)]: 0x117, + [ReactDOM.renderToString(<>Ę</>)]: 0x118, + [ReactDOM.renderToString(<>ę</>)]: 0x119, + [ReactDOM.renderToString(<>Ě</>)]: 0x11a, + [ReactDOM.renderToString(<>ě</>)]: 0x11b, + [ReactDOM.renderToString(<>Ĝ</>)]: 0x11c, + [ReactDOM.renderToString(<>ĝ</>)]: 0x11d, + [ReactDOM.renderToString(<>Ğ</>)]: 0x11e, + [ReactDOM.renderToString(<>ğ</>)]: 0x11f, + [ReactDOM.renderToString(<>Ġ</>)]: 0x120, + [ReactDOM.renderToString(<>ġ</>)]: 0x121, + [ReactDOM.renderToString(<>Ģ</>)]: 0x122, + [ReactDOM.renderToString(<>ģ</>)]: 0x123, + [ReactDOM.renderToString(<>Ĥ</>)]: 0x124, + [ReactDOM.renderToString(<>ĥ</>)]: 0x125, + [ReactDOM.renderToString(<>Ħ</>)]: 0x126, + [ReactDOM.renderToString(<>ħ</>)]: 0x127, + [ReactDOM.renderToString(<>Ĩ</>)]: 0x128, + [ReactDOM.renderToString(<>ĩ</>)]: 0x129, + [ReactDOM.renderToString(<>Ī</>)]: 0x12a, + [ReactDOM.renderToString(<>ī</>)]: 0x12b, + [ReactDOM.renderToString(<>Ĭ</>)]: 0x12c, + [ReactDOM.renderToString(<>ĭ</>)]: 0x12d, + [ReactDOM.renderToString(<>Į</>)]: 0x12e, + [ReactDOM.renderToString(<>į</>)]: 0x12f, + [ReactDOM.renderToString(<>İ</>)]: 0x130, + [ReactDOM.renderToString(<>ı</>)]: 0x131, + [ReactDOM.renderToString(<>IJ</>)]: 0x132, + [ReactDOM.renderToString(<>ij</>)]: 0x133, + [ReactDOM.renderToString(<>Ĵ</>)]: 0x134, + [ReactDOM.renderToString(<>ĵ</>)]: 0x135, + [ReactDOM.renderToString(<>Ķ</>)]: 0x136, + [ReactDOM.renderToString(<>ķ</>)]: 0x137, + [ReactDOM.renderToString(<>ĸ</>)]: 0x138, + [ReactDOM.renderToString(<>Ĺ</>)]: 0x139, + [ReactDOM.renderToString(<>ĺ</>)]: 0x13a, + [ReactDOM.renderToString(<>Ļ</>)]: 0x13b, + [ReactDOM.renderToString(<>ļ</>)]: 0x13c, + [ReactDOM.renderToString(<>Ľ</>)]: 0x13d, + [ReactDOM.renderToString(<>ľ</>)]: 0x13e, + [ReactDOM.renderToString(<>Ŀ</>)]: 0x13f, + [ReactDOM.renderToString(<>ŀ</>)]: 0x140, + [ReactDOM.renderToString(<>Ł</>)]: 0x141, + [ReactDOM.renderToString(<>ł</>)]: 0x142, + [ReactDOM.renderToString(<>Ń</>)]: 0x143, + [ReactDOM.renderToString(<>ń</>)]: 0x144, + [ReactDOM.renderToString(<>Ņ</>)]: 0x145, + [ReactDOM.renderToString(<>ņ</>)]: 0x146, + [ReactDOM.renderToString(<>Ň</>)]: 0x147, + [ReactDOM.renderToString(<>ň</>)]: 0x148, + [ReactDOM.renderToString(<>ʼn</>)]: 0x149, + [ReactDOM.renderToString(<>Ŋ</>)]: 0x14a, + [ReactDOM.renderToString(<>ŋ</>)]: 0x14b, + [ReactDOM.renderToString(<>Ō</>)]: 0x14c, + [ReactDOM.renderToString(<>ō</>)]: 0x14d, + [ReactDOM.renderToString(<>Ŏ</>)]: 0x14e, + [ReactDOM.renderToString(<>ŏ</>)]: 0x14f, + [ReactDOM.renderToString(<>Ő</>)]: 0x150, + [ReactDOM.renderToString(<>ő</>)]: 0x151, + [ReactDOM.renderToString(<>Œ</>)]: 0x152, + [ReactDOM.renderToString(<>œ</>)]: 0x153, + [ReactDOM.renderToString(<>Ŕ</>)]: 0x154, + [ReactDOM.renderToString(<>ŕ</>)]: 0x155, + [ReactDOM.renderToString(<>Ŗ</>)]: 0x156, + [ReactDOM.renderToString(<>ŗ</>)]: 0x157, + [ReactDOM.renderToString(<>Ř</>)]: 0x158, + [ReactDOM.renderToString(<>ř</>)]: 0x159, + [ReactDOM.renderToString(<>Ś</>)]: 0x15a, + [ReactDOM.renderToString(<>ś</>)]: 0x15b, + [ReactDOM.renderToString(<>Ŝ</>)]: 0x15c, + [ReactDOM.renderToString(<>ŝ</>)]: 0x15d, + [ReactDOM.renderToString(<>Ş</>)]: 0x15e, + [ReactDOM.renderToString(<>ş</>)]: 0x15f, + [ReactDOM.renderToString(<>Š</>)]: 0x160, + [ReactDOM.renderToString(<>š</>)]: 0x161, + [ReactDOM.renderToString(<>Ţ</>)]: 0x162, + [ReactDOM.renderToString(<>ţ</>)]: 0x163, + [ReactDOM.renderToString(<>Ť</>)]: 0x164, + [ReactDOM.renderToString(<>ť</>)]: 0x165, + [ReactDOM.renderToString(<>Ŧ</>)]: 0x166, + [ReactDOM.renderToString(<>ŧ</>)]: 0x167, + [ReactDOM.renderToString(<>Ũ</>)]: 0x168, + [ReactDOM.renderToString(<>ũ</>)]: 0x169, + [ReactDOM.renderToString(<>Ū</>)]: 0x16a, + [ReactDOM.renderToString(<>ū</>)]: 0x16b, + [ReactDOM.renderToString(<>Ŭ</>)]: 0x16c, + [ReactDOM.renderToString(<>ŭ</>)]: 0x16d, + [ReactDOM.renderToString(<>Ů</>)]: 0x16e, + [ReactDOM.renderToString(<>ů</>)]: 0x16f, + [ReactDOM.renderToString(<>Ű</>)]: 0x170, + [ReactDOM.renderToString(<>ű</>)]: 0x171, + [ReactDOM.renderToString(<>Ų</>)]: 0x172, + [ReactDOM.renderToString(<>ų</>)]: 0x173, + [ReactDOM.renderToString(<>Ŵ</>)]: 0x174, + [ReactDOM.renderToString(<>ŵ</>)]: 0x175, + [ReactDOM.renderToString(<>Ŷ</>)]: 0x176, + [ReactDOM.renderToString(<>ŷ</>)]: 0x177, + [ReactDOM.renderToString(<>Ÿ</>)]: 0x178, + [ReactDOM.renderToString(<>Ź</>)]: 0x179, + [ReactDOM.renderToString(<>ź</>)]: 0x17a, + [ReactDOM.renderToString(<>Ż</>)]: 0x17b, + [ReactDOM.renderToString(<>ż</>)]: 0x17c, + [ReactDOM.renderToString(<>Ž</>)]: 0x17d, + [ReactDOM.renderToString(<>ž</>)]: 0x17e, + [ReactDOM.renderToString(<>ſ</>)]: 0x17f, + [ReactDOM.renderToString(<>ƀ</>)]: 0x180, + [ReactDOM.renderToString(<>Ɓ</>)]: 0x181, + [ReactDOM.renderToString(<>Ƃ</>)]: 0x182, + [ReactDOM.renderToString(<>ƃ</>)]: 0x183, + [ReactDOM.renderToString(<>Ƅ</>)]: 0x184, + [ReactDOM.renderToString(<>ƅ</>)]: 0x185, + [ReactDOM.renderToString(<>Ɔ</>)]: 0x186, + [ReactDOM.renderToString(<>Ƈ</>)]: 0x187, + [ReactDOM.renderToString(<>ƈ</>)]: 0x188, + [ReactDOM.renderToString(<>Ɖ</>)]: 0x189, + [ReactDOM.renderToString(<>Ɗ</>)]: 0x18a, + [ReactDOM.renderToString(<>Ƌ</>)]: 0x18b, + [ReactDOM.renderToString(<>ƌ</>)]: 0x18c, + [ReactDOM.renderToString(<>ƍ</>)]: 0x18d, + [ReactDOM.renderToString(<>Ǝ</>)]: 0x18e, + [ReactDOM.renderToString(<>Ə</>)]: 0x18f, + [ReactDOM.renderToString(<>Ɛ</>)]: 0x190, + [ReactDOM.renderToString(<>Ƒ</>)]: 0x191, + [ReactDOM.renderToString(<>ƒ</>)]: 0x192, + [ReactDOM.renderToString(<>Ɠ</>)]: 0x193, + [ReactDOM.renderToString(<>Ɣ</>)]: 0x194, + [ReactDOM.renderToString(<>ƕ</>)]: 0x195, + [ReactDOM.renderToString(<>Ɩ</>)]: 0x196, + [ReactDOM.renderToString(<>Ɨ</>)]: 0x197, + [ReactDOM.renderToString(<>Ƙ</>)]: 0x198, + [ReactDOM.renderToString(<>ƙ</>)]: 0x199, + [ReactDOM.renderToString(<>ƚ</>)]: 0x19a, + [ReactDOM.renderToString(<>ƛ</>)]: 0x19b, + [ReactDOM.renderToString(<>Ɯ</>)]: 0x19c, + [ReactDOM.renderToString(<>Ɲ</>)]: 0x19d, + [ReactDOM.renderToString(<>ƞ</>)]: 0x19e, + [ReactDOM.renderToString(<>Ɵ</>)]: 0x19f, + [ReactDOM.renderToString(<>Ơ</>)]: 0x1a0, + [ReactDOM.renderToString(<>ơ</>)]: 0x1a1, + [ReactDOM.renderToString(<>Ƣ</>)]: 0x1a2, + [ReactDOM.renderToString(<>ƣ</>)]: 0x1a3, + [ReactDOM.renderToString(<>Ƥ</>)]: 0x1a4, + [ReactDOM.renderToString(<>ƥ</>)]: 0x1a5, + [ReactDOM.renderToString(<>Ʀ</>)]: 0x1a6, + [ReactDOM.renderToString(<>Ƨ</>)]: 0x1a7, + [ReactDOM.renderToString(<>ƨ</>)]: 0x1a8, + [ReactDOM.renderToString(<>Ʃ</>)]: 0x1a9, + [ReactDOM.renderToString(<>ƪ</>)]: 0x1aa, + [ReactDOM.renderToString(<>ƫ</>)]: 0x1ab, + [ReactDOM.renderToString(<>Ƭ</>)]: 0x1ac, + [ReactDOM.renderToString(<>ƭ</>)]: 0x1ad, + [ReactDOM.renderToString(<>Ʈ</>)]: 0x1ae, + [ReactDOM.renderToString(<>Ư</>)]: 0x1af, + [ReactDOM.renderToString(<>ư</>)]: 0x1b0, + [ReactDOM.renderToString(<>Ʊ</>)]: 0x1b1, + [ReactDOM.renderToString(<>Ʋ</>)]: 0x1b2, + [ReactDOM.renderToString(<>Ƴ</>)]: 0x1b3, + [ReactDOM.renderToString(<>ƴ</>)]: 0x1b4, + [ReactDOM.renderToString(<>Ƶ</>)]: 0x1b5, + [ReactDOM.renderToString(<>ƶ</>)]: 0x1b6, + [ReactDOM.renderToString(<>Ʒ</>)]: 0x1b7, + [ReactDOM.renderToString(<>Ƹ</>)]: 0x1b8, + [ReactDOM.renderToString(<>ƹ</>)]: 0x1b9, + [ReactDOM.renderToString(<>ƺ</>)]: 0x1ba, + [ReactDOM.renderToString(<>ƻ</>)]: 0x1bb, + [ReactDOM.renderToString(<>Ƽ</>)]: 0x1bc, + [ReactDOM.renderToString(<>ƽ</>)]: 0x1bd, + [ReactDOM.renderToString(<>ƾ</>)]: 0x1be, + [ReactDOM.renderToString(<>ƿ</>)]: 0x1bf, + [ReactDOM.renderToString(<>ǀ</>)]: 0x1c0, + [ReactDOM.renderToString(<>ǁ</>)]: 0x1c1, + [ReactDOM.renderToString(<>ǂ</>)]: 0x1c2, + [ReactDOM.renderToString(<>ǃ</>)]: 0x1c3, + [ReactDOM.renderToString(<>DŽ</>)]: 0x1c4, + [ReactDOM.renderToString(<>Dž</>)]: 0x1c5, + [ReactDOM.renderToString(<>dž</>)]: 0x1c6, + [ReactDOM.renderToString(<>LJ</>)]: 0x1c7, + [ReactDOM.renderToString(<>Lj</>)]: 0x1c8, + [ReactDOM.renderToString(<>lj</>)]: 0x1c9, + [ReactDOM.renderToString(<>NJ</>)]: 0x1ca, + [ReactDOM.renderToString(<>Nj</>)]: 0x1cb, + [ReactDOM.renderToString(<>nj</>)]: 0x1cc, + [ReactDOM.renderToString(<>Ǎ</>)]: 0x1cd, + [ReactDOM.renderToString(<>ǎ</>)]: 0x1ce, + [ReactDOM.renderToString(<>Ǐ</>)]: 0x1cf, + [ReactDOM.renderToString(<>ǐ</>)]: 0x1d0, + [ReactDOM.renderToString(<>Ǒ</>)]: 0x1d1, + [ReactDOM.renderToString(<>ǒ</>)]: 0x1d2, + [ReactDOM.renderToString(<>Ǔ</>)]: 0x1d3, + [ReactDOM.renderToString(<>ǔ</>)]: 0x1d4, + [ReactDOM.renderToString(<>Ǖ</>)]: 0x1d5, + [ReactDOM.renderToString(<>ǖ</>)]: 0x1d6, + [ReactDOM.renderToString(<>Ǘ</>)]: 0x1d7, + [ReactDOM.renderToString(<>ǘ</>)]: 0x1d8, + [ReactDOM.renderToString(<>Ǚ</>)]: 0x1d9, + [ReactDOM.renderToString(<>ǚ</>)]: 0x1da, + [ReactDOM.renderToString(<>Ǜ</>)]: 0x1db, + [ReactDOM.renderToString(<>ǜ</>)]: 0x1dc, + [ReactDOM.renderToString(<>ǝ</>)]: 0x1dd, + [ReactDOM.renderToString(<>Ǟ</>)]: 0x1de, + [ReactDOM.renderToString(<>ǟ</>)]: 0x1df, + [ReactDOM.renderToString(<>Ǡ</>)]: 0x1e0, + [ReactDOM.renderToString(<>ǡ</>)]: 0x1e1, + [ReactDOM.renderToString(<>Ǣ</>)]: 0x1e2, + [ReactDOM.renderToString(<>ǣ</>)]: 0x1e3, + [ReactDOM.renderToString(<>Ǥ</>)]: 0x1e4, + [ReactDOM.renderToString(<>ǥ</>)]: 0x1e5, + [ReactDOM.renderToString(<>Ǧ</>)]: 0x1e6, + [ReactDOM.renderToString(<>ǧ</>)]: 0x1e7, + [ReactDOM.renderToString(<>Ǩ</>)]: 0x1e8, + [ReactDOM.renderToString(<>ǩ</>)]: 0x1e9, + [ReactDOM.renderToString(<>Ǫ</>)]: 0x1ea, + [ReactDOM.renderToString(<>ǫ</>)]: 0x1eb, + [ReactDOM.renderToString(<>Ǭ</>)]: 0x1ec, + [ReactDOM.renderToString(<>ǭ</>)]: 0x1ed, + [ReactDOM.renderToString(<>Ǯ</>)]: 0x1ee, + [ReactDOM.renderToString(<>ǯ</>)]: 0x1ef, + [ReactDOM.renderToString(<>ǰ</>)]: 0x1f0, + [ReactDOM.renderToString(<>DZ</>)]: 0x1f1, + [ReactDOM.renderToString(<>Dz</>)]: 0x1f2, + [ReactDOM.renderToString(<>dz</>)]: 0x1f3, + [ReactDOM.renderToString(<>Ǵ</>)]: 0x1f4, + [ReactDOM.renderToString(<>ǵ</>)]: 0x1f5, + [ReactDOM.renderToString(<>Ƕ</>)]: 0x1f6, + [ReactDOM.renderToString(<>Ƿ</>)]: 0x1f7, + [ReactDOM.renderToString(<>Ǹ</>)]: 0x1f8, + [ReactDOM.renderToString(<>ǹ</>)]: 0x1f9, + [ReactDOM.renderToString(<>Ǻ</>)]: 0x1fa, + [ReactDOM.renderToString(<>ǻ</>)]: 0x1fb, + [ReactDOM.renderToString(<>Ǽ</>)]: 0x1fc, + [ReactDOM.renderToString(<>ǽ</>)]: 0x1fd, + [ReactDOM.renderToString(<>Ǿ</>)]: 0x1fe, + [ReactDOM.renderToString(<>ǿ</>)]: 0x1ff, + [ReactDOM.renderToString(<>Ȁ</>)]: 0x200, + [ReactDOM.renderToString(<>ȁ</>)]: 0x201, + [ReactDOM.renderToString(<>Ȃ</>)]: 0x202, + [ReactDOM.renderToString(<>ȃ</>)]: 0x203, + [ReactDOM.renderToString(<>Ȅ</>)]: 0x204, + [ReactDOM.renderToString(<>ȅ</>)]: 0x205, + [ReactDOM.renderToString(<>Ȇ</>)]: 0x206, + [ReactDOM.renderToString(<>ȇ</>)]: 0x207, + [ReactDOM.renderToString(<>Ȉ</>)]: 0x208, + [ReactDOM.renderToString(<>ȉ</>)]: 0x209, + [ReactDOM.renderToString(<>Ȋ</>)]: 0x20a, + [ReactDOM.renderToString(<>ȋ</>)]: 0x20b, + [ReactDOM.renderToString(<>Ȍ</>)]: 0x20c, + [ReactDOM.renderToString(<>ȍ</>)]: 0x20d, + [ReactDOM.renderToString(<>Ȏ</>)]: 0x20e, + [ReactDOM.renderToString(<>ȏ</>)]: 0x20f, + [ReactDOM.renderToString(<>Ȑ</>)]: 0x210, + [ReactDOM.renderToString(<>ȑ</>)]: 0x211, + [ReactDOM.renderToString(<>Ȓ</>)]: 0x212, + [ReactDOM.renderToString(<>ȓ</>)]: 0x213, + [ReactDOM.renderToString(<>Ȕ</>)]: 0x214, + [ReactDOM.renderToString(<>ȕ</>)]: 0x215, + [ReactDOM.renderToString(<>Ȗ</>)]: 0x216, + [ReactDOM.renderToString(<>ȗ</>)]: 0x217, + [ReactDOM.renderToString(<>Ș</>)]: 0x218, + [ReactDOM.renderToString(<>ș</>)]: 0x219, + [ReactDOM.renderToString(<>Ț</>)]: 0x21a, + [ReactDOM.renderToString(<>ț</>)]: 0x21b, + [ReactDOM.renderToString(<>Ȝ</>)]: 0x21c, + [ReactDOM.renderToString(<>ȝ</>)]: 0x21d, + [ReactDOM.renderToString(<>Ȟ</>)]: 0x21e, + [ReactDOM.renderToString(<>ȟ</>)]: 0x21f, + [ReactDOM.renderToString(<>Ƞ</>)]: 0x220, + [ReactDOM.renderToString(<>ȡ</>)]: 0x221, + [ReactDOM.renderToString(<>Ȣ</>)]: 0x222, + [ReactDOM.renderToString(<>ȣ</>)]: 0x223, + [ReactDOM.renderToString(<>Ȥ</>)]: 0x224, + [ReactDOM.renderToString(<>ȥ</>)]: 0x225, + [ReactDOM.renderToString(<>Ȧ</>)]: 0x226, + [ReactDOM.renderToString(<>ȧ</>)]: 0x227, + [ReactDOM.renderToString(<>Ȩ</>)]: 0x228, + [ReactDOM.renderToString(<>ȩ</>)]: 0x229, + [ReactDOM.renderToString(<>Ȫ</>)]: 0x22a, + [ReactDOM.renderToString(<>ȫ</>)]: 0x22b, + [ReactDOM.renderToString(<>Ȭ</>)]: 0x22c, + [ReactDOM.renderToString(<>ȭ</>)]: 0x22d, + [ReactDOM.renderToString(<>Ȯ</>)]: 0x22e, + [ReactDOM.renderToString(<>ȯ</>)]: 0x22f, + [ReactDOM.renderToString(<>Ȱ</>)]: 0x230, + [ReactDOM.renderToString(<>ȱ</>)]: 0x231, + [ReactDOM.renderToString(<>Ȳ</>)]: 0x232, + [ReactDOM.renderToString(<>ȳ</>)]: 0x233, + [ReactDOM.renderToString(<>ȴ</>)]: 0x234, + [ReactDOM.renderToString(<>ȵ</>)]: 0x235, + [ReactDOM.renderToString(<>ȶ</>)]: 0x236, + [ReactDOM.renderToString(<>ȷ</>)]: 0x237, + [ReactDOM.renderToString(<>ȸ</>)]: 0x238, + [ReactDOM.renderToString(<>ȹ</>)]: 0x239, + [ReactDOM.renderToString(<>Ⱥ</>)]: 0x23a, + [ReactDOM.renderToString(<>Ȼ</>)]: 0x23b, + [ReactDOM.renderToString(<>ȼ</>)]: 0x23c, + [ReactDOM.renderToString(<>Ƚ</>)]: 0x23d, + [ReactDOM.renderToString(<>Ⱦ</>)]: 0x23e, + [ReactDOM.renderToString(<>ȿ</>)]: 0x23f, + [ReactDOM.renderToString(<>ɀ</>)]: 0x240, + [ReactDOM.renderToString(<>Ɂ</>)]: 0x241, + [ReactDOM.renderToString(<>ɂ</>)]: 0x242, + [ReactDOM.renderToString(<>Ƀ</>)]: 0x243, + [ReactDOM.renderToString(<>Ʉ</>)]: 0x244, + [ReactDOM.renderToString(<>Ʌ</>)]: 0x245, + [ReactDOM.renderToString(<>Ɇ</>)]: 0x246, + [ReactDOM.renderToString(<>ɇ</>)]: 0x247, + [ReactDOM.renderToString(<>Ɉ</>)]: 0x248, + [ReactDOM.renderToString(<>ɉ</>)]: 0x249, + [ReactDOM.renderToString(<>Ɋ</>)]: 0x24a, + [ReactDOM.renderToString(<>ɋ</>)]: 0x24b, + [ReactDOM.renderToString(<>Ɍ</>)]: 0x24c, + [ReactDOM.renderToString(<>ɍ</>)]: 0x24d, + [ReactDOM.renderToString(<>Ɏ</>)]: 0x24e, + [ReactDOM.renderToString(<>ɏ</>)]: 0x24f, + [ReactDOM.renderToString(<>ɐ</>)]: 0x250, + [ReactDOM.renderToString(<>ɑ</>)]: 0x251, + [ReactDOM.renderToString(<>ɒ</>)]: 0x252, + [ReactDOM.renderToString(<>ɓ</>)]: 0x253, + [ReactDOM.renderToString(<>ɔ</>)]: 0x254, + [ReactDOM.renderToString(<>ɕ</>)]: 0x255, + [ReactDOM.renderToString(<>ɖ</>)]: 0x256, + [ReactDOM.renderToString(<>ɗ</>)]: 0x257, + [ReactDOM.renderToString(<>ɘ</>)]: 0x258, + [ReactDOM.renderToString(<>ə</>)]: 0x259, + [ReactDOM.renderToString(<>ɚ</>)]: 0x25a, + [ReactDOM.renderToString(<>ɛ</>)]: 0x25b, + [ReactDOM.renderToString(<>ɜ</>)]: 0x25c, + [ReactDOM.renderToString(<>ɝ</>)]: 0x25d, + [ReactDOM.renderToString(<>ɞ</>)]: 0x25e, + [ReactDOM.renderToString(<>ɟ</>)]: 0x25f, + [ReactDOM.renderToString(<>ɠ</>)]: 0x260, + [ReactDOM.renderToString(<>ɡ</>)]: 0x261, + [ReactDOM.renderToString(<>ɢ</>)]: 0x262, + [ReactDOM.renderToString(<>ɣ</>)]: 0x263, + [ReactDOM.renderToString(<>ɤ</>)]: 0x264, + [ReactDOM.renderToString(<>ɥ</>)]: 0x265, + [ReactDOM.renderToString(<>ɦ</>)]: 0x266, + [ReactDOM.renderToString(<>ɧ</>)]: 0x267, + [ReactDOM.renderToString(<>ɨ</>)]: 0x268, + [ReactDOM.renderToString(<>ɩ</>)]: 0x269, + [ReactDOM.renderToString(<>ɪ</>)]: 0x26a, + [ReactDOM.renderToString(<>ɫ</>)]: 0x26b, + [ReactDOM.renderToString(<>ɬ</>)]: 0x26c, + [ReactDOM.renderToString(<>ɭ</>)]: 0x26d, + [ReactDOM.renderToString(<>ɮ</>)]: 0x26e, + [ReactDOM.renderToString(<>ɯ</>)]: 0x26f, + [ReactDOM.renderToString(<>ɰ</>)]: 0x270, + [ReactDOM.renderToString(<>ɱ</>)]: 0x271, + [ReactDOM.renderToString(<>ɲ</>)]: 0x272, + [ReactDOM.renderToString(<>ɳ</>)]: 0x273, + [ReactDOM.renderToString(<>ɴ</>)]: 0x274, + [ReactDOM.renderToString(<>ɵ</>)]: 0x275, + [ReactDOM.renderToString(<>ɶ</>)]: 0x276, + [ReactDOM.renderToString(<>ɷ</>)]: 0x277, + [ReactDOM.renderToString(<>ɸ</>)]: 0x278, + [ReactDOM.renderToString(<>ɹ</>)]: 0x279, + [ReactDOM.renderToString(<>ɺ</>)]: 0x27a, + [ReactDOM.renderToString(<>ɻ</>)]: 0x27b, + [ReactDOM.renderToString(<>ɼ</>)]: 0x27c, + [ReactDOM.renderToString(<>ɽ</>)]: 0x27d, + [ReactDOM.renderToString(<>ɾ</>)]: 0x27e, + [ReactDOM.renderToString(<>ɿ</>)]: 0x27f, + [ReactDOM.renderToString(<>ʀ</>)]: 0x280, + [ReactDOM.renderToString(<>ʁ</>)]: 0x281, + [ReactDOM.renderToString(<>ʂ</>)]: 0x282, + [ReactDOM.renderToString(<>ʃ</>)]: 0x283, + [ReactDOM.renderToString(<>ʄ</>)]: 0x284, + [ReactDOM.renderToString(<>ʅ</>)]: 0x285, + [ReactDOM.renderToString(<>ʆ</>)]: 0x286, + [ReactDOM.renderToString(<>ʇ</>)]: 0x287, + [ReactDOM.renderToString(<>ʈ</>)]: 0x288, + [ReactDOM.renderToString(<>ʉ</>)]: 0x289, + [ReactDOM.renderToString(<>ʊ</>)]: 0x28a, + [ReactDOM.renderToString(<>ʋ</>)]: 0x28b, + [ReactDOM.renderToString(<>ʌ</>)]: 0x28c, + [ReactDOM.renderToString(<>ʍ</>)]: 0x28d, + [ReactDOM.renderToString(<>ʎ</>)]: 0x28e, + [ReactDOM.renderToString(<>ʏ</>)]: 0x28f, + [ReactDOM.renderToString(<>ʐ</>)]: 0x290, + [ReactDOM.renderToString(<>ʑ</>)]: 0x291, + [ReactDOM.renderToString(<>ʒ</>)]: 0x292, + [ReactDOM.renderToString(<>ʓ</>)]: 0x293, + [ReactDOM.renderToString(<>ʔ</>)]: 0x294, +}; + +export function test() { + for (let rawKey in elements) { + var key = rawKey; + if (rawKey.startsWith("&")) { + var txt = document.createElement("textarea"); + txt.innerHTML = rawKey; + key = txt.value; + } + + console.assert( + elements[rawKey] === key.codePointAt(0), + `${key} is not ${elements[rawKey]}` + ); + } + + return testDone(import.meta.url); +} diff --git a/test/snippets/jsx-spacing.js b/test/snippets/jsx-spacing.js new file mode 100644 index 000000000..9b9f28a33 --- /dev/null +++ b/test/snippets/jsx-spacing.js @@ -0,0 +1,29 @@ +"use strict"; +exports.__esModule = true; +exports.test = void 0; +var ReactDOM = require("react-dom/server"); +var ReturnDescriptionAsString = function (_a) { + var description = _a.description; + return description; +}; +function test() { + var _bun = ReactDOM.renderToString(<ReturnDescriptionAsString description="line1 +line2 trailing space + +line4 no trailing space 'single quote' \t\f\v\uF000 `template string` + +line6 no trailing space +line7 trailing newline that ${terminates} the string literal +"></ReturnDescriptionAsString>); + // convert HTML entities to unicode + var el = document.createElement("textarea"); + el.innerHTML = _bun; + var bun = el.value; + var esbuild = "line1\nline2 trailing space \n\nline4 no trailing space 'single quote' \\t\\f\\v\\uF000 `template string`\n\nline6 no trailing space\nline7 trailing newline that ${terminates} the string literal\n"; + console.assert(bun === esbuild, "strings did not match: " + JSON.stringify({ + received: bun, + expected: esbuild + }, null, 2)); + testDone(import.meta.url); +} +exports.test = test; diff --git a/test/snippets/jsx-spacing.jsx b/test/snippets/jsx-spacing.jsx new file mode 100644 index 000000000..b6d13f97a --- /dev/null +++ b/test/snippets/jsx-spacing.jsx @@ -0,0 +1,43 @@ +import * as ReactDOM from "react-dom/server"; + +const ReturnDescriptionAsString = ({ description }) => description; + +export function test() { + const _bun = ReactDOM.renderToString( + <ReturnDescriptionAsString + description="line1 +line2 trailing space + +line4 no trailing space 'single quote' \t\f\v\uF000 `template string` + +line6 no trailing space +line7 trailing newline that ${terminates} the string literal +" + ></ReturnDescriptionAsString> + ); + + // convert HTML entities to unicode + const el = document.createElement("textarea"); + el.innerHTML = _bun; + const bun = el.value; + + const esbuild = + "line1\nline2 trailing space \n\nline4 no trailing space 'single quote' \\t\\f\\v\\uF000 `template string`\n\nline6 no trailing space\nline7 trailing newline that ${terminates} the string literal\n"; + + const tsc = + "line1\nline2 trailing space \n\nline4 no trailing space 'single quote' \\t\\f\\v\\uF000 `template string`\n\nline6 no trailing space\nline7 trailing newline that ${terminates} the string literal\n"; + + console.assert( + bun === esbuild && bun === tsc, + `strings did not match: ${JSON.stringify( + { + received: bun, + expected: esbuild, + }, + null, + 2 + )}` + ); + + testDone(import.meta.url); +} diff --git a/test/snippets/jsx-top-level.tsx b/test/snippets/jsx-top-level.tsx new file mode 100644 index 000000000..2b49b5959 --- /dev/null +++ b/test/snippets/jsx-top-level.tsx @@ -0,0 +1,21 @@ +const isDropdown = true; +const iconName = ""; +const adjustedPadding = 5; + +const Icon = ({ name, size, color }) => { + return name; +}; + +const Foo = <Icon name="arrow-down" size="1.5em" color="currentColor" />; +const yoooo = [<Icon name="arrow-down" size="1.5em" color="currentColor" />]; +const iconProps = { + // This regression test is to ensure that the JSX value here does not print as an e_missing (nothing) + rightIcon: <Icon name="arrow-down" size="1.5em" color="currentColor" />, + paddingRight: adjustedPadding, +}; + +export function test() { + const foo = iconProps.rightIcon; + yoooo[0]; + return testDone(import.meta.url); +} diff --git a/test/snippets/latin1-chars-in-regexp.js b/test/snippets/latin1-chars-in-regexp.js new file mode 100644 index 000000000..e4d613f5e --- /dev/null +++ b/test/snippets/latin1-chars-in-regexp.js @@ -0,0 +1,70 @@ +// original code: +// var re_btou = new RegExp( +// [ +// "[\xC0-\xDF][\x80-\xBF]", +// "[\xE0-\xEF][\x80-\xBF]{2}", +// "[\xF0-\xF7][\x80-\xBF]{3}", +// ].join("|"), +// "g" +// ); + +export var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; +export var re_btou = new RegExp( + [ + "[\xC0-\xDF][\x80-\xBF]", + "[\xE0-\xEF][\x80-\xBF]{2}", + "[\xF0-\xF7][\x80-\xBF]{3}", + ].join("|"), + "g" +); + +const encoder = new TextEncoder(); +const realLines = [ + "[\xC0-\xDF][\x80-\xBF]", + "[\xE0-\xEF][\x80-\xBF]{2}", + "[\xF0-\xF7][\x80-\xBF]{3}", +]; +const real = realLines.map((input) => Array.from(encoder.encode(input))); + +const expected = [ + [91, 195, 128, 45, 195, 159, 93, 91, 194, 128, 45, 194, 191, 93], + [ + 91, 195, 160, 45, 195, 175, 93, 91, 194, 128, 45, 194, 191, 93, 123, 50, + 125, + ], + [ + 91, 195, 176, 45, 195, 183, 93, 91, 194, 128, 45, 194, 191, 93, 123, 51, + 125, + ], +]; + +const newlinePreserved = `\n`; + +export function test() { + if ( + !real.every((point, i) => point.every((val, j) => val === expected[i][j])) + ) { + throw new Error( + `test failed +${JSON.stringify({ expected, real }, null, 2)}` + ); + } + + if (newlinePreserved.length !== 1 || newlinePreserved.charCodeAt(0) !== 10) { + throw new Error("Newline was not preserved"); + } + + const decoder = new TextDecoder("utf8"); + if ( + !realLines.every( + (line, i) => decoder.decode(Uint8Array.from(expected[i])) === line + ) + ) { + throw new Error( + `test failed. Lines did not match. +${JSON.stringify({ expected, real }, null, 2)}` + ); + } + + testDone(import.meta.url); +} diff --git a/test/snippets/lodash-regexp.js b/test/snippets/lodash-regexp.js new file mode 100644 index 000000000..bc683e535 --- /dev/null +++ b/test/snippets/lodash-regexp.js @@ -0,0 +1,24 @@ +import { shuffle } from "lodash"; + +// Lodash uses a variety of uncommon syntax (such as unicode escapes in regexp) +// so running it is a broad test of the parser, lexer, and printer +export function test() { + const foo = [1, 2, 3, 4, 6]; + const bar = shuffle(foo); + console.assert(bar !== foo); + console.assert(bar.length === foo.length); + bar.sort(); + foo.sort(); + for (let i = 0; i < bar.length; i++) { + console.assert(bar[i] === foo[i], "expected " + i + " to be " + foo[i]); + console.assert(typeof bar[i] === "number"); + console.assert(typeof foo[i] === "number"); + } + + return testDone(import.meta.url); +} + +// export function test() { +// const regexp = RegExp("['\u2019]", "g"); +// return testDone(import.meta.url); +// } diff --git a/test/snippets/multiple-imports.js b/test/snippets/multiple-imports.js new file mode 100644 index 000000000..320d0105e --- /dev/null +++ b/test/snippets/multiple-imports.js @@ -0,0 +1,13 @@ +import React from "react"; +import React2 from "react"; + +const bacon = React; +const bacon2 = <>hello</>; + +export function test() { + console.assert(bacon === React); + console.assert(bacon === React2); + console.assert(typeof bacon2 !== "undefined"); + console.assert(React.isValidElement(bacon2)); + return testDone(import.meta.url); +} diff --git a/test/snippets/multiple-var.js b/test/snippets/multiple-var.js new file mode 100644 index 000000000..527634a00 --- /dev/null +++ b/test/snippets/multiple-var.js @@ -0,0 +1,11 @@ +var foo = true; + +globalThis.TRUE_BUT_WE_CANT_TREESHAKE_IT = true; +if (globalThis.TRUE_BUT_WE_CANT_TREESHAKE_IT) { + var { foo } = { foo: false }; +} + +export function test() { + console.assert(foo === false, "foo should be false"); + return testDone(import.meta.url); +} diff --git a/test/snippets/number-literal-bug.js b/test/snippets/number-literal-bug.js new file mode 100644 index 000000000..cb6990348 --- /dev/null +++ b/test/snippets/number-literal-bug.js @@ -0,0 +1,11 @@ +// test that we don't call functions on number literals +export function test() { + const precision = 10; + try { + parseFloat((0.0).toPrecision(precision) + "1"); + } catch (exception) { + throw new Error("Test Failed", exception); + } + + testDone(import.meta.url); +} diff --git a/test/snippets/optional-chain-with-function.js b/test/snippets/optional-chain-with-function.js new file mode 100644 index 000000000..82ad51d46 --- /dev/null +++ b/test/snippets/optional-chain-with-function.js @@ -0,0 +1,15 @@ +export function test() { + try { + const multipleSecondaryValues = undefined; + const ratings = ["123"]; + + var bar = multipleSecondaryValues?.map((value) => false); + bar = bar?.multipleSecondaryValues?.map((value) => false); + bar = bar?.bar?.multipleSecondaryValues?.map((value) => false); + bar = {}?.bar?.multipleSecondaryValues?.map((value) => false); + } catch (e) { + throw e; + } + + return testDone(import.meta.url); +} diff --git a/test/snippets/package-json-exports/_node_modules_copy/exact/im-exact.js b/test/snippets/package-json-exports/_node_modules_copy/exact/im-exact.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/exact/im-exact.js diff --git a/test/snippets/package-json-exports/_node_modules_copy/exact/package.json b/test/snippets/package-json-exports/_node_modules_copy/exact/package.json new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/exact/package.json diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/dir/file.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/dir/file.js new file mode 100644 index 000000000..26ab53d5b --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/dir/file.js @@ -0,0 +1 @@ +export const target = "browser"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/dir/foo.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/dir/foo.js new file mode 100644 index 000000000..e54d9d4d6 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/dir/foo.js @@ -0,0 +1 @@ +export const target = 'browser';
\ No newline at end of file diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/foo.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/foo.js new file mode 100644 index 000000000..e54d9d4d6 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/foo.js @@ -0,0 +1 @@ +export const target = 'browser';
\ No newline at end of file diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/index.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/index.js new file mode 100644 index 000000000..e54d9d4d6 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/browser/index.js @@ -0,0 +1 @@ +export const target = 'browser';
\ No newline at end of file diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/default/dir/file.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/default/dir/file.js new file mode 100644 index 000000000..826077c96 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/default/dir/file.js @@ -0,0 +1 @@ +export const target = "default"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/default/dir/foo.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/default/dir/foo.js new file mode 100644 index 000000000..826077c96 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/default/dir/foo.js @@ -0,0 +1 @@ +export const target = "default"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/default/foo.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/default/foo.js new file mode 100644 index 000000000..8fb5eac0c --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/default/foo.js @@ -0,0 +1 @@ +export const target = 'default'; diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/default/index.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/default/index.js new file mode 100644 index 000000000..826077c96 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/default/index.js @@ -0,0 +1 @@ +export const target = "default"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/node/dir/file.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/node/dir/file.js new file mode 100644 index 000000000..301a88090 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/node/dir/file.js @@ -0,0 +1 @@ +export const target = "node"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/node/dir/foo.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/node/dir/foo.js new file mode 100644 index 000000000..301a88090 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/node/dir/foo.js @@ -0,0 +1 @@ +export const target = "node"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/node/foo.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/node/foo.js new file mode 100644 index 000000000..b9504cdf9 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/node/foo.js @@ -0,0 +1 @@ +export const target = 'node';
\ No newline at end of file diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/node/index.js b/test/snippets/package-json-exports/_node_modules_copy/inexact/node/index.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/node/index.js diff --git a/test/snippets/package-json-exports/_node_modules_copy/inexact/package.json b/test/snippets/package-json-exports/_node_modules_copy/inexact/package.json new file mode 100644 index 000000000..1c9b5185d --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/inexact/package.json @@ -0,0 +1,20 @@ +{ + "name": "inexact", + "exports": { + ".": { + "node": "./node/index.js", + "browser": "./browser/index.js", + "default": "./default/index.js" + }, + "./foo": { + "node": "./node/foo.js", + "browser": "./browser/foo.js", + "default": "./default/foo.js" + }, + "./": { + "node": "./node/dir/", + "browser": "./browser/dir/", + "default": "./default/dir/" + } + } +} diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/dir/file.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/dir/file.js new file mode 100644 index 000000000..26ab53d5b --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/dir/file.js @@ -0,0 +1 @@ +export const target = "browser"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/dir/foo.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/dir/foo.js new file mode 100644 index 000000000..e54d9d4d6 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/dir/foo.js @@ -0,0 +1 @@ +export const target = 'browser';
\ No newline at end of file diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/foo.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/foo.js new file mode 100644 index 000000000..e54d9d4d6 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/foo.js @@ -0,0 +1 @@ +export const target = 'browser';
\ No newline at end of file diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/index.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/index.js new file mode 100644 index 000000000..e54d9d4d6 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/index.js @@ -0,0 +1 @@ +export const target = 'browser';
\ No newline at end of file diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/js-file.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/js-file.js new file mode 100644 index 000000000..ff519c58f --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/js-file.js @@ -0,0 +1 @@ +export const isJS = true; diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/js-file.ts b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/js-file.ts new file mode 100644 index 000000000..26ab53d5b --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/browser/js-file.ts @@ -0,0 +1 @@ +export const target = "browser"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/dir/file.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/dir/file.js new file mode 100644 index 000000000..826077c96 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/dir/file.js @@ -0,0 +1 @@ +export const target = "default"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/dir/foo.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/dir/foo.js new file mode 100644 index 000000000..826077c96 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/dir/foo.js @@ -0,0 +1 @@ +export const target = "default"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/foo.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/foo.js new file mode 100644 index 000000000..8fb5eac0c --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/foo.js @@ -0,0 +1 @@ +export const target = 'default'; diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/index.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/index.js new file mode 100644 index 000000000..826077c96 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/default/index.js @@ -0,0 +1 @@ +export const target = "default"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/dir/file.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/dir/file.js new file mode 100644 index 000000000..301a88090 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/dir/file.js @@ -0,0 +1 @@ +export const target = "node"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/dir/foo.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/dir/foo.js new file mode 100644 index 000000000..301a88090 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/dir/foo.js @@ -0,0 +1 @@ +export const target = "node"; diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/foo.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/foo.js new file mode 100644 index 000000000..b9504cdf9 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/foo.js @@ -0,0 +1 @@ +export const target = 'node';
\ No newline at end of file diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/index.js b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/index.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/node/index.js diff --git a/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/package.json b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/package.json new file mode 100644 index 000000000..baeb185d9 --- /dev/null +++ b/test/snippets/package-json-exports/_node_modules_copy/js-only-exports/package.json @@ -0,0 +1,10 @@ +{ + "name": "js-only-exports", + "exports": { + "./*": { + "node": "./node/*.js", + "browser": "./browser/*.js", + "default": "./default/*.js" + } + } +} diff --git a/test/snippets/package-json-exports/index.js b/test/snippets/package-json-exports/index.js new file mode 100644 index 000000000..d1946c53f --- /dev/null +++ b/test/snippets/package-json-exports/index.js @@ -0,0 +1,12 @@ +import * as InexactRoot from "inexact"; +import * as InexactFile from "inexact/file"; +import * as ExactFile from "inexact/foo"; +import * as JSFileExtensionOnly from "js-only-exports/js-file"; + +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); +} diff --git a/test/snippets/package-json-exports/package.json b/test/snippets/package-json-exports/package.json new file mode 100644 index 000000000..233a02208 --- /dev/null +++ b/test/snippets/package-json-exports/package.json @@ -0,0 +1,3 @@ +{ + "name": "package-json-exports" +} diff --git a/test/snippets/package-json-utf8.js b/test/snippets/package-json-utf8.js new file mode 100644 index 000000000..a51fbb886 --- /dev/null +++ b/test/snippets/package-json-utf8.js @@ -0,0 +1,6 @@ +import pkg from "./utf8-package-json.json"; + +export function test() { + console.assert(!!pkg.author); + return testDone(import.meta.url); +} diff --git a/test/snippets/package.json b/test/snippets/package.json new file mode 100644 index 000000000..07b349f86 --- /dev/null +++ b/test/snippets/package.json @@ -0,0 +1,13 @@ +{ + "name": "snippets", + "license": "MIT", + "dependencies": { + "@emotion/core": "^11.0.0", + "@emotion/react": "^11.4.1", + "lodash": "^4.17.21", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "redux": "^4.1.1", + "styled-components": "^5.3.1" + } +} diff --git a/test/snippets/public/index.html b/test/snippets/public/index.html new file mode 100644 index 000000000..225c98d52 --- /dev/null +++ b/test/snippets/public/index.html @@ -0,0 +1,91 @@ +<html> + <head> + <meta charset="utf-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <title>bun Test</title> + </head> + <body> + <script type="module"> + globalThis.console.assert = (condition, ...content) => { + if (!condition) { + throw new Error(content.join(" ")); + } + }; + globalThis.getModuleScriptSrc = async (name) => { + const response = await fetch(name, { + cache: "force-cache", + }); + + if (response.ok) { + return await response.text(); + } else { + throw new Error(`Failed to get module script ${name}`); + } + }; + + globalThis.runTest = async (name) => { + var Namespace = await import(name); + var testFunction = Namespace.test; + + if ( + !("test" in Namespace) && + "default" in Namespace && + typeof Namespace.default === "function" + ) { + Namespace = Namespace.default(); + testFunction = Namespace.test; + } + + if (!testFunction) { + throw new Error("No test function found in " + name); + } + + if (typeof testFunction !== "function") { + throw new Error( + `Expected (await import(\"${name}\"")) to have a test function.\nReceived: ${Object.keys( + Namespace + ).join(", ")} ` + ); + } + + if (globalThis.BUN_DEBUG_MODE) { + try { + return await testFunction(); + } catch (exception) { + console.error(exception); + debugger; + throw exception; + } + } else { + return await testFunction(); + } + }; + + if (globalThis.location.pathname.endsWith("-test")) { + const script = document.createElement("script"); + script.src = globalThis.location.pathname.substring( + 0, + location.pathname.length - "-test".length + ); + script.type = "module"; + document.body.appendChild(script); + + globalThis.testDone = (path) => alert(`test ${path} success`); + globalThis.testFail = (path) => alert(`!test ${path} fail`); + runTest( + globalThis.location.pathname.substring( + 0, + location.pathname.length - "-test".length + ) + ).then( + () => {}, + (err) => { + console.error(err); + alert(err.toString()); + } + ); + } + </script> + </body> +</html> diff --git a/test/snippets/react-context-value-func.tsx b/test/snippets/react-context-value-func.tsx new file mode 100644 index 000000000..5f38a5d1c --- /dev/null +++ b/test/snippets/react-context-value-func.tsx @@ -0,0 +1,34 @@ +import React from "react"; + +const Context = React.createContext({}); + +const ContextProvider = ({ children }) => { + const [cb, setCB] = React.useState(function () {}); + const foo = true; + + return <Context.Provider value={cb}>{children(foo)}</Context.Provider>; +}; + +const ContextValue = ({}) => ( + <Context.Consumer> + {(foo) => { + if (foo) { + return <div>Worked!</div>; + } + + throw `Value "${foo}"" should be true`; + }} + </Context.Consumer> +); + +const TestComponent = () => ( + <ContextProvider> + <ContextValue /> + </ContextProvider> +); + +export function test() { + const foo = <TestComponent />; + + return testDone(import.meta.url); +} diff --git a/test/snippets/segfault.js b/test/snippets/segfault.js new file mode 100644 index 000000000..59b030b4d --- /dev/null +++ b/test/snippets/segfault.js @@ -0,0 +1 @@ +Bun.unsafe.segfault(); diff --git a/test/snippets/spread_with_key.tsx b/test/snippets/spread_with_key.tsx new file mode 100644 index 000000000..9c26ea5ba --- /dev/null +++ b/test/snippets/spread_with_key.tsx @@ -0,0 +1,20 @@ +import React from "react"; + +export function SpreadWithTheKey({ className }: Props) { + const rest = {}; + return ( + <div + className={className} + key="spread-with-the-key" + {...rest} + onClick={() => console.log("click")} + > + Rendered component containing warning + </div> + ); +} + +export function test() { + console.assert(React.isValidElement(<SpreadWithTheKey className="foo" />)); + return testDone(import.meta.url); +} diff --git a/test/snippets/string-escapes.js b/test/snippets/string-escapes.js new file mode 100644 index 000000000..436140939 --- /dev/null +++ b/test/snippets/string-escapes.js @@ -0,0 +1,129 @@ +// To update this, copy paste the following into the console of the browser +// ------------------------------------------------------------ +var tab = "\t"; +var γ· = "wow"; +var f = ""; +var f = "\u2087"; +var obj = { + "\r\n": "\r\n", + "\n": "\n", + "\t": "\t", + "\f": "\f", + "\v": "\v", + "\u2028": "\u2028", + "\u2029": "\u2029", + "\0": "\0Β null byte", + "π": "π", + "π": "π", + "π΅π½ββοΈ": "π΅π½ββοΈ", + "γ‘": "γ‘", + "βΊ": "βΊ", + γ·: "γ·", + "π": "π", + f: f, + "βΉ": "βΉ", + "β»": "β»", + children: 123, +}; + +const encoder = new TextEncoder(); +const encodedObj = encoder.encode(JSON.stringify(obj)); +// ------------------------------------------------------------ +const correctEncodedObj = [ + 123, 34, 92, 114, 92, 110, 34, 58, 34, 92, 114, 92, 110, 34, 44, 34, 92, 110, + 34, 58, 34, 92, 110, 34, 44, 34, 92, 116, 34, 58, 34, 92, 116, 34, 44, 34, 92, + 102, 34, 58, 34, 92, 102, 34, 44, 34, 92, 117, 48, 48, 48, 98, 34, 58, 34, 92, + 117, 48, 48, 48, 98, 34, 44, 34, 226, 128, 168, 34, 58, 34, 226, 128, 168, 34, + 44, 34, 226, 128, 169, 34, 58, 34, 226, 128, 169, 34, 44, 34, 92, 117, 48, 48, + 48, 48, 34, 58, 34, 92, 117, 48, 48, 48, 48, 194, 160, 110, 117, 108, 108, 32, + 98, 121, 116, 101, 34, 44, 34, 240, 159, 152, 138, 34, 58, 34, 240, 159, 152, + 138, 34, 44, 34, 240, 159, 152, 131, 34, 58, 34, 240, 159, 152, 131, 34, 44, + 34, 240, 159, 149, 181, 240, 159, 143, 189, 226, 128, 141, 226, 153, 130, 239, + 184, 143, 34, 58, 34, 240, 159, 149, 181, 240, 159, 143, 189, 226, 128, 141, + 226, 153, 130, 239, 184, 143, 34, 44, 34, 227, 139, 161, 34, 58, 34, 227, 139, + 161, 34, 44, 34, 226, 152, 186, 34, 58, 34, 226, 152, 186, 34, 44, 34, 227, + 130, 183, 34, 58, 34, 227, 130, 183, 34, 44, 34, 240, 159, 145, 139, 34, 58, + 34, 240, 159, 145, 139, 34, 44, 34, 102, 34, 58, 34, 226, 130, 135, 34, 44, + 34, 226, 152, 185, 34, 58, 34, 226, 152, 185, 34, 44, 34, 226, 152, 187, 34, + 58, 34, 226, 152, 187, 34, 44, 34, 99, 104, 105, 108, 100, 114, 101, 110, 34, + 58, 49, 50, 51, 125, +]; + +export const jsxVariants = ( + <> + "\r\n": "\r\n", "\n": "\n", "\t": "\t", "\f": "\f", "\v": "\v", "\u2028": + "\u2028", "\u2029": "\u2029", "π": "π", "π": "π", "π΅π½ββοΈ": "π΅π½ββοΈ", "γ‘": + "γ‘", "βΊ": "βΊ", γ·: "γ·", "π": "π", f: f, "βΉ": "βΉ", "β»": "β»", children: + 123, + <div data="\r\n" /> + <div data="\n" /> + <div data="\t" /> + <div data="\f" /> + <div data="\v" /> + <div data="\u2028" /> + <div data="\u2029" /> + <div data="π" /> + <div data="π" /> + <div data="π΅π½ββοΈ" /> + <div data="γ‘" /> + <div data="βΊ" /> + <div data="γ·" /> + <div data="π" /> + <div data="βΉ" /> + <div data="β»" /> + <div data="123" /> + <div key="\r\n" /> + <div>\r\n</div> + <div key="\n" /> + <div>\n</div> + <div key="\t" /> + <div>\t</div> + <div key="\f" /> + <div>\f</div> + <div key="\v" /> + <div>\v</div> + <div key="\u2028" /> + <div>\u2028</div> + <div key="\u2029" /> + <div>\u2029</div> + <div key="π" /> + <div>π</div> + <div key="π" /> + <div>π</div> + <div key="π΅π½ββοΈ" /> + <div>π΅π½ββοΈ</div> + <div key="γ‘" /> + <div>γ‘</div> + <div key="βΊ" /> + <div>βΊ</div> + <div key="γ·" /> + <div>γ·</div> + <div key="π" /> + <div>π</div> + <div key="βΉ" /> + <div>βΉ</div> + <div key="β»" /> + <div>β»</div> + <div key="123" /> + <div>123</div> + </> +); + +const foo = () => {}; +const Bar = foo("a", { + children: 123, +}); + +const carriage = obj["\r\n"]; +const newline = obj["\n"]; + +export { obj }; + +export function test() { + console.assert(carriage === "\r\n"); + console.assert(newline === "\n"); + console.assert(tab === "\t"); + console.assert(correctEncodedObj.length === encodedObj.length); + console.assert(correctEncodedObj.every((v, i) => v === encodedObj[i])); + return testDone(import.meta.url); +} diff --git a/test/snippets/styledcomponents-output.js b/test/snippets/styledcomponents-output.js new file mode 100644 index 000000000..a79b5e24d --- /dev/null +++ b/test/snippets/styledcomponents-output.js @@ -0,0 +1,63 @@ +import styled from "styled-components"; +import React from "react"; +import ReactDOM from "react-dom"; + +const ErrorScreenRoot = styled.div` + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background: #fff; + text-align: center; + background-color: #0b2988; + color: #fff; + font-family: "Muli", -apple-system, BlinkMacSystemFont, Helvetica, Arial, + sans-serif; + line-height: 1.5em; + + & > p { + margin-top: 10px; + } + + & a { + color: inherit; + } +`; + +export function test() { + if (typeof window !== "undefined") { + const reactEl = document.createElement("div"); + document.body.appendChild(reactEl); + ReactDOM.render( + <ErrorScreenRoot id="error-el"> + The react child should have this text + </ErrorScreenRoot>, + reactEl + ); + + const style = document.querySelector("style[data-styled]"); + console.assert(style, "style tag should exist"); + console.assert( + style.textContent.split("").every((a) => a.codePointAt(0) < 128), + "style tag should not contain invalid unicode codepoints" + ); + console.assert( + document.querySelector("#error-el").textContent === + "The react child should have this text" + ); + + ReactDOM.unmountComponentAtNode(reactEl); + reactEl.remove(); + style.remove(); + return testDone(import.meta.url); + } + + return testDone(import.meta.url); +} diff --git a/test/snippets/template-literal.js b/test/snippets/template-literal.js new file mode 100644 index 000000000..ff4e08a4d --- /dev/null +++ b/test/snippets/template-literal.js @@ -0,0 +1,51 @@ +const css = (templ) => templ.toString(); + +const fooNoBracesUTF8 = css` + before + /* */ + after +`; + +const fooNoBracesUT16 = css` + before + π + after +`; +const fooUTF8 = css` + before + ${true} + after + +`; + +const fooUTF16 = css` + before + π ${true} + after + +`; + +const templateLiteralWhichDefinesAFunction = ((...args) => + args[args.length - 1]().toString())` + before + π ${() => true} + after + +`; + +export function test() { + for (let foo of [fooNoBracesUT16, fooNoBracesUTF8, fooUTF16, fooUTF8]) { + console.assert( + foo.includes("before"), + `Expected ${foo} to include "before"` + ); + console.assert(foo.includes("after"), `Expected ${foo} to include "after"`); + } + + console.assert( + templateLiteralWhichDefinesAFunction.includes("true"), + "Expected fooFunction to include 'true'" + ); + + return testDone(import.meta.url); +} diff --git a/test/snippets/ts-fallback-rewrite-works.ts b/test/snippets/ts-fallback-rewrite-works.ts new file mode 100644 index 000000000..8e6dabcdb --- /dev/null +++ b/test/snippets/ts-fallback-rewrite-works.ts @@ -0,0 +1,5 @@ +// This looks like it does nothing +// But if you import /ts-fallback-rewrite-works.js, it should resolve the import to /ts-fallback-rewrite-works.ts +export function test() { + return testDone(import.meta.url); +} diff --git a/test/snippets/tsx-fallback-rewrite-works.tsx b/test/snippets/tsx-fallback-rewrite-works.tsx new file mode 100644 index 000000000..b18619914 --- /dev/null +++ b/test/snippets/tsx-fallback-rewrite-works.tsx @@ -0,0 +1,5 @@ +// This looks like it does nothing +// But if you import /tsx-fallback-rewrite-works.js, it should resolve the import to /tsx-fallback-rewrite-works.tsx +export function test() { + return testDone(import.meta.url); +} diff --git a/test/snippets/type-only-imports.ts b/test/snippets/type-only-imports.ts new file mode 100644 index 000000000..447f86793 --- /dev/null +++ b/test/snippets/type-only-imports.ts @@ -0,0 +1,12 @@ +import type Bacon from "tree"; +import type { SilentSymbolCollisionsAreOkayInTypeScript } from "./app"; + +export const baconator: Bacon = true; +export const SilentSymbolCollisionsAreOkayInTypeScript: SilentSymbolCollisionsAreOkayInTypeScript = + true; + +export function test() { + console.assert(SilentSymbolCollisionsAreOkayInTypeScript); + console.assert(baconator); + return testDone(import.meta.url); +} diff --git a/test/snippets/unicode-identifiers.js b/test/snippets/unicode-identifiers.js new file mode 100644 index 000000000..5b602f49b --- /dev/null +++ b/test/snippets/unicode-identifiers.js @@ -0,0 +1,15 @@ +var Ξ΅ = 1e-6, + Ξ΅2 = Ξ΅ * Ξ΅, + Ο = Math.PI, + Ο = 2 * Ο, + ΟΞ΅ = Ο - Ξ΅, + halfΟ = Ο / 2, + d3_radians = Ο / 180, + d3_degrees = 180 / Ο; + +export { d3_radians }; + +export function test() { + console.assert(Ξ΅ === 1e-6); + return testDone(import.meta.url); +} diff --git a/test/snippets/utf8-package-json.json b/test/snippets/utf8-package-json.json new file mode 100644 index 000000000..aae7ce7b2 --- /dev/null +++ b/test/snippets/utf8-package-json.json @@ -0,0 +1,3 @@ +{ + "author": "Arnuad BarrΓ© (https://github.com/ArnaudBarre)" +} diff --git a/test/snippets/void-shouldnt-delete-call-expressions.js b/test/snippets/void-shouldnt-delete-call-expressions.js new file mode 100644 index 000000000..380fb591b --- /dev/null +++ b/test/snippets/void-shouldnt-delete-call-expressions.js @@ -0,0 +1,14 @@ +var was_called = false; +function thisShouldBeCalled() { + was_called = true; +} + +void thisShouldBeCalled(); + +export function test() { + if (!was_called) { + throw new Error("Expected thisShouldBeCalled to be called"); + } + + return testDone(import.meta.url); +} diff --git a/test/snippets/zero.js b/test/snippets/zero.js new file mode 100644 index 000000000..38f521ff1 --- /dev/null +++ b/test/snippets/zero.js @@ -0,0 +1 @@ +export const zero = "\0"; |