aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--integration/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.debug.js3
-rw-r--r--integration/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.debug.js3
-rw-r--r--integration/snapshots/latin1-chars-in-regexp.debug.js68
-rw-r--r--integration/snapshots/latin1-chars-in-regexp.hmr.debug.js90
-rw-r--r--integration/snapshots/latin1-chars-in-regexp.hmr.js90
-rw-r--r--integration/snapshots/latin1-chars-in-regexp.js68
-rw-r--r--integration/snapshots/string-escapes.debug.js397
-rw-r--r--integration/snapshots/string-escapes.hmr.debug.js402
-rw-r--r--integration/snapshots/string-escapes.hmr.js402
-rw-r--r--integration/snapshots/string-escapes.js397
-rw-r--r--integration/snippets/latin1-chars-in-regexp.js47
-rw-r--r--integration/snippets/public/index.html21
-rw-r--r--integration/snippets/string-escapes.js87
13 files changed, 2054 insertions, 21 deletions
diff --git a/integration/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.debug.js b/integration/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.debug.js
index d9f64c5b9..53bb66b5e 100644
--- a/integration/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.debug.js
+++ b/integration/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.debug.js
@@ -24,9 +24,10 @@ export default __cJS2eSM(function(module, exports) {
require(_login_b977_0);
require(_login_b977_1);
Object.defineProperty(module.exports,"login",{get: () => _login, enumerable: true, configurable: true});
- var test = function test() {
+ function test() {
return testDone(import.meta.url);
};
+var test = test;
Object.defineProperty(module.exports,"test",{get: () => test, enumerable: true, configurable: true});
let foo, bar;
Object.defineProperties(module.exports,{'foo': {get: () => foo, set: ($_newValue) => {foo = $_newValue;}, enumerable: true, configurable: true},
diff --git a/integration/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.debug.js b/integration/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.debug.js
index d8e3ccdd1..fa25e2df8 100644
--- a/integration/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.debug.js
+++ b/integration/snapshots/cjs-transform-shouldnt-have-static-imports-in-cjs-function.hmr.debug.js
@@ -24,9 +24,10 @@ export default __cJS2eSM(function(module, exports) {
require(_login_b977_0);
require(_login_b977_1);
Object.defineProperty(module.exports,"login",{get: () => _login, enumerable: true, configurable: true});
- var test = function test() {
+ function test() {
return testDone(import.meta.url);
};
+var test = test;
Object.defineProperty(module.exports,"test",{get: () => test, enumerable: true, configurable: true});
var foo, bar;
Object.defineProperties(module.exports,{'foo': {get: () => foo, set: ($_newValue) => {foo = $_newValue;}, enumerable: true, configurable: true},
diff --git a/integration/snapshots/latin1-chars-in-regexp.debug.js b/integration/snapshots/latin1-chars-in-regexp.debug.js
new file mode 100644
index 000000000..42217319b
--- /dev/null
+++ b/integration/snapshots/latin1-chars-in-regexp.debug.js
@@ -0,0 +1,68 @@
+var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
+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`;
+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/integration/snapshots/latin1-chars-in-regexp.hmr.debug.js b/integration/snapshots/latin1-chars-in-regexp.hmr.debug.js
new file mode 100644
index 000000000..f0e79c488
--- /dev/null
+++ b/integration/snapshots/latin1-chars-in-regexp.hmr.debug.js
@@ -0,0 +1,90 @@
+import {
+__HMRModule as HMR
+} from "http://localhost:8080/__runtime.js";
+import {
+__HMRClient as Bun
+} from "http://localhost:8080/__runtime.js";
+Bun.activate(true);
+
+var hmr = new HMR(1430071586, "latin1-chars-in-regexp.js"), exports = hmr.exports;
+(hmr._load = function() {
+ var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
+ 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({
+ test: () => test
+ });
+})();
+var $$hmr_test = hmr.exports.test;
+hmr._update = function(exports) {
+ $$hmr_test = exports.test;
+};
+
+export {
+ $$hmr_test as test
+};
diff --git a/integration/snapshots/latin1-chars-in-regexp.hmr.js b/integration/snapshots/latin1-chars-in-regexp.hmr.js
new file mode 100644
index 000000000..03b9344e4
--- /dev/null
+++ b/integration/snapshots/latin1-chars-in-regexp.hmr.js
@@ -0,0 +1,90 @@
+import {
+__HMRModule as HMR
+} from "http://localhost:8080/__runtime.js";
+import {
+__HMRClient as Bun
+} from "http://localhost:8080/__runtime.js";
+Bun.activate(false);
+
+var hmr = new HMR(1430071586, "latin1-chars-in-regexp.js"), exports = hmr.exports;
+(hmr._load = function() {
+ var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
+ 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({
+ test: () => test
+ });
+})();
+var $$hmr_test = hmr.exports.test;
+hmr._update = function(exports) {
+ $$hmr_test = exports.test;
+};
+
+export {
+ $$hmr_test as test
+};
diff --git a/integration/snapshots/latin1-chars-in-regexp.js b/integration/snapshots/latin1-chars-in-regexp.js
new file mode 100644
index 000000000..42217319b
--- /dev/null
+++ b/integration/snapshots/latin1-chars-in-regexp.js
@@ -0,0 +1,68 @@
+var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
+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`;
+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/integration/snapshots/string-escapes.debug.js b/integration/snapshots/string-escapes.debug.js
index 05d9c4ce2..890d8355d 100644
--- a/integration/snapshots/string-escapes.debug.js
+++ b/integration/snapshots/string-escapes.debug.js
@@ -1,22 +1,417 @@
+import {
+__require as require
+} from "http://localhost:8080/__runtime.js";
+import * as JSX from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js";
+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 シ = "wow";
var f = "";
+var f = "₇";
var obj = {
"\r\n": "\r\n",
"\n": "\n",
"\t": "\t",
+ "\f": "\f",
+ "\v": "\v",
"\u2028": "\u2028",
"\u2029": "\u2029",
"😊": "😊",
"😃": "😃",
+ "🕵🏽‍♂️": "🕵🏽‍♂️",
"㋡": "㋡",
"☺": "☺",
シ: "シ",
+ "👋": "👋",
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,
+ 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
+];
+const jsxVariants = jsx(JSXFrag, {
+ children: [
+ '"\\r\\n": "\\r\\n", "\\n": "\\n", "\\t": "\\t", "\\f": "\\f", "\\v": "\\v", "\\u2028": "\\u2028", "\\u2029": "\\u2029", "😊": "😊", "😃": "😃", "🕵🏽‍♂️": "🕵🏽‍♂️", "㋡": "㋡", "☺": "☺", シ: "シ", "👋": "👋", f: f, "☹": "☹", "☻": "☻", 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: "😊"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "😃"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "🕵🏽‍♂️"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "㋡"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☺"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "シ"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "👋"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☹"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☻"
+ }, 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", {}, "😊", false, undefined, this),
+ jsx("div", {
+ children: "😊"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "😃", false, undefined, this),
+ jsx("div", {
+ children: "😃"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "🕵🏽‍♂️", false, undefined, this),
+ jsx("div", {
+ children: "🕵🏽‍♂️"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "㋡", false, undefined, this),
+ jsx("div", {
+ children: "㋡"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☺", false, undefined, this),
+ jsx("div", {
+ children: "☺"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "シ", false, undefined, this),
+ jsx("div", {
+ children: "シ"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "👋", false, undefined, this),
+ jsx("div", {
+ children: "👋"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☹", false, undefined, this),
+ jsx("div", {
+ children: "☹"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☻", false, undefined, this),
+ jsx("div", {
+ children: "☻"
+ }, 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", {
@@ -30,5 +425,7 @@ 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/integration/snapshots/string-escapes.hmr.debug.js b/integration/snapshots/string-escapes.hmr.debug.js
index bc866d834..979c5da7e 100644
--- a/integration/snapshots/string-escapes.hmr.debug.js
+++ b/integration/snapshots/string-escapes.hmr.debug.js
@@ -1,32 +1,426 @@
import {
-__HMRModule as HMR
+__HMRClient as Bun
} from "http://localhost:8080/__runtime.js";
import {
-__HMRClient as Bun
+__require as require
} from "http://localhost:8080/__runtime.js";
-Bun.activate(true);
+import {
+__HMRModule as HMR
+} from "http://localhost:8080/__runtime.js";
+import * as JSX from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js";
+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;
+Bun.activate(true);
var hmr = new HMR(2482749838, "string-escapes.js"), exports = hmr.exports;
(hmr._load = function() {
var tab = "\t";
var シ = "wow";
var f = "";
+ var f = "₇";
var obj = {
"\r\n": "\r\n",
"\n": "\n",
"\t": "\t",
+ "\f": "\f",
+ "\v": "\v",
"\u2028": "\u2028",
"\u2029": "\u2029",
"😊": "😊",
"😃": "😃",
+ "🕵🏽‍♂️": "🕵🏽‍♂️",
"㋡": "㋡",
"☺": "☺",
シ: "シ",
+ "👋": "👋",
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,
+ 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
+ ];
+ const jsxVariants = jsx(JSXFrag, {
+ children: [
+ '"\\r\\n": "\\r\\n", "\\n": "\\n", "\\t": "\\t", "\\f": "\\f", "\\v": "\\v", "\\u2028": "\\u2028", "\\u2029": "\\u2029", "😊": "😊", "😃": "😃", "🕵🏽‍♂️": "🕵🏽‍♂️", "㋡": "㋡", "☺": "☺", シ: "シ", "👋": "👋", f: f, "☹": "☹", "☻": "☻", 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: "😊"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "😃"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "🕵🏽‍♂️"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "㋡"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☺"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "シ"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "👋"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☹"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☻"
+ }, 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", {}, "😊", false, undefined, this),
+ jsx("div", {
+ children: "😊"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "😃", false, undefined, this),
+ jsx("div", {
+ children: "😃"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "🕵🏽‍♂️", false, undefined, this),
+ jsx("div", {
+ children: "🕵🏽‍♂️"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "㋡", false, undefined, this),
+ jsx("div", {
+ children: "㋡"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☺", false, undefined, this),
+ jsx("div", {
+ children: "☺"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "シ", false, undefined, this),
+ jsx("div", {
+ children: "シ"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "👋", false, undefined, this),
+ jsx("div", {
+ children: "👋"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☹", false, undefined, this),
+ jsx("div", {
+ children: "☹"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☻", false, undefined, this),
+ jsx("div", {
+ children: "☻"
+ }, 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", {
@@ -38,6 +432,8 @@ var hmr = new HMR(2482749838, "string-escapes.js"), exports = hmr.exports;
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({
diff --git a/integration/snapshots/string-escapes.hmr.js b/integration/snapshots/string-escapes.hmr.js
index 9231cb6cf..ef03d89e1 100644
--- a/integration/snapshots/string-escapes.hmr.js
+++ b/integration/snapshots/string-escapes.hmr.js
@@ -1,32 +1,426 @@
import {
-__HMRModule as HMR
+__HMRClient as Bun
} from "http://localhost:8080/__runtime.js";
import {
-__HMRClient as Bun
+__require as require
} from "http://localhost:8080/__runtime.js";
-Bun.activate(false);
+import {
+__HMRModule as HMR
+} from "http://localhost:8080/__runtime.js";
+import * as JSX from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js";
+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;
+Bun.activate(false);
var hmr = new HMR(2482749838, "string-escapes.js"), exports = hmr.exports;
(hmr._load = function() {
var tab = "\t";
var シ = "wow";
var f = "";
+ var f = "₇";
var obj = {
"\r\n": "\r\n",
"\n": "\n",
"\t": "\t",
+ "\f": "\f",
+ "\v": "\v",
"\u2028": "\u2028",
"\u2029": "\u2029",
"😊": "😊",
"😃": "😃",
+ "🕵🏽‍♂️": "🕵🏽‍♂️",
"㋡": "㋡",
"☺": "☺",
シ: "シ",
+ "👋": "👋",
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,
+ 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
+ ];
+ const jsxVariants = jsx(JSXFrag, {
+ children: [
+ '"\\r\\n": "\\r\\n", "\\n": "\\n", "\\t": "\\t", "\\f": "\\f", "\\v": "\\v", "\\u2028": "\\u2028", "\\u2029": "\\u2029", "😊": "😊", "😃": "😃", "🕵🏽‍♂️": "🕵🏽‍♂️", "㋡": "㋡", "☺": "☺", シ: "シ", "👋": "👋", f: f, "☹": "☹", "☻": "☻", 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: "😊"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "😃"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "🕵🏽‍♂️"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "㋡"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☺"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "シ"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "👋"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☹"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☻"
+ }, 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", {}, "😊", false, undefined, this),
+ jsx("div", {
+ children: "😊"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "😃", false, undefined, this),
+ jsx("div", {
+ children: "😃"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "🕵🏽‍♂️", false, undefined, this),
+ jsx("div", {
+ children: "🕵🏽‍♂️"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "㋡", false, undefined, this),
+ jsx("div", {
+ children: "㋡"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☺", false, undefined, this),
+ jsx("div", {
+ children: "☺"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "シ", false, undefined, this),
+ jsx("div", {
+ children: "シ"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "👋", false, undefined, this),
+ jsx("div", {
+ children: "👋"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☹", false, undefined, this),
+ jsx("div", {
+ children: "☹"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☻", false, undefined, this),
+ jsx("div", {
+ children: "☻"
+ }, 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", {
@@ -38,6 +432,8 @@ var hmr = new HMR(2482749838, "string-escapes.js"), exports = hmr.exports;
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({
diff --git a/integration/snapshots/string-escapes.js b/integration/snapshots/string-escapes.js
index 05d9c4ce2..890d8355d 100644
--- a/integration/snapshots/string-escapes.js
+++ b/integration/snapshots/string-escapes.js
@@ -1,22 +1,417 @@
+import {
+__require as require
+} from "http://localhost:8080/__runtime.js";
+import * as JSX from "http://localhost:8080/node_modules/react/jsx-dev-runtime.js";
+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 シ = "wow";
var f = "";
+var f = "₇";
var obj = {
"\r\n": "\r\n",
"\n": "\n",
"\t": "\t",
+ "\f": "\f",
+ "\v": "\v",
"\u2028": "\u2028",
"\u2029": "\u2029",
"😊": "😊",
"😃": "😃",
+ "🕵🏽‍♂️": "🕵🏽‍♂️",
"㋡": "㋡",
"☺": "☺",
シ: "シ",
+ "👋": "👋",
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,
+ 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
+];
+const jsxVariants = jsx(JSXFrag, {
+ children: [
+ '"\\r\\n": "\\r\\n", "\\n": "\\n", "\\t": "\\t", "\\f": "\\f", "\\v": "\\v", "\\u2028": "\\u2028", "\\u2029": "\\u2029", "😊": "😊", "😃": "😃", "🕵🏽‍♂️": "🕵🏽‍♂️", "㋡": "㋡", "☺": "☺", シ: "シ", "👋": "👋", f: f, "☹": "☹", "☻": "☻", 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: "😊"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "😃"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "🕵🏽‍♂️"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "㋡"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☺"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "シ"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "👋"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☹"
+ }, undefined, false, undefined, this),
+ jsx("div", {
+ data: "☻"
+ }, 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", {}, "😊", false, undefined, this),
+ jsx("div", {
+ children: "😊"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "😃", false, undefined, this),
+ jsx("div", {
+ children: "😃"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "🕵🏽‍♂️", false, undefined, this),
+ jsx("div", {
+ children: "🕵🏽‍♂️"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "㋡", false, undefined, this),
+ jsx("div", {
+ children: "㋡"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☺", false, undefined, this),
+ jsx("div", {
+ children: "☺"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "シ", false, undefined, this),
+ jsx("div", {
+ children: "シ"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "👋", false, undefined, this),
+ jsx("div", {
+ children: "👋"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☹", false, undefined, this),
+ jsx("div", {
+ children: "☹"
+ }, undefined, false, undefined, this),
+ jsx("div", {}, "☻", false, undefined, this),
+ jsx("div", {
+ children: "☻"
+ }, 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", {
@@ -30,5 +425,7 @@ 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/integration/snippets/latin1-chars-in-regexp.js b/integration/snippets/latin1-chars-in-regexp.js
index 34a6c4a2a..9695b9362 100644
--- a/integration/snippets/latin1-chars-in-regexp.js
+++ b/integration/snippets/latin1-chars-in-regexp.js
@@ -19,26 +19,51 @@ var re_btou = new RegExp(
"g"
);
-const real = [
+const encoder = new TextEncoder();
+const realLines = [
"[\xC0-\xDF][\x80-\xBF]",
"[\xE0-\xEF][\x80-\xBF]{2}",
"[\xF0-\xF7][\x80-\xBF]{3}",
-]
- .flatMap((a) => a.split(""))
- .map((a) => a.codePointAt(0));
+];
+const real = realLines.map((input) => Array.from(encoder.encode(input)));
const expected = [
- 91, 192, 45, 223, 93, 91, 128, 45, 191, 93, 91, 224, 45, 239, 93, 91, 128, 45,
- 191, 93, 123, 50, 125, 91, 240, 45, 247, 93, 91, 128, 45, 191, 93, 123, 51,
- 125,
+ [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 === expected[i])) {
+ 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.\n\nExpected:\n ${expected.join(
- " "
- )}\Received:\n ${real.join(" ")}`
+ `test failed. Lines did not match.
+${JSON.stringify({ expected, real }, null, 2)}`
);
}
diff --git a/integration/snippets/public/index.html b/integration/snippets/public/index.html
index 2c3804a04..34e18a07a 100644
--- a/integration/snippets/public/index.html
+++ b/integration/snippets/public/index.html
@@ -10,7 +10,6 @@
globalThis.console.assert = (condition, ...content) => {
if (!condition) {
throw new Error(content.join(" "));
-
}
};
globalThis.getModuleScriptSrc = async (name) => {
@@ -50,10 +49,28 @@
);
}
- return await testFunction();
+ 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(
diff --git a/integration/snippets/string-escapes.js b/integration/snippets/string-escapes.js
index fd821f892..8d4eef725 100644
--- a/integration/snippets/string-escapes.js
+++ b/integration/snippets/string-escapes.js
@@ -1,3 +1,5 @@
+// To update this, copy paste the following into the console of the browser
+// ------------------------------------------------------------
var tab = "\t";
var シ = "wow";
var f = "";
@@ -16,11 +18,94 @@ var obj = {
"㋡": "㋡",
"☺": "☺",
シ: "シ",
+ "👋": "👋",
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, 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,
+];
+
+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,
@@ -35,5 +120,7 @@ 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);
}