Add snapshots for latin1 regexp, add more codepoints to string escapes

This commit is contained in:
Jarred Sumner
2021-10-25 06:17:16 -07:00
parent adb6be05d1
commit eae7051111
13 changed files with 2056 additions and 23 deletions

View File

@@ -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},

View File

@@ -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},

View File

@@ -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);
}

View File

@@ -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
};

View File

@@ -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
};

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -1,32 +1,426 @@
import {
__HMRModule as HMR
} from "http://localhost:8080/__runtime.js";
import {
__HMRClient as Bun
} from "http://localhost:8080/__runtime.js";
Bun.activate(true);
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";
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({

View File

@@ -1,32 +1,426 @@
import {
__HMRModule as HMR
} from "http://localhost:8080/__runtime.js";
import {
__HMRClient as Bun
} from "http://localhost:8080/__runtime.js";
Bun.activate(false);
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";
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({

View File

@@ -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);
}

View File

@@ -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.\n\nExpected:\n ${expected.join(
" "
)}\Received:\n ${real.join(" ")}`
`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)}`
);
}

View File

@@ -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(

View File

@@ -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);
}