shell.js (81096B)
1 // GENERATED, DO NOT EDIT 2 // file: assertRelativeDateMs.js 3 // Copyright (C) 2015 the V8 project authors. All rights reserved. 4 // This code is governed by the BSD license found in the LICENSE file. 5 /*--- 6 description: | 7 Verify that the given date object's Number representation describes the 8 correct number of milliseconds since the Unix epoch relative to the local 9 time zone (as interpreted at the specified date). 10 defines: [assertRelativeDateMs] 11 ---*/ 12 13 /** 14 * @param {Date} date 15 * @param {Number} expectedMs 16 */ 17 function assertRelativeDateMs(date, expectedMs) { 18 var actualMs = date.valueOf(); 19 var localOffset = date.getTimezoneOffset() * 60000; 20 21 if (actualMs - localOffset !== expectedMs) { 22 throw new Test262Error( 23 'Expected ' + date + ' to be ' + expectedMs + 24 ' milliseconds from the Unix epoch' 25 ); 26 } 27 } 28 29 // file: asyncHelpers.js 30 // Copyright (C) 2022 Igalia, S.L. All rights reserved. 31 // This code is governed by the BSD license found in the LICENSE file. 32 /*--- 33 description: | 34 A collection of assertion and wrapper functions for testing asynchronous built-ins. 35 defines: [asyncTest, assert.throwsAsync] 36 ---*/ 37 38 /** 39 * Defines the **sole** asynchronous test of a file. 40 * @see {@link ../docs/rfcs/async-helpers.md} for background. 41 * 42 * @param {Function} testFunc a callback whose returned promise indicates test results 43 * (fulfillment for success, rejection for failure) 44 * @returns {void} 45 */ 46 function asyncTest(testFunc) { 47 if (!Object.prototype.hasOwnProperty.call(globalThis, "$DONE")) { 48 throw new Test262Error("asyncTest called without async flag"); 49 } 50 if (typeof testFunc !== "function") { 51 $DONE(new Test262Error("asyncTest called with non-function argument")); 52 return; 53 } 54 try { 55 testFunc().then( 56 function () { 57 $DONE(); 58 }, 59 function (error) { 60 $DONE(error); 61 } 62 ); 63 } catch (syncError) { 64 $DONE(syncError); 65 } 66 } 67 68 /** 69 * Asserts that a callback asynchronously throws an instance of a particular 70 * error (i.e., returns a promise whose rejection value is an object referencing 71 * the constructor). 72 * 73 * @param {Function} expectedErrorConstructor the expected constructor of the 74 * rejection value 75 * @param {Function} func the callback 76 * @param {string} [message] the prefix to use for failure messages 77 * @returns {Promise<void>} fulfills if the expected error is thrown, 78 * otherwise rejects 79 */ 80 assert.throwsAsync = function (expectedErrorConstructor, func, message) { 81 return new Promise(function (resolve) { 82 var fail = function (detail) { 83 if (message === undefined) { 84 throw new Test262Error(detail); 85 } 86 throw new Test262Error(message + " " + detail); 87 }; 88 if (typeof expectedErrorConstructor !== "function") { 89 fail("assert.throwsAsync called with an argument that is not an error constructor"); 90 } 91 if (typeof func !== "function") { 92 fail("assert.throwsAsync called with an argument that is not a function"); 93 } 94 var expectedName = expectedErrorConstructor.name; 95 var expectation = "Expected a " + expectedName + " to be thrown asynchronously"; 96 var res; 97 try { 98 res = func(); 99 } catch (thrown) { 100 fail(expectation + " but the function threw synchronously"); 101 } 102 if (res === null || typeof res !== "object" || typeof res.then !== "function") { 103 fail(expectation + " but result was not a thenable"); 104 } 105 var onResFulfilled, onResRejected; 106 var resSettlementP = new Promise(function (onFulfilled, onRejected) { 107 onResFulfilled = onFulfilled; 108 onResRejected = onRejected; 109 }); 110 try { 111 res.then(onResFulfilled, onResRejected) 112 } catch (thrown) { 113 fail(expectation + " but .then threw synchronously"); 114 } 115 resolve(resSettlementP.then( 116 function () { 117 fail(expectation + " but no exception was thrown at all"); 118 }, 119 function (thrown) { 120 var actualName; 121 if (thrown === null || typeof thrown !== "object") { 122 fail(expectation + " but thrown value was not an object"); 123 } else if (thrown.constructor !== expectedErrorConstructor) { 124 actualName = thrown.constructor.name; 125 if (expectedName === actualName) { 126 fail(expectation + 127 " but got a different error constructor with the same name"); 128 } 129 fail(expectation + " but got a " + actualName); 130 } 131 } 132 )); 133 }); 134 }; 135 136 // file: byteConversionValues.js 137 // Copyright (C) 2016 the V8 project authors. All rights reserved. 138 // This code is governed by the BSD license found in the LICENSE file. 139 /*--- 140 description: | 141 Provide a list for original and expected values for different byte 142 conversions. 143 This helper is mostly used on tests for TypedArray and DataView, and each 144 array from the expected values must match the original values array on every 145 index containing its original value. 146 defines: [byteConversionValues] 147 ---*/ 148 var byteConversionValues = { 149 values: [ 150 127, // 2 ** 7 - 1 151 128, // 2 ** 7 152 32767, // 2 ** 15 - 1 153 32768, // 2 ** 15 154 2147483647, // 2 ** 31 - 1 155 2147483648, // 2 ** 31 156 255, // 2 ** 8 - 1 157 256, // 2 ** 8 158 65535, // 2 ** 16 - 1 159 65536, // 2 ** 16 160 4294967295, // 2 ** 32 - 1 161 4294967296, // 2 ** 32 162 9007199254740991, // 2 ** 53 - 1 163 9007199254740992, // 2 ** 53 164 1.1, 165 0.1, 166 0.5, 167 0.50000001, 168 0.6, 169 0.7, 170 undefined, 171 -1, 172 -0, 173 -0.1, 174 -1.1, 175 NaN, 176 -127, // - ( 2 ** 7 - 1 ) 177 -128, // - ( 2 ** 7 ) 178 -32767, // - ( 2 ** 15 - 1 ) 179 -32768, // - ( 2 ** 15 ) 180 -2147483647, // - ( 2 ** 31 - 1 ) 181 -2147483648, // - ( 2 ** 31 ) 182 -255, // - ( 2 ** 8 - 1 ) 183 -256, // - ( 2 ** 8 ) 184 -65535, // - ( 2 ** 16 - 1 ) 185 -65536, // - ( 2 ** 16 ) 186 -4294967295, // - ( 2 ** 32 - 1 ) 187 -4294967296, // - ( 2 ** 32 ) 188 Infinity, 189 -Infinity, 190 0, 191 2049, // an integer which rounds down under ties-to-even when cast to float16 192 2051, // an integer which rounds up under ties-to-even when cast to float16 193 0.00006103515625, // smallest normal float16 194 0.00006097555160522461, // largest subnormal float16 195 5.960464477539063e-8, // smallest float16 196 2.9802322387695312e-8, // largest double which rounds to 0 when cast to float16 197 2.980232238769532e-8, // smallest double which does not round to 0 when cast to float16 198 8.940696716308594e-8, // a double which rounds up to a subnormal under ties-to-even when cast to float16 199 1.4901161193847656e-7, // a double which rounds down to a subnormal under ties-to-even when cast to float16 200 1.490116119384766e-7, // the next double above the one on the previous line one 201 65504, // max finite float16 202 65520, // smallest double which rounds to infinity when cast to float16 203 65519.99999999999, // largest double which does not round to infinity when cast to float16 204 0.000061005353927612305, // smallest double which rounds to a non-subnormal when cast to float16 205 0.0000610053539276123 // largest double which rounds to a subnormal when cast to float16 206 ], 207 208 expected: { 209 Int8: [ 210 127, // 127 211 -128, // 128 212 -1, // 32767 213 0, // 32768 214 -1, // 2147483647 215 0, // 2147483648 216 -1, // 255 217 0, // 256 218 -1, // 65535 219 0, // 65536 220 -1, // 4294967295 221 0, // 4294967296 222 -1, // 9007199254740991 223 0, // 9007199254740992 224 1, // 1.1 225 0, // 0.1 226 0, // 0.5 227 0, // 0.50000001, 228 0, // 0.6 229 0, // 0.7 230 0, // undefined 231 -1, // -1 232 0, // -0 233 0, // -0.1 234 -1, // -1.1 235 0, // NaN 236 -127, // -127 237 -128, // -128 238 1, // -32767 239 0, // -32768 240 1, // -2147483647 241 0, // -2147483648 242 1, // -255 243 0, // -256 244 1, // -65535 245 0, // -65536 246 1, // -4294967295 247 0, // -4294967296 248 0, // Infinity 249 0, // -Infinity 250 0, // 0 251 1, // 2049 252 3, // 2051 253 0, // 0.00006103515625 254 0, // 0.00006097555160522461 255 0, // 5.960464477539063e-8 256 0, // 2.9802322387695312e-8 257 0, // 2.980232238769532e-8 258 0, // 8.940696716308594e-8 259 0, // 1.4901161193847656e-7 260 0, // 1.490116119384766e-7 261 -32, // 65504 262 -16, // 65520 263 -17, // 65519.99999999999 264 0, // 0.000061005353927612305 265 0 // 0.0000610053539276123 266 ], 267 Uint8: [ 268 127, // 127 269 128, // 128 270 255, // 32767 271 0, // 32768 272 255, // 2147483647 273 0, // 2147483648 274 255, // 255 275 0, // 256 276 255, // 65535 277 0, // 65536 278 255, // 4294967295 279 0, // 4294967296 280 255, // 9007199254740991 281 0, // 9007199254740992 282 1, // 1.1 283 0, // 0.1 284 0, // 0.5 285 0, // 0.50000001, 286 0, // 0.6 287 0, // 0.7 288 0, // undefined 289 255, // -1 290 0, // -0 291 0, // -0.1 292 255, // -1.1 293 0, // NaN 294 129, // -127 295 128, // -128 296 1, // -32767 297 0, // -32768 298 1, // -2147483647 299 0, // -2147483648 300 1, // -255 301 0, // -256 302 1, // -65535 303 0, // -65536 304 1, // -4294967295 305 0, // -4294967296 306 0, // Infinity 307 0, // -Infinity 308 0, // 0 309 1, // 2049 310 3, // 2051 311 0, // 0.00006103515625 312 0, // 0.00006097555160522461 313 0, // 5.960464477539063e-8 314 0, // 2.9802322387695312e-8 315 0, // 2.980232238769532e-8 316 0, // 8.940696716308594e-8 317 0, // 1.4901161193847656e-7 318 0, // 1.490116119384766e-7 319 224, // 65504 320 240, // 65520 321 239, // 65519.99999999999 322 0, // 0.000061005353927612305 323 0 // 0.0000610053539276123 324 ], 325 Uint8Clamped: [ 326 127, // 127 327 128, // 128 328 255, // 32767 329 255, // 32768 330 255, // 2147483647 331 255, // 2147483648 332 255, // 255 333 255, // 256 334 255, // 65535 335 255, // 65536 336 255, // 4294967295 337 255, // 4294967296 338 255, // 9007199254740991 339 255, // 9007199254740992 340 1, // 1.1, 341 0, // 0.1 342 0, // 0.5 343 1, // 0.50000001, 344 1, // 0.6 345 1, // 0.7 346 0, // undefined 347 0, // -1 348 0, // -0 349 0, // -0.1 350 0, // -1.1 351 0, // NaN 352 0, // -127 353 0, // -128 354 0, // -32767 355 0, // -32768 356 0, // -2147483647 357 0, // -2147483648 358 0, // -255 359 0, // -256 360 0, // -65535 361 0, // -65536 362 0, // -4294967295 363 0, // -4294967296 364 255, // Infinity 365 0, // -Infinity 366 0, // 0 367 255, // 2049 368 255, // 2051 369 0, // 0.00006103515625 370 0, // 0.00006097555160522461 371 0, // 5.960464477539063e-8 372 0, // 2.9802322387695312e-8 373 0, // 2.980232238769532e-8 374 0, // 8.940696716308594e-8 375 0, // 1.4901161193847656e-7 376 0, // 1.490116119384766e-7 377 255, // 65504 378 255, // 65520 379 255, // 65519.99999999999 380 0, // 0.000061005353927612305 381 0 // 0.0000610053539276123 382 ], 383 Int16: [ 384 127, // 127 385 128, // 128 386 32767, // 32767 387 -32768, // 32768 388 -1, // 2147483647 389 0, // 2147483648 390 255, // 255 391 256, // 256 392 -1, // 65535 393 0, // 65536 394 -1, // 4294967295 395 0, // 4294967296 396 -1, // 9007199254740991 397 0, // 9007199254740992 398 1, // 1.1 399 0, // 0.1 400 0, // 0.5 401 0, // 0.50000001, 402 0, // 0.6 403 0, // 0.7 404 0, // undefined 405 -1, // -1 406 0, // -0 407 0, // -0.1 408 -1, // -1.1 409 0, // NaN 410 -127, // -127 411 -128, // -128 412 -32767, // -32767 413 -32768, // -32768 414 1, // -2147483647 415 0, // -2147483648 416 -255, // -255 417 -256, // -256 418 1, // -65535 419 0, // -65536 420 1, // -4294967295 421 0, // -4294967296 422 0, // Infinity 423 0, // -Infinity 424 0, // 0 425 2049, // 2049 426 2051, // 2051 427 0, // 0.00006103515625 428 0, // 0.00006097555160522461 429 0, // 5.960464477539063e-8 430 0, // 2.9802322387695312e-8 431 0, // 2.980232238769532e-8 432 0, // 8.940696716308594e-8 433 0, // 1.4901161193847656e-7 434 0, // 1.490116119384766e-7 435 -32, // 65504 436 -16, // 65520 437 -17, // 65519.99999999999 438 0, // 0.000061005353927612305 439 0 // 0.0000610053539276123 440 ], 441 Uint16: [ 442 127, // 127 443 128, // 128 444 32767, // 32767 445 32768, // 32768 446 65535, // 2147483647 447 0, // 2147483648 448 255, // 255 449 256, // 256 450 65535, // 65535 451 0, // 65536 452 65535, // 4294967295 453 0, // 4294967296 454 65535, // 9007199254740991 455 0, // 9007199254740992 456 1, // 1.1 457 0, // 0.1 458 0, // 0.5 459 0, // 0.50000001, 460 0, // 0.6 461 0, // 0.7 462 0, // undefined 463 65535, // -1 464 0, // -0 465 0, // -0.1 466 65535, // -1.1 467 0, // NaN 468 65409, // -127 469 65408, // -128 470 32769, // -32767 471 32768, // -32768 472 1, // -2147483647 473 0, // -2147483648 474 65281, // -255 475 65280, // -256 476 1, // -65535 477 0, // -65536 478 1, // -4294967295 479 0, // -4294967296 480 0, // Infinity 481 0, // -Infinity 482 0, // 0 483 2049, // 2049 484 2051, // 2051 485 0, // 0.00006103515625 486 0, // 0.00006097555160522461 487 0, // 5.960464477539063e-8 488 0, // 2.9802322387695312e-8 489 0, // 2.980232238769532e-8 490 0, // 8.940696716308594e-8 491 0, // 1.4901161193847656e-7 492 0, // 1.490116119384766e-7 493 65504, // 65504 494 65520, // 65520 495 65519, // 65519.99999999999 496 0, // 0.000061005353927612305 497 0 // 0.0000610053539276123 498 ], 499 Int32: [ 500 127, // 127 501 128, // 128 502 32767, // 32767 503 32768, // 32768 504 2147483647, // 2147483647 505 -2147483648, // 2147483648 506 255, // 255 507 256, // 256 508 65535, // 65535 509 65536, // 65536 510 -1, // 4294967295 511 0, // 4294967296 512 -1, // 9007199254740991 513 0, // 9007199254740992 514 1, // 1.1 515 0, // 0.1 516 0, // 0.5 517 0, // 0.50000001, 518 0, // 0.6 519 0, // 0.7 520 0, // undefined 521 -1, // -1 522 0, // -0 523 0, // -0.1 524 -1, // -1.1 525 0, // NaN 526 -127, // -127 527 -128, // -128 528 -32767, // -32767 529 -32768, // -32768 530 -2147483647, // -2147483647 531 -2147483648, // -2147483648 532 -255, // -255 533 -256, // -256 534 -65535, // -65535 535 -65536, // -65536 536 1, // -4294967295 537 0, // -4294967296 538 0, // Infinity 539 0, // -Infinity 540 0, // 0 541 2049, // 2049 542 2051, // 2051 543 0, // 0.00006103515625 544 0, // 0.00006097555160522461 545 0, // 5.960464477539063e-8 546 0, // 2.9802322387695312e-8 547 0, // 2.980232238769532e-8 548 0, // 8.940696716308594e-8 549 0, // 1.4901161193847656e-7 550 0, // 1.490116119384766e-7 551 65504, // 65504 552 65520, // 65520 553 65519, // 65519.99999999999 554 0, // 0.000061005353927612305 555 0 // 0.0000610053539276123 556 ], 557 Uint32: [ 558 127, // 127 559 128, // 128 560 32767, // 32767 561 32768, // 32768 562 2147483647, // 2147483647 563 2147483648, // 2147483648 564 255, // 255 565 256, // 256 566 65535, // 65535 567 65536, // 65536 568 4294967295, // 4294967295 569 0, // 4294967296 570 4294967295, // 9007199254740991 571 0, // 9007199254740992 572 1, // 1.1 573 0, // 0.1 574 0, // 0.5 575 0, // 0.50000001, 576 0, // 0.6 577 0, // 0.7 578 0, // undefined 579 4294967295, // -1 580 0, // -0 581 0, // -0.1 582 4294967295, // -1.1 583 0, // NaN 584 4294967169, // -127 585 4294967168, // -128 586 4294934529, // -32767 587 4294934528, // -32768 588 2147483649, // -2147483647 589 2147483648, // -2147483648 590 4294967041, // -255 591 4294967040, // -256 592 4294901761, // -65535 593 4294901760, // -65536 594 1, // -4294967295 595 0, // -4294967296 596 0, // Infinity 597 0, // -Infinity 598 0, // 0 599 2049, // 2049 600 2051, // 2051 601 0, // 0.00006103515625 602 0, // 0.00006097555160522461 603 0, // 5.960464477539063e-8 604 0, // 2.9802322387695312e-8 605 0, // 2.980232238769532e-8 606 0, // 8.940696716308594e-8 607 0, // 1.4901161193847656e-7 608 0, // 1.490116119384766e-7 609 65504, // 65504 610 65520, // 65520 611 65519, // 65519.99999999999 612 0, // 0.000061005353927612305 613 0 // 0.0000610053539276123 614 ], 615 Float16: [ 616 127, // 127 617 128, // 128 618 32768, // 32767 619 32768, // 32768 620 Infinity, // 2147483647 621 Infinity, // 2147483648 622 255, // 255 623 256, // 256 624 Infinity, // 65535 625 Infinity, // 65536 626 Infinity, // 4294967295 627 Infinity, // 4294967296 628 Infinity, // 9007199254740991 629 Infinity, // 9007199254740992 630 1.099609375, // 1.1 631 0.0999755859375, // 0.1 632 0.5, // 0.5 633 0.5, // 0.50000001, 634 0.60009765625, // 0.6 635 0.7001953125, // 0.7 636 NaN, // undefined 637 -1, // -1 638 -0, // -0 639 -0.0999755859375, // -0.1 640 -1.099609375, // -1.1 641 NaN, // NaN 642 -127, // -127 643 -128, // -128 644 -32768, // -32767 645 -32768, // -32768 646 -Infinity, // -2147483647 647 -Infinity, // -2147483648 648 -255, // -255 649 -256, // -256 650 -Infinity, // -65535 651 -Infinity, // -65536 652 -Infinity, // -4294967295 653 -Infinity, // -4294967296 654 Infinity, // Infinity 655 -Infinity, // -Infinity 656 0, // 0 657 2048, // 2049 658 2052, // 2051 659 0.00006103515625, // 0.00006103515625 660 0.00006097555160522461, // 0.00006097555160522461 661 5.960464477539063e-8, // 5.960464477539063e-8 662 0, // 2.9802322387695312e-8 663 5.960464477539063e-8, // 2.980232238769532e-8 664 1.1920928955078125e-7, // 8.940696716308594e-8 665 1.1920928955078125e-7, // 1.4901161193847656e-7 666 1.7881393432617188e-7, // 1.490116119384766e-7 667 65504, // 65504 668 Infinity, // 65520 669 65504, // 65519.99999999999 670 0.00006103515625, // 0.000061005353927612305 671 0.00006097555160522461 // 0.0000610053539276123 672 ], 673 Float32: [ 674 127, // 127 675 128, // 128 676 32767, // 32767 677 32768, // 32768 678 2147483648, // 2147483647 679 2147483648, // 2147483648 680 255, // 255 681 256, // 256 682 65535, // 65535 683 65536, // 65536 684 4294967296, // 4294967295 685 4294967296, // 4294967296 686 9007199254740992, // 9007199254740991 687 9007199254740992, // 9007199254740992 688 1.100000023841858, // 1.1 689 0.10000000149011612, // 0.1 690 0.5, // 0.5 691 0.5, // 0.50000001, 692 0.6000000238418579, // 0.6 693 0.699999988079071, // 0.7 694 NaN, // undefined 695 -1, // -1 696 -0, // -0 697 -0.10000000149011612, // -0.1 698 -1.100000023841858, // -1.1 699 NaN, // NaN 700 -127, // -127 701 -128, // -128 702 -32767, // -32767 703 -32768, // -32768 704 -2147483648, // -2147483647 705 -2147483648, // -2147483648 706 -255, // -255 707 -256, // -256 708 -65535, // -65535 709 -65536, // -65536 710 -4294967296, // -4294967295 711 -4294967296, // -4294967296 712 Infinity, // Infinity 713 -Infinity, // -Infinity 714 0, // 0 715 2049, // 2049 716 2051, // 2051 717 0.00006103515625, // 0.00006103515625 718 0.00006097555160522461, // 0.00006097555160522461 719 5.960464477539063e-8, // 5.960464477539063e-8 720 2.9802322387695312e-8, // 2.9802322387695312e-8 721 2.9802322387695312e-8, // 2.980232238769532e-8 722 8.940696716308594e-8, // 8.940696716308594e-8 723 1.4901161193847656e-7, // 1.4901161193847656e-7 724 1.4901161193847656e-7, // 1.490116119384766e-7 725 65504, // 65504 726 65520, // 65520 727 65520, // 65519.99999999999 728 0.000061005353927612305, // 0.000061005353927612305 729 0.000061005353927612305 // 0.0000610053539276123 730 ], 731 Float64: [ 732 127, // 127 733 128, // 128 734 32767, // 32767 735 32768, // 32768 736 2147483647, // 2147483647 737 2147483648, // 2147483648 738 255, // 255 739 256, // 256 740 65535, // 65535 741 65536, // 65536 742 4294967295, // 4294967295 743 4294967296, // 4294967296 744 9007199254740991, // 9007199254740991 745 9007199254740992, // 9007199254740992 746 1.1, // 1.1 747 0.1, // 0.1 748 0.5, // 0.5 749 0.50000001, // 0.50000001, 750 0.6, // 0.6 751 0.7, // 0.7 752 NaN, // undefined 753 -1, // -1 754 -0, // -0 755 -0.1, // -0.1 756 -1.1, // -1.1 757 NaN, // NaN 758 -127, // -127 759 -128, // -128 760 -32767, // -32767 761 -32768, // -32768 762 -2147483647, // -2147483647 763 -2147483648, // -2147483648 764 -255, // -255 765 -256, // -256 766 -65535, // -65535 767 -65536, // -65536 768 -4294967295, // -4294967295 769 -4294967296, // -4294967296 770 Infinity, // Infinity 771 -Infinity, // -Infinity 772 0, // 0 773 2049, // 2049 774 2051, // 2051 775 0.00006103515625, // 0.00006103515625 776 0.00006097555160522461, // 0.00006097555160522461 777 5.960464477539063e-8, // 5.960464477539063e-8 778 2.9802322387695312e-8, // 2.9802322387695312e-8 779 2.980232238769532e-8, // 2.980232238769532e-8 780 8.940696716308594e-8, // 8.940696716308594e-8 781 1.4901161193847656e-7, // 1.4901161193847656e-7 782 1.490116119384766e-7, // 1.490116119384766e-7 783 65504, // 65504 784 65520, // 65520 785 65519.99999999999, // 65519.99999999999 786 0.000061005353927612305, // 0.000061005353927612305 787 0.0000610053539276123 // 0.0000610053539276123 788 ] 789 } 790 }; 791 792 // file: dateConstants.js 793 // Copyright (C) 2009 the Sputnik authors. All rights reserved. 794 // This code is governed by the BSD license found in the LICENSE file. 795 /*--- 796 description: | 797 Collection of date-centric values 798 defines: 799 - date_1899_end 800 - date_1900_start 801 - date_1969_end 802 - date_1970_start 803 - date_1999_end 804 - date_2000_start 805 - date_2099_end 806 - date_2100_start 807 - start_of_time 808 - end_of_time 809 ---*/ 810 811 var date_1899_end = -2208988800001; 812 var date_1900_start = -2208988800000; 813 var date_1969_end = -1; 814 var date_1970_start = 0; 815 var date_1999_end = 946684799999; 816 var date_2000_start = 946684800000; 817 var date_2099_end = 4102444799999; 818 var date_2100_start = 4102444800000; 819 820 var start_of_time = -8.64e15; 821 var end_of_time = 8.64e15; 822 823 // file: decimalToHexString.js 824 // Copyright (C) 2017 André Bargull. All rights reserved. 825 // This code is governed by the BSD license found in the LICENSE file. 826 /*--- 827 description: | 828 Collection of functions used to assert the correctness of various encoding operations. 829 defines: [decimalToHexString, decimalToPercentHexString] 830 ---*/ 831 832 function decimalToHexString(n) { 833 var hex = "0123456789ABCDEF"; 834 n >>>= 0; 835 var s = ""; 836 while (n) { 837 s = hex[n & 0xf] + s; 838 n >>>= 4; 839 } 840 while (s.length < 4) { 841 s = "0" + s; 842 } 843 return s; 844 } 845 846 function decimalToPercentHexString(n) { 847 var hex = "0123456789ABCDEF"; 848 return "%" + hex[(n >> 4) & 0xf] + hex[n & 0xf]; 849 } 850 851 // file: deepEqual.js 852 // Copyright 2019 Ron Buckton. All rights reserved. 853 // This code is governed by the BSD license found in the LICENSE file. 854 /*--- 855 description: > 856 Compare two values structurally 857 defines: [assert.deepEqual] 858 ---*/ 859 860 assert.deepEqual = function(actual, expected, message) { 861 var format = assert.deepEqual.format; 862 var mustBeTrue = assert.deepEqual._compare(actual, expected); 863 864 // format can be slow when `actual` or `expected` are large objects, like for 865 // example the global object, so only call it when the assertion will fail. 866 if (mustBeTrue !== true) { 867 message = `Expected ${format(actual)} to be structurally equal to ${format(expected)}. ${(message || '')}`; 868 } 869 870 assert(mustBeTrue, message); 871 }; 872 873 (function() { 874 let getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 875 let join = arr => arr.join(', '); 876 function stringFromTemplate(strings, subs) { 877 let parts = strings.map((str, i) => `${i === 0 ? '' : subs[i - 1]}${str}`); 878 return parts.join(''); 879 } 880 function escapeKey(key) { 881 if (typeof key === 'symbol') return `[${String(key)}]`; 882 if (/^[a-zA-Z0-9_$]+$/.test(key)) return key; 883 return assert._formatIdentityFreeValue(key); 884 } 885 886 assert.deepEqual.format = function(value, seen) { 887 let basic = assert._formatIdentityFreeValue(value); 888 if (basic) return basic; 889 switch (value === null ? 'null' : typeof value) { 890 case 'string': 891 case 'bigint': 892 case 'number': 893 case 'boolean': 894 case 'undefined': 895 case 'null': 896 assert(false, 'values without identity should use basic formatting'); 897 break; 898 case 'symbol': 899 case 'function': 900 case 'object': 901 break; 902 default: 903 return typeof value; 904 } 905 906 if (!seen) { 907 seen = { 908 counter: 0, 909 map: new Map() 910 }; 911 } 912 let usage = seen.map.get(value); 913 if (usage) { 914 usage.used = true; 915 return `ref #${usage.id}`; 916 } 917 usage = { id: ++seen.counter, used: false }; 918 seen.map.set(value, usage); 919 920 // Properly communicating multiple references requires deferred rendering of 921 // all identity-bearing values until the outermost format call finishes, 922 // because the current value can also in appear in a not-yet-visited part of 923 // the object graph (which, when visited, will update the usage object). 924 // 925 // To preserve readability of the desired output formatting, we accomplish 926 // this deferral using tagged template literals. 927 // Evaluation closes over the usage object and returns a function that accepts 928 // "mapper" arguments for rendering the corresponding substitution values and 929 // returns an object with only a toString method which will itself be invoked 930 // when trying to use the result as a string in assert.deepEqual. 931 // 932 // For convenience, any absent mapper is presumed to be `String`, and the 933 // function itself has a toString method that self-invokes with no mappers 934 // (allowing returning the function directly when every mapper is `String`). 935 function lazyResult(strings, ...subs) { 936 function acceptMappers(...mappers) { 937 function toString() { 938 let renderings = subs.map((sub, i) => (mappers[i] || String)(sub)); 939 let rendered = stringFromTemplate(strings, renderings); 940 if (usage.used) rendered += ` as #${usage.id}`; 941 return rendered; 942 } 943 944 return { toString }; 945 } 946 947 acceptMappers.toString = () => String(acceptMappers()); 948 return acceptMappers; 949 } 950 951 let format = assert.deepEqual.format; 952 function lazyString(strings, ...subs) { 953 return { toString: () => stringFromTemplate(strings, subs) }; 954 } 955 956 if (typeof value === 'function') { 957 return lazyResult`function${value.name ? ` ${String(value.name)}` : ''}`; 958 } 959 if (typeof value !== 'object') { 960 // probably a symbol 961 return lazyResult`${value}`; 962 } 963 if (Array.isArray ? Array.isArray(value) : value instanceof Array) { 964 return lazyResult`[${value.map(value => format(value, seen))}]`(join); 965 } 966 if (value instanceof Date) { 967 return lazyResult`Date(${format(value.toISOString(), seen)})`; 968 } 969 if (value instanceof Error) { 970 return lazyResult`error ${value.name || 'Error'}(${format(value.message, seen)})`; 971 } 972 if (value instanceof RegExp) { 973 return lazyResult`${value}`; 974 } 975 if (typeof Map !== "undefined" && value instanceof Map) { 976 let contents = Array.from(value).map(pair => lazyString`${format(pair[0], seen)} => ${format(pair[1], seen)}`); 977 return lazyResult`Map {${contents}}`(join); 978 } 979 if (typeof Set !== "undefined" && value instanceof Set) { 980 let contents = Array.from(value).map(value => format(value, seen)); 981 return lazyResult`Set {${contents}}`(join); 982 } 983 984 let tag = Symbol.toStringTag && Symbol.toStringTag in value 985 ? value[Symbol.toStringTag] 986 : Object.getPrototypeOf(value) === null ? '[Object: null prototype]' : 'Object'; 987 let keys = Reflect.ownKeys(value).filter(key => getOwnPropertyDescriptor(value, key).enumerable); 988 let contents = keys.map(key => lazyString`${escapeKey(key)}: ${format(value[key], seen)}`); 989 return lazyResult`${tag ? `${tag} ` : ''}{${contents}}`(String, join); 990 }; 991 })(); 992 993 assert.deepEqual._compare = (function () { 994 var EQUAL = 1; 995 var NOT_EQUAL = -1; 996 var UNKNOWN = 0; 997 998 function deepEqual(a, b) { 999 return compareEquality(a, b) === EQUAL; 1000 } 1001 1002 function compareEquality(a, b, cache) { 1003 return compareIf(a, b, isOptional, compareOptionality) 1004 || compareIf(a, b, isPrimitiveEquatable, comparePrimitiveEquality) 1005 || compareIf(a, b, isObjectEquatable, compareObjectEquality, cache) 1006 || NOT_EQUAL; 1007 } 1008 1009 function compareIf(a, b, test, compare, cache) { 1010 return !test(a) 1011 ? !test(b) ? UNKNOWN : NOT_EQUAL 1012 : !test(b) ? NOT_EQUAL : cacheComparison(a, b, compare, cache); 1013 } 1014 1015 function tryCompareStrictEquality(a, b) { 1016 return a === b ? EQUAL : UNKNOWN; 1017 } 1018 1019 function tryCompareTypeOfEquality(a, b) { 1020 return typeof a !== typeof b ? NOT_EQUAL : UNKNOWN; 1021 } 1022 1023 function tryCompareToStringTagEquality(a, b) { 1024 var aTag = Symbol.toStringTag in a ? a[Symbol.toStringTag] : undefined; 1025 var bTag = Symbol.toStringTag in b ? b[Symbol.toStringTag] : undefined; 1026 return aTag !== bTag ? NOT_EQUAL : UNKNOWN; 1027 } 1028 1029 function isOptional(value) { 1030 return value === undefined 1031 || value === null; 1032 } 1033 1034 function compareOptionality(a, b) { 1035 return tryCompareStrictEquality(a, b) 1036 || NOT_EQUAL; 1037 } 1038 1039 function isPrimitiveEquatable(value) { 1040 switch (typeof value) { 1041 case 'string': 1042 case 'number': 1043 case 'bigint': 1044 case 'boolean': 1045 case 'symbol': 1046 return true; 1047 default: 1048 return isBoxed(value); 1049 } 1050 } 1051 1052 function comparePrimitiveEquality(a, b) { 1053 if (isBoxed(a)) a = a.valueOf(); 1054 if (isBoxed(b)) b = b.valueOf(); 1055 return tryCompareStrictEquality(a, b) 1056 || tryCompareTypeOfEquality(a, b) 1057 || compareIf(a, b, isNaNEquatable, compareNaNEquality) 1058 || NOT_EQUAL; 1059 } 1060 1061 function isNaNEquatable(value) { 1062 return typeof value === 'number'; 1063 } 1064 1065 function compareNaNEquality(a, b) { 1066 return isNaN(a) && isNaN(b) ? EQUAL : NOT_EQUAL; 1067 } 1068 1069 function isObjectEquatable(value) { 1070 return typeof value === 'object' || typeof value === 'function'; 1071 } 1072 1073 function compareObjectEquality(a, b, cache) { 1074 if (!cache) cache = new Map(); 1075 return getCache(cache, a, b) 1076 || setCache(cache, a, b, EQUAL) // consider equal for now 1077 || cacheComparison(a, b, tryCompareStrictEquality, cache) 1078 || cacheComparison(a, b, tryCompareToStringTagEquality, cache) 1079 || compareIf(a, b, isValueOfEquatable, compareValueOfEquality) 1080 || compareIf(a, b, isToStringEquatable, compareToStringEquality) 1081 || compareIf(a, b, isArrayLikeEquatable, compareArrayLikeEquality, cache) 1082 || compareIf(a, b, isStructurallyEquatable, compareStructuralEquality, cache) 1083 || compareIf(a, b, isIterableEquatable, compareIterableEquality, cache) 1084 || cacheComparison(a, b, fail, cache); 1085 } 1086 1087 function isBoxed(value) { 1088 return value instanceof String 1089 || value instanceof Number 1090 || value instanceof Boolean 1091 || typeof Symbol === 'function' && value instanceof Symbol 1092 || typeof BigInt === 'function' && value instanceof BigInt; 1093 } 1094 1095 function isValueOfEquatable(value) { 1096 return value instanceof Date; 1097 } 1098 1099 function compareValueOfEquality(a, b) { 1100 return compareIf(a.valueOf(), b.valueOf(), isPrimitiveEquatable, comparePrimitiveEquality) 1101 || NOT_EQUAL; 1102 } 1103 1104 function isToStringEquatable(value) { 1105 return value instanceof RegExp; 1106 } 1107 1108 function compareToStringEquality(a, b) { 1109 return compareIf(a.toString(), b.toString(), isPrimitiveEquatable, comparePrimitiveEquality) 1110 || NOT_EQUAL; 1111 } 1112 1113 function isArrayLikeEquatable(value) { 1114 return (Array.isArray ? Array.isArray(value) : value instanceof Array) 1115 || (typeof Uint8Array === 'function' && value instanceof Uint8Array) 1116 || (typeof Uint8ClampedArray === 'function' && value instanceof Uint8ClampedArray) 1117 || (typeof Uint16Array === 'function' && value instanceof Uint16Array) 1118 || (typeof Uint32Array === 'function' && value instanceof Uint32Array) 1119 || (typeof Int8Array === 'function' && value instanceof Int8Array) 1120 || (typeof Int16Array === 'function' && value instanceof Int16Array) 1121 || (typeof Int32Array === 'function' && value instanceof Int32Array) 1122 || (typeof Float32Array === 'function' && value instanceof Float32Array) 1123 || (typeof Float64Array === 'function' && value instanceof Float64Array) 1124 || (typeof BigUint64Array === 'function' && value instanceof BigUint64Array) 1125 || (typeof BigInt64Array === 'function' && value instanceof BigInt64Array); 1126 } 1127 1128 function compareArrayLikeEquality(a, b, cache) { 1129 if (a.length !== b.length) return NOT_EQUAL; 1130 for (var i = 0; i < a.length; i++) { 1131 if (compareEquality(a[i], b[i], cache) === NOT_EQUAL) { 1132 return NOT_EQUAL; 1133 } 1134 } 1135 return EQUAL; 1136 } 1137 1138 function isStructurallyEquatable(value) { 1139 return !(typeof Promise === 'function' && value instanceof Promise // only comparable by reference 1140 || typeof WeakMap === 'function' && value instanceof WeakMap // only comparable by reference 1141 || typeof WeakSet === 'function' && value instanceof WeakSet // only comparable by reference 1142 || typeof Map === 'function' && value instanceof Map // comparable via @@iterator 1143 || typeof Set === 'function' && value instanceof Set); // comparable via @@iterator 1144 } 1145 1146 function compareStructuralEquality(a, b, cache) { 1147 var aKeys = []; 1148 for (var key in a) aKeys.push(key); 1149 1150 var bKeys = []; 1151 for (var key in b) bKeys.push(key); 1152 1153 if (aKeys.length !== bKeys.length) { 1154 return NOT_EQUAL; 1155 } 1156 1157 aKeys.sort(); 1158 bKeys.sort(); 1159 1160 for (var i = 0; i < aKeys.length; i++) { 1161 var aKey = aKeys[i]; 1162 var bKey = bKeys[i]; 1163 if (compareEquality(aKey, bKey, cache) === NOT_EQUAL) { 1164 return NOT_EQUAL; 1165 } 1166 if (compareEquality(a[aKey], b[bKey], cache) === NOT_EQUAL) { 1167 return NOT_EQUAL; 1168 } 1169 } 1170 1171 return compareIf(a, b, isIterableEquatable, compareIterableEquality, cache) 1172 || EQUAL; 1173 } 1174 1175 function isIterableEquatable(value) { 1176 return typeof Symbol === 'function' 1177 && typeof value[Symbol.iterator] === 'function'; 1178 } 1179 1180 function compareIteratorEquality(a, b, cache) { 1181 if (typeof Map === 'function' && a instanceof Map && b instanceof Map || 1182 typeof Set === 'function' && a instanceof Set && b instanceof Set) { 1183 if (a.size !== b.size) return NOT_EQUAL; // exit early if we detect a difference in size 1184 } 1185 1186 var ar, br; 1187 while (true) { 1188 ar = a.next(); 1189 br = b.next(); 1190 if (ar.done) { 1191 if (br.done) return EQUAL; 1192 if (b.return) b.return(); 1193 return NOT_EQUAL; 1194 } 1195 if (br.done) { 1196 if (a.return) a.return(); 1197 return NOT_EQUAL; 1198 } 1199 if (compareEquality(ar.value, br.value, cache) === NOT_EQUAL) { 1200 if (a.return) a.return(); 1201 if (b.return) b.return(); 1202 return NOT_EQUAL; 1203 } 1204 } 1205 } 1206 1207 function compareIterableEquality(a, b, cache) { 1208 return compareIteratorEquality(a[Symbol.iterator](), b[Symbol.iterator](), cache); 1209 } 1210 1211 function cacheComparison(a, b, compare, cache) { 1212 var result = compare(a, b, cache); 1213 if (cache && (result === EQUAL || result === NOT_EQUAL)) { 1214 setCache(cache, a, b, /** @type {EQUAL | NOT_EQUAL} */(result)); 1215 } 1216 return result; 1217 } 1218 1219 function fail() { 1220 return NOT_EQUAL; 1221 } 1222 1223 function setCache(cache, left, right, result) { 1224 var otherCache; 1225 1226 otherCache = cache.get(left); 1227 if (!otherCache) cache.set(left, otherCache = new Map()); 1228 otherCache.set(right, result); 1229 1230 otherCache = cache.get(right); 1231 if (!otherCache) cache.set(right, otherCache = new Map()); 1232 otherCache.set(left, result); 1233 } 1234 1235 function getCache(cache, left, right) { 1236 var otherCache; 1237 var result; 1238 1239 otherCache = cache.get(left); 1240 result = otherCache && otherCache.get(right); 1241 if (result) return result; 1242 1243 otherCache = cache.get(right); 1244 result = otherCache && otherCache.get(left); 1245 if (result) return result; 1246 1247 return UNKNOWN; 1248 } 1249 1250 return deepEqual; 1251 })(); 1252 1253 // file: detachArrayBuffer.js 1254 // Copyright (C) 2016 the V8 project authors. All rights reserved. 1255 // This code is governed by the BSD license found in the LICENSE file. 1256 /*--- 1257 description: | 1258 A function used in the process of asserting correctness of TypedArray objects. 1259 1260 $262.detachArrayBuffer is defined by a host. 1261 defines: [$DETACHBUFFER] 1262 ---*/ 1263 1264 function $DETACHBUFFER(buffer) { 1265 if (!$262 || typeof $262.detachArrayBuffer !== "function") { 1266 throw new Test262Error("No method available to detach an ArrayBuffer"); 1267 } 1268 $262.detachArrayBuffer(buffer); 1269 } 1270 1271 // file: fnGlobalObject.js 1272 // Copyright (C) 2017 Ecma International. All rights reserved. 1273 // This code is governed by the BSD license found in the LICENSE file. 1274 /*--- 1275 description: | 1276 Produce a reliable global object 1277 defines: [fnGlobalObject] 1278 ---*/ 1279 1280 var __globalObject = Function("return this;")(); 1281 function fnGlobalObject() { 1282 return __globalObject; 1283 } 1284 1285 // file: isConstructor.js 1286 // Copyright (C) 2017 André Bargull. All rights reserved. 1287 // This code is governed by the BSD license found in the LICENSE file. 1288 1289 /*--- 1290 description: | 1291 Test if a given function is a constructor function. 1292 defines: [isConstructor] 1293 features: [Reflect.construct] 1294 ---*/ 1295 1296 function isConstructor(f) { 1297 if (typeof f !== "function") { 1298 throw new Test262Error("isConstructor invoked with a non-function value"); 1299 } 1300 1301 try { 1302 Reflect.construct(function(){}, [], f); 1303 } catch (e) { 1304 return false; 1305 } 1306 return true; 1307 } 1308 1309 // file: nans.js 1310 // Copyright (C) 2016 the V8 project authors. All rights reserved. 1311 // This code is governed by the BSD license found in the LICENSE file. 1312 /*--- 1313 description: | 1314 A collection of NaN values produced from expressions that have been observed 1315 to create distinct bit representations on various platforms. These provide a 1316 weak basis for assertions regarding the consistent canonicalization of NaN 1317 values in Array buffers. 1318 defines: [NaNs] 1319 ---*/ 1320 1321 var NaNs = [ 1322 NaN, 1323 Number.NaN, 1324 NaN * 0, 1325 0/0, 1326 Infinity/Infinity, 1327 -(0/0), 1328 Math.pow(-1, 0.5), 1329 -Math.pow(-1, 0.5), 1330 Number("Not-a-Number"), 1331 ]; 1332 1333 // file: nativeFunctionMatcher.js 1334 // Copyright (C) 2016 Michael Ficarra. All rights reserved. 1335 // This code is governed by the BSD license found in the LICENSE file. 1336 /*--- 1337 description: Assert _NativeFunction_ Syntax 1338 info: | 1339 NativeFunction : 1340 function _NativeFunctionAccessor_ opt _IdentifierName_ opt ( _FormalParameters_ ) { [ native code ] } 1341 NativeFunctionAccessor : 1342 get 1343 set 1344 defines: 1345 - assertToStringOrNativeFunction 1346 - assertNativeFunction 1347 - validateNativeFunctionSource 1348 ---*/ 1349 1350 const validateNativeFunctionSource = function(source) { 1351 // These regexes should be kept up to date with Unicode using `regexpu-core`. 1352 // `/\p{ID_Start}/u` 1353 const UnicodeIDStart = /(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/; 1354 // `/\p{ID_Continue}/u` 1355 const UnicodeIDContinue = /(?:[0-9A-Z_a-z\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u07FD\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u08D3-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1ABF\u1AC0\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CD0-\u1CD2\u1CD4-\u1CFA\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA827\uA82C\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDD30-\uDD39\uDE80-\uDEA9\uDEAB\uDEAC\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF50\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD44-\uDD47\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDC9-\uDDCC\uDDCE-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3B-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5E-\uDC61\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDC00-\uDC3A\uDCA0-\uDCE9\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD35\uDD37\uDD38\uDD3B-\uDD43\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE1\uDDE3\uDDE4\uDE00-\uDE3E\uDE47\uDE50-\uDE99\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF6\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3\uDFE4\uDFF0\uDFF1]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]|\uDB40[\uDD00-\uDDEF])/; 1356 // `/\p{Space_Separator}/u` 1357 const UnicodeSpaceSeparator = /[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/; 1358 1359 const isNewline = (c) => /[\u000A\u000D\u2028\u2029]/.test(c); 1360 const isWhitespace = (c) => /[\u0009\u000B\u000C\u0020\u00A0\uFEFF]/.test(c) || UnicodeSpaceSeparator.test(c); 1361 1362 let pos = 0; 1363 1364 const eatWhitespace = () => { 1365 while (pos < source.length) { 1366 const c = source[pos]; 1367 if (isWhitespace(c) || isNewline(c)) { 1368 pos += 1; 1369 continue; 1370 } 1371 1372 if (c === '/') { 1373 if (source[pos + 1] === '/') { 1374 while (pos < source.length) { 1375 if (isNewline(source[pos])) { 1376 break; 1377 } 1378 pos += 1; 1379 } 1380 continue; 1381 } 1382 if (source[pos + 1] === '*') { 1383 const end = source.indexOf('*/', pos); 1384 if (end === -1) { 1385 throw new SyntaxError(); 1386 } 1387 pos = end + '*/'.length; 1388 continue; 1389 } 1390 } 1391 1392 break; 1393 } 1394 }; 1395 1396 const getIdentifier = () => { 1397 eatWhitespace(); 1398 1399 const start = pos; 1400 let end = pos; 1401 switch (source[end]) { 1402 case '_': 1403 case '$': 1404 end += 1; 1405 break; 1406 default: 1407 if (UnicodeIDStart.test(source[end])) { 1408 end += 1; 1409 break; 1410 } 1411 return null; 1412 } 1413 while (end < source.length) { 1414 const c = source[end]; 1415 switch (c) { 1416 case '_': 1417 case '$': 1418 end += 1; 1419 break; 1420 default: 1421 if (UnicodeIDContinue.test(c)) { 1422 end += 1; 1423 break; 1424 } 1425 return source.slice(start, end); 1426 } 1427 } 1428 return source.slice(start, end); 1429 }; 1430 1431 const test = (s) => { 1432 eatWhitespace(); 1433 1434 if (/\w/.test(s)) { 1435 return getIdentifier() === s; 1436 } 1437 return source.slice(pos, pos + s.length) === s; 1438 }; 1439 1440 const eat = (s) => { 1441 if (test(s)) { 1442 pos += s.length; 1443 return true; 1444 } 1445 return false; 1446 }; 1447 1448 const eatIdentifier = () => { 1449 const n = getIdentifier(); 1450 if (n !== null) { 1451 pos += n.length; 1452 return true; 1453 } 1454 return false; 1455 }; 1456 1457 const expect = (s) => { 1458 if (!eat(s)) { 1459 throw new SyntaxError(); 1460 } 1461 }; 1462 1463 const eatString = () => { 1464 if (source[pos] === '\'' || source[pos] === '"') { 1465 const match = source[pos]; 1466 pos += 1; 1467 while (pos < source.length) { 1468 if (source[pos] === match && source[pos - 1] !== '\\') { 1469 return; 1470 } 1471 if (isNewline(source[pos])) { 1472 throw new SyntaxError(); 1473 } 1474 pos += 1; 1475 } 1476 throw new SyntaxError(); 1477 } 1478 }; 1479 1480 // "Stumble" through source text until matching character is found. 1481 // Assumes ECMAScript syntax keeps `[]` and `()` balanced. 1482 const stumbleUntil = (c) => { 1483 const match = { 1484 ']': '[', 1485 ')': '(', 1486 }[c]; 1487 let nesting = 1; 1488 while (pos < source.length) { 1489 eatWhitespace(); 1490 eatString(); // Strings may contain unbalanced characters. 1491 if (source[pos] === match) { 1492 nesting += 1; 1493 } else if (source[pos] === c) { 1494 nesting -= 1; 1495 } 1496 pos += 1; 1497 if (nesting === 0) { 1498 return; 1499 } 1500 } 1501 throw new SyntaxError(); 1502 }; 1503 1504 // function 1505 expect('function'); 1506 1507 // NativeFunctionAccessor 1508 eat('get') || eat('set'); 1509 1510 // PropertyName 1511 if (!eatIdentifier() && eat('[')) { 1512 stumbleUntil(']'); 1513 } 1514 1515 // ( FormalParameters ) 1516 expect('('); 1517 stumbleUntil(')'); 1518 1519 // { 1520 expect('{'); 1521 1522 // [native code] 1523 expect('['); 1524 expect('native'); 1525 expect('code'); 1526 expect(']'); 1527 1528 // } 1529 expect('}'); 1530 1531 eatWhitespace(); 1532 if (pos !== source.length) { 1533 throw new SyntaxError(); 1534 } 1535 }; 1536 1537 const assertToStringOrNativeFunction = function(fn, expected) { 1538 const actual = "" + fn; 1539 try { 1540 assert.sameValue(actual, expected); 1541 } catch (unused) { 1542 assertNativeFunction(fn, expected); 1543 } 1544 }; 1545 1546 const assertNativeFunction = function(fn, special) { 1547 const actual = "" + fn; 1548 try { 1549 validateNativeFunctionSource(actual); 1550 } catch (unused) { 1551 throw new Test262Error('Conforms to NativeFunction Syntax: ' + JSON.stringify(actual) + (special ? ' (' + special + ')' : '')); 1552 } 1553 }; 1554 1555 // file: promiseHelper.js 1556 // Copyright (C) 2017 Ecma International. All rights reserved. 1557 // This code is governed by the BSD license found in the LICENSE file. 1558 /*--- 1559 description: | 1560 Check that an array contains a numeric sequence starting at 1 1561 and incrementing by 1 for each entry in the array. Used by 1562 Promise tests to assert the order of execution in deep Promise 1563 resolution pipelines. 1564 defines: [checkSequence, checkSettledPromises] 1565 ---*/ 1566 1567 function checkSequence(arr, message) { 1568 arr.forEach(function(e, i) { 1569 if (e !== (i+1)) { 1570 throw new Test262Error((message ? message : "Steps in unexpected sequence:") + 1571 " '" + arr.join(',') + "'"); 1572 } 1573 }); 1574 1575 return true; 1576 } 1577 1578 function checkSettledPromises(settleds, expected, message) { 1579 const prefix = message ? `${message}: ` : ''; 1580 1581 assert.sameValue(Array.isArray(settleds), true, `${prefix}Settled values is an array`); 1582 1583 assert.sameValue( 1584 settleds.length, 1585 expected.length, 1586 `${prefix}The settled values has a different length than expected` 1587 ); 1588 1589 settleds.forEach((settled, i) => { 1590 assert.sameValue( 1591 Object.prototype.hasOwnProperty.call(settled, 'status'), 1592 true, 1593 `${prefix}The settled value has a property status` 1594 ); 1595 1596 assert.sameValue(settled.status, expected[i].status, `${prefix}status for item ${i}`); 1597 1598 if (settled.status === 'fulfilled') { 1599 assert.sameValue( 1600 Object.prototype.hasOwnProperty.call(settled, 'value'), 1601 true, 1602 `${prefix}The fulfilled promise has a property named value` 1603 ); 1604 1605 assert.sameValue( 1606 Object.prototype.hasOwnProperty.call(settled, 'reason'), 1607 false, 1608 `${prefix}The fulfilled promise has no property named reason` 1609 ); 1610 1611 assert.sameValue(settled.value, expected[i].value, `${prefix}value for item ${i}`); 1612 } else { 1613 assert.sameValue(settled.status, 'rejected', `${prefix}Valid statuses are only fulfilled or rejected`); 1614 1615 assert.sameValue( 1616 Object.prototype.hasOwnProperty.call(settled, 'value'), 1617 false, 1618 `${prefix}The fulfilled promise has no property named value` 1619 ); 1620 1621 assert.sameValue( 1622 Object.prototype.hasOwnProperty.call(settled, 'reason'), 1623 true, 1624 `${prefix}The fulfilled promise has a property named reason` 1625 ); 1626 1627 assert.sameValue(settled.reason, expected[i].reason, `${prefix}Reason value for item ${i}`); 1628 } 1629 }); 1630 } 1631 1632 // file: proxyTrapsHelper.js 1633 // Copyright (C) 2016 Jordan Harband. All rights reserved. 1634 // This code is governed by the BSD license found in the LICENSE file. 1635 /*--- 1636 description: | 1637 Used to assert the correctness of object behavior in the presence 1638 and context of Proxy objects. 1639 defines: [allowProxyTraps] 1640 ---*/ 1641 1642 function allowProxyTraps(overrides) { 1643 function throwTest262Error(msg) { 1644 return function () { throw new Test262Error(msg); }; 1645 } 1646 if (!overrides) { overrides = {}; } 1647 return { 1648 getPrototypeOf: overrides.getPrototypeOf || throwTest262Error('[[GetPrototypeOf]] trap called'), 1649 setPrototypeOf: overrides.setPrototypeOf || throwTest262Error('[[SetPrototypeOf]] trap called'), 1650 isExtensible: overrides.isExtensible || throwTest262Error('[[IsExtensible]] trap called'), 1651 preventExtensions: overrides.preventExtensions || throwTest262Error('[[PreventExtensions]] trap called'), 1652 getOwnPropertyDescriptor: overrides.getOwnPropertyDescriptor || throwTest262Error('[[GetOwnProperty]] trap called'), 1653 has: overrides.has || throwTest262Error('[[HasProperty]] trap called'), 1654 get: overrides.get || throwTest262Error('[[Get]] trap called'), 1655 set: overrides.set || throwTest262Error('[[Set]] trap called'), 1656 deleteProperty: overrides.deleteProperty || throwTest262Error('[[Delete]] trap called'), 1657 defineProperty: overrides.defineProperty || throwTest262Error('[[DefineOwnProperty]] trap called'), 1658 enumerate: throwTest262Error('[[Enumerate]] trap called: this trap has been removed'), 1659 ownKeys: overrides.ownKeys || throwTest262Error('[[OwnPropertyKeys]] trap called'), 1660 apply: overrides.apply || throwTest262Error('[[Call]] trap called'), 1661 construct: overrides.construct || throwTest262Error('[[Construct]] trap called') 1662 }; 1663 } 1664 1665 // file: tcoHelper.js 1666 // Copyright (C) 2016 the V8 project authors. All rights reserved. 1667 // This code is governed by the BSD license found in the LICENSE file. 1668 /*--- 1669 description: | 1670 This defines the number of consecutive recursive function calls that must be 1671 made in order to prove that stack frames are properly destroyed according to 1672 ES2015 tail call optimization semantics. 1673 defines: [$MAX_ITERATIONS] 1674 ---*/ 1675 1676 1677 1678 1679 var $MAX_ITERATIONS = 100000; 1680 1681 // file: testTypedArray.js 1682 // Copyright (C) 2015 André Bargull. All rights reserved. 1683 // This code is governed by the BSD license found in the LICENSE file. 1684 /*--- 1685 description: | 1686 Collection of functions used to assert the correctness of TypedArray objects. 1687 defines: 1688 - floatArrayConstructors 1689 - nonClampedIntArrayConstructors 1690 - intArrayConstructors 1691 - typedArrayConstructors 1692 - TypedArray 1693 - testWithTypedArrayConstructors 1694 - nonAtomicsFriendlyTypedArrayConstructors 1695 - testWithAtomicsFriendlyTypedArrayConstructors 1696 - testWithNonAtomicsFriendlyTypedArrayConstructors 1697 - testTypedArrayConversions 1698 ---*/ 1699 1700 var floatArrayConstructors = [ 1701 Float64Array, 1702 Float32Array 1703 ]; 1704 1705 var nonClampedIntArrayConstructors = [ 1706 Int32Array, 1707 Int16Array, 1708 Int8Array, 1709 Uint32Array, 1710 Uint16Array, 1711 Uint8Array 1712 ]; 1713 1714 var intArrayConstructors = nonClampedIntArrayConstructors.concat([Uint8ClampedArray]); 1715 1716 // Float16Array is a newer feature 1717 // adding it to this list unconditionally would cause implementations lacking it to fail every test which uses it 1718 if (typeof Float16Array !== 'undefined') { 1719 floatArrayConstructors.push(Float16Array); 1720 } 1721 1722 /** 1723 * Array containing every non-bigint typed array constructor. 1724 */ 1725 1726 var typedArrayConstructors = floatArrayConstructors.concat(intArrayConstructors); 1727 1728 /** 1729 * The %TypedArray% intrinsic constructor function. 1730 */ 1731 var TypedArray = Object.getPrototypeOf(Int8Array); 1732 1733 /** 1734 * Callback for testing a typed array constructor. 1735 * 1736 * @callback typedArrayConstructorCallback 1737 * @param {Function} Constructor the constructor object to test with. 1738 */ 1739 1740 /** 1741 * Calls the provided function for every typed array constructor. 1742 * 1743 * @param {typedArrayConstructorCallback} f - the function to call for each typed array constructor. 1744 * @param {Array} selected - An optional Array with filtered typed arrays 1745 */ 1746 function testWithTypedArrayConstructors(f, selected) { 1747 var constructors = selected || typedArrayConstructors; 1748 for (var i = 0; i < constructors.length; ++i) { 1749 var constructor = constructors[i]; 1750 try { 1751 f(constructor); 1752 } catch (e) { 1753 e.message += " (Testing with " + constructor.name + ".)"; 1754 throw e; 1755 } 1756 } 1757 } 1758 1759 var nonAtomicsFriendlyTypedArrayConstructors = floatArrayConstructors.concat([Uint8ClampedArray]); 1760 /** 1761 * Calls the provided function for every non-"Atomics Friendly" typed array constructor. 1762 * 1763 * @param {typedArrayConstructorCallback} f - the function to call for each typed array constructor. 1764 * @param {Array} selected - An optional Array with filtered typed arrays 1765 */ 1766 function testWithNonAtomicsFriendlyTypedArrayConstructors(f) { 1767 testWithTypedArrayConstructors(f, nonAtomicsFriendlyTypedArrayConstructors); 1768 } 1769 1770 /** 1771 * Calls the provided function for every "Atomics Friendly" typed array constructor. 1772 * 1773 * @param {typedArrayConstructorCallback} f - the function to call for each typed array constructor. 1774 * @param {Array} selected - An optional Array with filtered typed arrays 1775 */ 1776 function testWithAtomicsFriendlyTypedArrayConstructors(f) { 1777 testWithTypedArrayConstructors(f, [ 1778 Int32Array, 1779 Int16Array, 1780 Int8Array, 1781 Uint32Array, 1782 Uint16Array, 1783 Uint8Array, 1784 ]); 1785 } 1786 1787 /** 1788 * Helper for conversion operations on TypedArrays, the expected values 1789 * properties are indexed in order to match the respective value for each 1790 * TypedArray constructor 1791 * @param {Function} fn - the function to call for each constructor and value. 1792 * will be called with the constructor, value, expected 1793 * value, and a initial value that can be used to avoid 1794 * a false positive with an equivalent expected value. 1795 */ 1796 function testTypedArrayConversions(byteConversionValues, fn) { 1797 var values = byteConversionValues.values; 1798 var expected = byteConversionValues.expected; 1799 1800 testWithTypedArrayConstructors(function(TA) { 1801 var name = TA.name.slice(0, -5); 1802 1803 return values.forEach(function(value, index) { 1804 var exp = expected[name][index]; 1805 var initial = 0; 1806 if (exp === 0) { 1807 initial = 1; 1808 } 1809 fn(TA, value, exp, initial); 1810 }); 1811 }); 1812 } 1813 1814 /** 1815 * Checks if the given argument is one of the float-based TypedArray constructors. 1816 * 1817 * @param {constructor} ctor - the value to check 1818 * @returns {boolean} 1819 */ 1820 function isFloatTypedArrayConstructor(arg) { 1821 return floatArrayConstructors.indexOf(arg) !== -1; 1822 } 1823 1824 /** 1825 * Determines the precision of the given float-based TypedArray constructor. 1826 * 1827 * @param {constructor} ctor - the value to check 1828 * @returns {string} "half", "single", or "double" for Float16Array, Float32Array, and Float64Array respectively. 1829 */ 1830 function floatTypedArrayConstructorPrecision(FA) { 1831 if (typeof Float16Array !== "undefined" && FA === Float16Array) { 1832 return "half"; 1833 } else if (FA === Float32Array) { 1834 return "single"; 1835 } else if (FA === Float64Array) { 1836 return "double"; 1837 } else { 1838 throw new Error("Malformed test - floatTypedArrayConstructorPrecision called with non-float TypedArray"); 1839 } 1840 } 1841 1842 // file: wellKnownIntrinsicObjects.js 1843 // Copyright (C) 2018 the V8 project authors. All rights reserved. 1844 // This code is governed by the BSD license found in the LICENSE file. 1845 /*--- 1846 description: | 1847 An Array of all representable Well-Known Intrinsic Objects 1848 defines: [WellKnownIntrinsicObjects, getWellKnownIntrinsicObject] 1849 ---*/ 1850 1851 const WellKnownIntrinsicObjects = [ 1852 { 1853 name: '%AggregateError%', 1854 source: 'AggregateError', 1855 }, 1856 { 1857 name: '%Array%', 1858 source: 'Array', 1859 }, 1860 { 1861 name: '%ArrayBuffer%', 1862 source: 'ArrayBuffer', 1863 }, 1864 { 1865 name: '%ArrayIteratorPrototype%', 1866 source: 'Object.getPrototypeOf([][Symbol.iterator]())', 1867 }, 1868 { 1869 // Not currently accessible to ECMAScript user code 1870 name: '%AsyncFromSyncIteratorPrototype%', 1871 source: '', 1872 }, 1873 { 1874 name: '%AsyncFunction%', 1875 source: '(async function() {}).constructor', 1876 }, 1877 { 1878 name: '%AsyncGeneratorFunction%', 1879 source: '(async function* () {}).constructor', 1880 }, 1881 { 1882 name: '%AsyncGeneratorPrototype%', 1883 source: 'Object.getPrototypeOf(async function* () {}).prototype', 1884 }, 1885 { 1886 name: '%AsyncIteratorPrototype%', 1887 source: 'Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype)', 1888 }, 1889 { 1890 name: '%Atomics%', 1891 source: 'Atomics', 1892 }, 1893 { 1894 name: '%BigInt%', 1895 source: 'BigInt', 1896 }, 1897 { 1898 name: '%BigInt64Array%', 1899 source: 'BigInt64Array', 1900 }, 1901 { 1902 name: '%BigUint64Array%', 1903 source: 'BigUint64Array', 1904 }, 1905 { 1906 name: '%Boolean%', 1907 source: 'Boolean', 1908 }, 1909 { 1910 name: '%DataView%', 1911 source: 'DataView', 1912 }, 1913 { 1914 name: '%Date%', 1915 source: 'Date', 1916 }, 1917 { 1918 name: '%decodeURI%', 1919 source: 'decodeURI', 1920 }, 1921 { 1922 name: '%decodeURIComponent%', 1923 source: 'decodeURIComponent', 1924 }, 1925 { 1926 name: '%encodeURI%', 1927 source: 'encodeURI', 1928 }, 1929 { 1930 name: '%encodeURIComponent%', 1931 source: 'encodeURIComponent', 1932 }, 1933 { 1934 name: '%Error%', 1935 source: 'Error', 1936 }, 1937 { 1938 name: '%eval%', 1939 source: 'eval', 1940 }, 1941 { 1942 name: '%EvalError%', 1943 source: 'EvalError', 1944 }, 1945 { 1946 name: '%FinalizationRegistry%', 1947 source: 'FinalizationRegistry', 1948 }, 1949 { 1950 name: '%Float32Array%', 1951 source: 'Float32Array', 1952 }, 1953 { 1954 name: '%Float64Array%', 1955 source: 'Float64Array', 1956 }, 1957 { 1958 // Not currently accessible to ECMAScript user code 1959 name: '%ForInIteratorPrototype%', 1960 source: '', 1961 }, 1962 { 1963 name: '%Function%', 1964 source: 'Function', 1965 }, 1966 { 1967 name: '%GeneratorFunction%', 1968 source: '(function* () {}).constructor', 1969 }, 1970 { 1971 name: '%GeneratorPrototype%', 1972 source: 'Object.getPrototypeOf(function * () {}).prototype', 1973 }, 1974 { 1975 name: '%Int8Array%', 1976 source: 'Int8Array', 1977 }, 1978 { 1979 name: '%Int16Array%', 1980 source: 'Int16Array', 1981 }, 1982 { 1983 name: '%Int32Array%', 1984 source: 'Int32Array', 1985 }, 1986 { 1987 name: '%isFinite%', 1988 source: 'isFinite', 1989 }, 1990 { 1991 name: '%isNaN%', 1992 source: 'isNaN', 1993 }, 1994 { 1995 name: '%Iterator%', 1996 source: 'typeof Iterator !== "undefined" ? Iterator : Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())).constructor', 1997 }, 1998 { 1999 name: '%IteratorHelperPrototype%', 2000 source: 'Object.getPrototypeOf(Iterator.from([]).drop(0))', 2001 }, 2002 { 2003 name: '%JSON%', 2004 source: 'JSON', 2005 }, 2006 { 2007 name: '%Map%', 2008 source: 'Map', 2009 }, 2010 { 2011 name: '%MapIteratorPrototype%', 2012 source: 'Object.getPrototypeOf(new Map()[Symbol.iterator]())', 2013 }, 2014 { 2015 name: '%Math%', 2016 source: 'Math', 2017 }, 2018 { 2019 name: '%Number%', 2020 source: 'Number', 2021 }, 2022 { 2023 name: '%Object%', 2024 source: 'Object', 2025 }, 2026 { 2027 name: '%parseFloat%', 2028 source: 'parseFloat', 2029 }, 2030 { 2031 name: '%parseInt%', 2032 source: 'parseInt', 2033 }, 2034 { 2035 name: '%Promise%', 2036 source: 'Promise', 2037 }, 2038 { 2039 name: '%Proxy%', 2040 source: 'Proxy', 2041 }, 2042 { 2043 name: '%RangeError%', 2044 source: 'RangeError', 2045 }, 2046 { 2047 name: '%ReferenceError%', 2048 source: 'ReferenceError', 2049 }, 2050 { 2051 name: '%Reflect%', 2052 source: 'Reflect', 2053 }, 2054 { 2055 name: '%RegExp%', 2056 source: 'RegExp', 2057 }, 2058 { 2059 name: '%RegExpStringIteratorPrototype%', 2060 source: 'Object.getPrototypeOf(RegExp.prototype[Symbol.matchAll](""))', 2061 }, 2062 { 2063 name: '%Set%', 2064 source: 'Set', 2065 }, 2066 { 2067 name: '%SetIteratorPrototype%', 2068 source: 'Object.getPrototypeOf(new Set()[Symbol.iterator]())', 2069 }, 2070 { 2071 name: '%SharedArrayBuffer%', 2072 source: 'SharedArrayBuffer', 2073 }, 2074 { 2075 name: '%String%', 2076 source: 'String', 2077 }, 2078 { 2079 name: '%StringIteratorPrototype%', 2080 source: 'Object.getPrototypeOf(new String()[Symbol.iterator]())', 2081 }, 2082 { 2083 name: '%Symbol%', 2084 source: 'Symbol', 2085 }, 2086 { 2087 name: '%SyntaxError%', 2088 source: 'SyntaxError', 2089 }, 2090 { 2091 name: '%ThrowTypeError%', 2092 source: '(function() { "use strict"; return Object.getOwnPropertyDescriptor(arguments, "callee").get })()', 2093 }, 2094 { 2095 name: '%TypedArray%', 2096 source: 'Object.getPrototypeOf(Uint8Array)', 2097 }, 2098 { 2099 name: '%TypeError%', 2100 source: 'TypeError', 2101 }, 2102 { 2103 name: '%Uint8Array%', 2104 source: 'Uint8Array', 2105 }, 2106 { 2107 name: '%Uint8ClampedArray%', 2108 source: 'Uint8ClampedArray', 2109 }, 2110 { 2111 name: '%Uint16Array%', 2112 source: 'Uint16Array', 2113 }, 2114 { 2115 name: '%Uint32Array%', 2116 source: 'Uint32Array', 2117 }, 2118 { 2119 name: '%URIError%', 2120 source: 'URIError', 2121 }, 2122 { 2123 name: '%WeakMap%', 2124 source: 'WeakMap', 2125 }, 2126 { 2127 name: '%WeakRef%', 2128 source: 'WeakRef', 2129 }, 2130 { 2131 name: '%WeakSet%', 2132 source: 'WeakSet', 2133 }, 2134 { 2135 name: '%WrapForValidIteratorPrototype%', 2136 source: 'Object.getPrototypeOf(Iterator.from({ [Symbol.iterator](){ return {}; } }))', 2137 }, 2138 2139 // Extensions to well-known intrinsic objects. 2140 // 2141 // https://tc39.es/ecma262/#sec-additional-properties-of-the-global-object 2142 { 2143 name: "%escape%", 2144 source: "escape", 2145 }, 2146 { 2147 name: "%unescape%", 2148 source: "unescape", 2149 }, 2150 2151 // Extensions to well-known intrinsic objects. 2152 // 2153 // https://tc39.es/ecma402/#sec-402-well-known-intrinsic-objects 2154 { 2155 name: "%Intl%", 2156 source: "Intl", 2157 }, 2158 { 2159 name: "%Intl.Collator%", 2160 source: "Intl.Collator", 2161 }, 2162 { 2163 name: "%Intl.DateTimeFormat%", 2164 source: "Intl.DateTimeFormat", 2165 }, 2166 { 2167 name: "%Intl.DisplayNames%", 2168 source: "Intl.DisplayNames", 2169 }, 2170 { 2171 name: "%Intl.DurationFormat%", 2172 source: "Intl.DurationFormat", 2173 }, 2174 { 2175 name: "%Intl.ListFormat%", 2176 source: "Intl.ListFormat", 2177 }, 2178 { 2179 name: "%Intl.Locale%", 2180 source: "Intl.Locale", 2181 }, 2182 { 2183 name: "%Intl.NumberFormat%", 2184 source: "Intl.NumberFormat", 2185 }, 2186 { 2187 name: "%Intl.PluralRules%", 2188 source: "Intl.PluralRules", 2189 }, 2190 { 2191 name: "%Intl.RelativeTimeFormat%", 2192 source: "Intl.RelativeTimeFormat", 2193 }, 2194 { 2195 name: "%Intl.Segmenter%", 2196 source: "Intl.Segmenter", 2197 }, 2198 { 2199 name: "%IntlSegmentIteratorPrototype%", 2200 source: "Object.getPrototypeOf(new Intl.Segmenter().segment()[Symbol.iterator]())", 2201 }, 2202 { 2203 name: "%IntlSegmentsPrototype%", 2204 source: "Object.getPrototypeOf(new Intl.Segmenter().segment())", 2205 }, 2206 2207 // Extensions to well-known intrinsic objects. 2208 // 2209 // https://tc39.es/proposal-temporal/#sec-well-known-intrinsic-objects 2210 { 2211 name: "%Temporal%", 2212 source: "Temporal", 2213 }, 2214 ]; 2215 2216 WellKnownIntrinsicObjects.forEach((wkio) => { 2217 var actual; 2218 2219 try { 2220 actual = new Function("return " + wkio.source)(); 2221 } catch (exception) { 2222 // Nothing to do here. 2223 } 2224 2225 wkio.value = actual; 2226 }); 2227 2228 /** 2229 * Returns a well-known intrinsic object, if the implementation provides it. 2230 * Otherwise, throws. 2231 * @param {string} key - the specification's name for the intrinsic, for example 2232 * "%Array%" 2233 * @returns {object} the well-known intrinsic object. 2234 */ 2235 function getWellKnownIntrinsicObject(key) { 2236 for (var ix = 0; ix < WellKnownIntrinsicObjects.length; ix++) { 2237 if (WellKnownIntrinsicObjects[ix].name === key) { 2238 var value = WellKnownIntrinsicObjects[ix].value; 2239 if (value !== undefined) 2240 return value; 2241 throw new Test262Error('this implementation could not obtain ' + key); 2242 } 2243 } 2244 throw new Test262Error('unknown well-known intrinsic ' + key); 2245 }