diff --git a/node_modules/.bin/resolve b/node_modules/.bin/resolve
new file mode 120000
index 000000000..b6afda6c7
--- /dev/null
+++ b/node_modules/.bin/resolve
@@ -0,0 +1 @@
+../resolve/bin/resolve
\ No newline at end of file
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
index 2b56d07fa..0703cd3e0 100644
--- a/node_modules/.package-lock.json
+++ b/node_modules/.package-lock.json
@@ -779,7 +779,8 @@
},
"node_modules/@types/json5": {
"version": "0.0.29",
- "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
"dev": true
},
"node_modules/@types/node": {
@@ -986,6 +987,7 @@
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.2.tgz",
"integrity": "sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==",
"dev": true,
+ "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "5.48.2",
"@typescript-eslint/types": "5.48.2",
@@ -1293,16 +1295,16 @@
}
},
"node_modules/array-includes": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz",
- "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==",
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
+ "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.2",
- "get-intrinsic": "^1.1.1",
- "is-string": "^1.0.5"
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "get-intrinsic": "^1.1.3",
+ "is-string": "^1.0.7"
},
"engines": {
"node": ">= 0.4"
@@ -1319,14 +1321,33 @@
}
},
"node_modules/array.prototype.flat": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz",
- "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
+ "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.1"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
+ "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-shim-unscopables": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -1618,6 +1639,18 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.0",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
@@ -2003,15 +2036,19 @@
"dev": true
},
"node_modules/define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
"dev": true,
"dependencies": {
- "object-keys": "^1.0.12"
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/del": {
@@ -2112,36 +2149,45 @@
"node": ">=8.6"
}
},
- "node_modules/error-ex": {
- "version": "1.3.2",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
"node_modules/es-abstract": {
- "version": "1.18.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz",
- "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==",
+ "version": "1.21.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz",
+ "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==",
"dev": true,
"dependencies": {
+ "available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.1",
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
- "get-intrinsic": "^1.1.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.1.3",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
"has": "^1.0.3",
- "has-symbols": "^1.0.2",
- "is-callable": "^1.2.3",
- "is-negative-zero": "^2.0.1",
- "is-regex": "^1.1.3",
- "is-string": "^1.0.6",
- "object-inspect": "^1.10.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.4",
+ "is-array-buffer": "^3.0.1",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.10",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.2",
"object-keys": "^1.1.1",
- "object.assign": "^4.1.2",
- "string.prototype.trimend": "^1.0.4",
- "string.prototype.trimstart": "^1.0.4",
- "unbox-primitive": "^1.0.1"
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.4.3",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trimend": "^1.0.6",
+ "string.prototype.trimstart": "^1.0.6",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.9"
},
"engines": {
"node": ">= 0.4"
@@ -2150,6 +2196,29 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
+ "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ }
+ },
"node_modules/es-to-primitive": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
@@ -2254,13 +2323,14 @@
}
},
"node_modules/eslint-import-resolver-node": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.5.tgz",
- "integrity": "sha512-XMoPKjSpXbkeJ7ZZ9icLnJMTY5Mc1kZbCakHquaFsXPpyWOwK0TK6CODO+0ca54UoM9LKOxyUNnoVZRl8TeaAg==",
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz",
+ "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==",
"dev": true,
"dependencies": {
"debug": "^3.2.7",
- "resolve": "^1.20.0"
+ "is-core-module": "^2.11.0",
+ "resolve": "^1.22.1"
}
},
"node_modules/eslint-import-resolver-node/node_modules/debug": {
@@ -2273,16 +2343,20 @@
}
},
"node_modules/eslint-module-utils": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz",
- "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==",
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz",
+ "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==",
"dev": true,
"dependencies": {
- "debug": "^3.2.7",
- "pkg-dir": "^2.0.0"
+ "debug": "^3.2.7"
},
"engines": {
"node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
}
},
"node_modules/eslint-module-utils/node_modules/debug": {
@@ -2294,85 +2368,6 @@
"ms": "^2.1.1"
}
},
- "node_modules/eslint-module-utils/node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "dependencies": {
- "locate-path": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "dependencies": {
- "p-try": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "dependencies": {
- "p-limit": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/pkg-dir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
- "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
- "dev": true,
- "dependencies": {
- "find-up": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/eslint-plugin-eslint-comments": {
"version": "3.2.0",
"integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==",
@@ -2574,112 +2569,50 @@
}
},
"node_modules/eslint-plugin-import": {
- "version": "2.24.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.0.tgz",
- "integrity": "sha512-Kc6xqT9hiYi2cgybOc0I2vC9OgAYga5o/rAFinam/yF/t5uBqxQbauNPMC6fgb640T/89P0gFoO27FOilJ/Cqg==",
+ "version": "2.27.5",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz",
+ "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==",
"dev": true,
"dependencies": {
- "array-includes": "^3.1.3",
- "array.prototype.flat": "^1.2.4",
- "debug": "^2.6.9",
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "array.prototype.flatmap": "^1.3.1",
+ "debug": "^3.2.7",
"doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.5",
- "eslint-module-utils": "^2.6.2",
- "find-up": "^2.0.0",
+ "eslint-import-resolver-node": "^0.3.7",
+ "eslint-module-utils": "^2.7.4",
"has": "^1.0.3",
- "is-core-module": "^2.4.0",
- "minimatch": "^3.0.4",
- "object.values": "^1.1.3",
- "pkg-up": "^2.0.0",
- "read-pkg-up": "^3.0.0",
- "resolve": "^1.20.0",
- "tsconfig-paths": "^3.9.0"
+ "is-core-module": "^2.11.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.values": "^1.1.6",
+ "resolve": "^1.22.1",
+ "semver": "^6.3.0",
+ "tsconfig-paths": "^3.14.1"
},
"engines": {
"node": ">=4"
},
"peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0"
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
}
},
"node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "dependencies": {
- "locate-path": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/ms": {
- "version": "2.0.0",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "node_modules/eslint-plugin-import/node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "dependencies": {
- "p-try": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
"dependencies": {
- "p-limit": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "ms": "^2.1.1"
}
},
- "node_modules/eslint-plugin-import/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
- "engines": {
- "node": ">=4"
+ "bin": {
+ "semver": "bin/semver.js"
}
},
"node_modules/eslint-plugin-no-async-foreach": {
@@ -3179,6 +3112,15 @@
"integrity": "sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==",
"dev": true
},
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
"node_modules/form-data": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
@@ -3220,11 +3162,38 @@
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
+ "node_modules/function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/functional-red-black-tree": {
"version": "1.0.1",
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/gar": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/gar/-/gar-1.0.4.tgz",
@@ -3252,14 +3221,30 @@
}
},
"node_modules/get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
- "has-symbols": "^1.0.1"
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3329,6 +3314,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/globby": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
@@ -3348,6 +3348,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
@@ -3366,9 +3378,9 @@
}
},
"node_modules/has-bigints": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
- "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3382,38 +3394,72 @@
"node": ">=4"
}
},
- "node_modules/has-symbols": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
"dev": true,
- "engines": {
- "node": ">= 0.4"
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/hosted-git-info": {
- "version": "2.8.9",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
"dev": true,
"engines": {
- "node": ">=10.17.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
"engines": {
- "node": ">= 4"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "engines": {
+ "node": ">= 4"
}
},
"node_modules/ignore-by-default": {
@@ -3477,6 +3523,20 @@
"version": "2.0.3",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
+ "node_modules/internal-slot": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz",
+ "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/ip-regex": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
@@ -3494,16 +3554,28 @@
"node": ">=8"
}
},
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
+ "node_modules/is-array-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz",
+ "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-typed-array": "^1.1.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/is-bigint": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz",
- "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
"dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -3521,12 +3593,13 @@
}
},
"node_modules/is-boolean-object": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz",
- "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2"
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -3540,9 +3613,9 @@
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"node_modules/is-callable": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz",
- "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==",
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -3552,9 +3625,9 @@
}
},
"node_modules/is-core-module": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz",
- "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
+ "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
@@ -3564,10 +3637,13 @@
}
},
"node_modules/is-date-object": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz",
- "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -3607,9 +3683,9 @@
}
},
"node_modules/is-negative-zero": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
- "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -3626,10 +3702,13 @@
}
},
"node_modules/is-number-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz",
- "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
"dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -3668,13 +3747,13 @@
"dev": true
},
"node_modules/is-regex": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz",
- "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
- "has-symbols": "^1.0.2"
+ "has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -3683,6 +3762,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
@@ -3696,10 +3787,13 @@
}
},
"node_modules/is-string": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz",
- "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -3722,6 +3816,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-typed-array": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
+ "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-unicode-supported": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.2.0.tgz",
@@ -3734,6 +3847,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
@@ -3772,11 +3897,6 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/json-parse-better-errors": {
- "version": "1.0.2",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -3794,8 +3914,9 @@
"dev": true
},
"node_modules/json5": {
- "version": "1.0.1",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
"dependencies": {
"minimist": "^1.2.0"
@@ -4078,10 +4199,13 @@
}
},
"node_modules/minimist": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
- "dev": true
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
+ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/ms": {
"version": "2.1.2",
@@ -4155,25 +4279,6 @@
"node": ">=12.19"
}
},
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -4196,9 +4301,9 @@
}
},
"node_modules/object-inspect": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
- "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -4214,14 +4319,14 @@
}
},
"node_modules/object.assign": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
"object-keys": "^1.1.1"
},
"engines": {
@@ -4232,14 +4337,14 @@
}
},
"node_modules/object.values": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz",
- "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==",
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
+ "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.2"
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
},
"engines": {
"node": ">= 0.4"
@@ -4377,18 +4482,6 @@
"node": ">=6"
}
},
- "node_modules/parse-json": {
- "version": "4.0.0",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/parse-ms": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
@@ -4480,85 +4573,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
- "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
- "dev": true,
- "dependencies": {
- "find-up": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/pkg-up/node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "dependencies": {
- "locate-path": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/pkg-up/node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/pkg-up/node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "dependencies": {
- "p-try": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/pkg-up/node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "dependencies": {
- "p-limit": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/pkg-up/node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/pkg-up/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/plur": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz",
@@ -4657,146 +4671,33 @@
"node": ">=6"
}
},
- "node_modules/read-pkg-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
- "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
- "dev": true,
- "dependencies": {
- "find-up": "^2.0.0",
- "read-pkg": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "dependencies": {
- "locate-path": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "dependencies": {
- "p-try": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "dependencies": {
- "p-limit": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"dependencies": {
- "pify": "^3.0.0"
+ "picomatch": "^2.2.1"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node": ">=8.10.0"
}
},
- "node_modules/read-pkg-up/node_modules/read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
"dev": true,
"dependencies": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "functions-have-names": "^1.2.2"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
+ "node": ">= 0.4"
},
- "engines": {
- "node": ">=8.10.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/regexpp": {
@@ -4850,13 +4751,17 @@
}
},
"node_modules/resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
"dev": true,
"dependencies": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
+ "is-core-module": "^2.9.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -4927,6 +4832,20 @@
"version": "1.1.9",
"integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q=="
},
+ "node_modules/safe-regex-test": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
+ "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
@@ -4994,6 +4913,20 @@
"node": ">=8"
}
},
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
@@ -5095,34 +5028,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/spdx-correct": {
- "version": "3.1.0",
- "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
- "dev": true,
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.0",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
- "dev": true,
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.5",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
- "dev": true
- },
"node_modules/sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -5165,26 +5070,28 @@
}
},
"node_modules/string.prototype.trimend": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
- "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
+ "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trimstart": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
- "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
+ "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -5204,7 +5111,8 @@
},
"node_modules/strip-bom": {
"version": "3.0.0",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
"engines": {
"node": ">=4"
@@ -5306,6 +5214,18 @@
"node": ">=4"
}
},
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/svg-element-attributes": {
"version": "1.3.1",
"integrity": "sha512-Bh05dSOnJBf3miNMqpsormfNtfidA/GxQVakhtn0T4DECWKeXQRQUceYjJ+OxYiiLdGe4Jo9iFV8wICFapFeIA==",
@@ -5479,13 +5399,14 @@
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
},
"node_modules/tsconfig-paths": {
- "version": "3.9.0",
- "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==",
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
+ "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
"dev": true,
"dependencies": {
"@types/json5": "^0.0.29",
"json5": "^1.0.1",
- "minimist": "^1.2.0",
+ "minimist": "^1.2.6",
"strip-bom": "^3.0.0"
}
},
@@ -5548,6 +5469,20 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/typescript": {
"version": "4.9.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
@@ -5562,14 +5497,14 @@
}
},
"node_modules/unbox-primitive": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
- "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "has-bigints": "^1.0.1",
- "has-symbols": "^1.0.2",
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
"which-boxed-primitive": "^1.0.2"
},
"funding": {
@@ -5616,15 +5551,6 @@
"integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==",
"dev": true
},
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -5679,6 +5605,26 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/which-typed-array": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
+ "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/word-wrap": {
"version": "1.2.3",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
diff --git a/node_modules/@types/semver/package.json b/node_modules/@types/semver/package.json
index f848eab7e..641362ae2 100755
--- a/node_modules/@types/semver/package.json
+++ b/node_modules/@types/semver/package.json
@@ -1,50 +1,50 @@
{
- "name": "@types/semver",
- "version": "7.3.13",
- "description": "TypeScript definitions for semver",
- "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/semver",
- "license": "MIT",
- "contributors": [
- {
- "name": "Bart van der Schoor",
- "url": "https://github.com/Bartvds",
- "githubUsername": "Bartvds"
- },
- {
- "name": "BendingBender",
- "url": "https://github.com/BendingBender",
- "githubUsername": "BendingBender"
- },
- {
- "name": "Lucian Buzzo",
- "url": "https://github.com/LucianBuzzo",
- "githubUsername": "LucianBuzzo"
- },
- {
- "name": "Klaus Meinhardt",
- "url": "https://github.com/ajafff",
- "githubUsername": "ajafff"
- },
- {
- "name": "ExE Boss",
- "url": "https://github.com/ExE-Boss",
- "githubUsername": "ExE-Boss"
- },
- {
- "name": "Piotr Błażejewicz",
- "url": "https://github.com/peterblazejewicz",
- "githubUsername": "peterblazejewicz"
- }
- ],
- "main": "",
- "types": "index.d.ts",
- "repository": {
- "type": "git",
- "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
- "directory": "types/semver"
+ "name": "@types/semver",
+ "version": "7.3.13",
+ "description": "TypeScript definitions for semver",
+ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/semver",
+ "license": "MIT",
+ "contributors": [
+ {
+ "name": "Bart van der Schoor",
+ "url": "https://github.com/Bartvds",
+ "githubUsername": "Bartvds"
},
- "scripts": {},
- "dependencies": {},
- "typesPublisherContentHash": "5443a0792891f230352efbc23f545699de0ce8eef9fe3e28cefd36a3fe993eb6",
- "typeScriptVersion": "4.1"
+ {
+ "name": "BendingBender",
+ "url": "https://github.com/BendingBender",
+ "githubUsername": "BendingBender"
+ },
+ {
+ "name": "Lucian Buzzo",
+ "url": "https://github.com/LucianBuzzo",
+ "githubUsername": "LucianBuzzo"
+ },
+ {
+ "name": "Klaus Meinhardt",
+ "url": "https://github.com/ajafff",
+ "githubUsername": "ajafff"
+ },
+ {
+ "name": "ExE Boss",
+ "url": "https://github.com/ExE-Boss",
+ "githubUsername": "ExE-Boss"
+ },
+ {
+ "name": "Piotr Błażejewicz",
+ "url": "https://github.com/peterblazejewicz",
+ "githubUsername": "peterblazejewicz"
+ }
+ ],
+ "main": "",
+ "types": "index.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+ "directory": "types/semver"
+ },
+ "scripts": {},
+ "dependencies": {},
+ "typesPublisherContentHash": "5443a0792891f230352efbc23f545699de0ce8eef9fe3e28cefd36a3fe993eb6",
+ "typeScriptVersion": "4.1"
}
\ No newline at end of file
diff --git a/node_modules/array-includes/.eslintrc b/node_modules/array-includes/.eslintrc
index 0df206d50..540ac8ebf 100644
--- a/node_modules/array-includes/.eslintrc
+++ b/node_modules/array-includes/.eslintrc
@@ -4,10 +4,17 @@
"extends": "@ljharb",
"rules": {
- "complexity": 0,
"id-length": [2, { "min": 1, "max": 26 }],
- "max-statements": [2, 14],
- "new-cap": [2, { capIsNewExceptions: ["GetIntrinsic", "ToObject", "ToInteger", "ToLength", "SameValueZero", "RequireObjectCoercible"] }],
+ "new-cap": [2, {
+ "capIsNewExceptions": [
+ "GetIntrinsic",
+ "ToObject",
+ "ToIntegerOrInfinity",
+ "ToLength",
+ "SameValueZero",
+ "RequireObjectCoercible",
+ ],
+ }],
},
"overrides": [
diff --git a/node_modules/array-includes/.nycrc b/node_modules/array-includes/.nycrc
index 1826526e0..bdd626ce9 100644
--- a/node_modules/array-includes/.nycrc
+++ b/node_modules/array-includes/.nycrc
@@ -2,10 +2,6 @@
"all": true,
"check-coverage": false,
"reporter": ["text-summary", "text", "html", "json"],
- "lines": 86,
- "statements": 85.93,
- "functions": 82.43,
- "branches": 76.06,
"exclude": [
"coverage",
"test"
diff --git a/node_modules/array-includes/CHANGELOG.md b/node_modules/array-includes/CHANGELOG.md
index 7e8a56ebf..eaefc2c9a 100644
--- a/node_modules/array-includes/CHANGELOG.md
+++ b/node_modules/array-includes/CHANGELOG.md
@@ -1,3 +1,42 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v3.1.6](https://github.com/es-shims/array-includes/compare/v3.1.5...v3.1.6) - 2022-11-07
+
+### Commits
+
+- [meta] add `auto-changelog` [`c5fbe72`](https://github.com/es-shims/array-includes/commit/c5fbe728395deff641d756cc9d398a949076c180)
+- [meta] use `npmignore` to autogenerate an npmignore file [`dbd6dc8`](https://github.com/es-shims/array-includes/commit/dbd6dc8f8906cca6b0b493e308686c4fd05bea15)
+- [Deps] update `es-abstract`, `get-intrinsic` [`b819e3b`](https://github.com/es-shims/array-includes/commit/b819e3b3dd1adce0b3359529b0276a416efce351)
+- [actions] update rebase action to use reusable workflow [`6e241d5`](https://github.com/es-shims/array-includes/commit/6e241d5177513cfb0261d0fbe0c8c98daf5c5eab)
+- [Dev Deps] update `aud`, `tape` [`9b2a931`](https://github.com/es-shims/array-includes/commit/9b2a931aee6fc8195a349c6fe7894445a911223f)
+- [readme] note that FF 102+ no longer needs this package [`0a0c758`](https://github.com/es-shims/array-includes/commit/0a0c758ed52808428314ffe53ea8278297170c84)
+
+
+
+3.1.5 / 2022-05-03
+=================
+ * [Fix] install polyfill on FF 99+
+ * [Deps] update `define-properties`, `es-abstract`
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`, `aud`, `functions-have-names`, `safe-publish-latest`, `tape`
+ * [actions] reuse common workflows
+ * [actions] update codecov uploader
+
+3.1.4 / 2021-10-04
+=================
+ * [Robustness] avoid a runtime `Math.max` call
+ * [readme] add github actions/codecov badges
+ * [readme] fix repo URLs; remove travis badge
+ * [Deps] update `es-abstract`, `is-string`
+ * [meta] use `prepublishOnly` script for npm 7+
+ * [actions] update workflows
+ * [actions] use `node/install` instead of `node/run`; use `codecov` action
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`, `aud`, `tape`
+
3.1.3 / 2021-02-20
=================
* [Deps] update `call-bind`, `es-abstract`, `get-intrinsic`
diff --git a/node_modules/array-includes/README.md b/node_modules/array-includes/README.md
index fb8758798..525c2a2dd 100644
--- a/node_modules/array-includes/README.md
+++ b/node_modules/array-includes/README.md
@@ -1,6 +1,7 @@
# array-includes [![Version Badge][npm-version-svg]][package-url]
-[![Build Status][travis-svg]][travis-url]
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
[![dependency status][deps-svg]][deps-url]
[![dev dependency status][dev-deps-svg]][dev-deps-url]
[![License][license-image]][license-url]
@@ -10,10 +11,18 @@
An ES7/ES2016 spec-compliant `Array.prototype.includes` shim/polyfill/replacement that works as far down as ES3.
-This package implements the [es-shim API](https://github.com/es-shims/api) interface. It works in an ES3-supported environment and complies with the proposed [spec](http://www.ecma-international.org/ecma-262/6.0/).
+This package implements the [es-shim API](https://github.com/es-shims/api) interface. It works in an ES3-supported environment and complies with the proposed [spec](https://262.ecma-international.org/6.0/).
Because `Array.prototype.includes` depends on a receiver (the `this` value), the main export takes the array to operate on as the first argument.
+Engines that need this package include:
+ - IE (all versions)
+ - Safari < 9
+ - Firefox < 43, and 99-101
+ - Chrome < 47
+ - Edge < 14
+ - node < 6
+
## Getting started
```sh
@@ -80,15 +89,17 @@ assert.equal(arr.includes(1, 'foo'), includes(arr, 1, 'foo'));
Simply clone the repo, `npm install`, and run `npm test`
[package-url]: https://npmjs.org/package/array-includes
-[npm-version-svg]: http://versionbadg.es/es-shims/array-includes.svg
-[travis-svg]: https://travis-ci.org/es-shims/array-includes.svg
-[travis-url]: https://travis-ci.org/es-shims/array-includes
+[npm-version-svg]: https://versionbadg.es/es-shims/array-includes.svg
[deps-svg]: https://david-dm.org/es-shims/array-includes.svg
[deps-url]: https://david-dm.org/es-shims/array-includes
[dev-deps-svg]: https://david-dm.org/es-shims/array-includes/dev-status.svg
[dev-deps-url]: https://david-dm.org/es-shims/array-includes#info=devDependencies
[npm-badge-png]: https://nodei.co/npm/array-includes.png?downloads=true&stars=true
-[license-image]: http://img.shields.io/npm/l/array-includes.svg
+[license-image]: https://img.shields.io/npm/l/array-includes.svg
[license-url]: LICENSE
-[downloads-image]: http://img.shields.io/npm/dm/array-includes.svg
-[downloads-url]: http://npm-stat.com/charts.html?package=array-includes
+[downloads-image]: https://img.shields.io/npm/dm/array-includes.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=array-includes
+[codecov-image]: https://codecov.io/gh/es-shims/array-includes/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/es-shims/array-includes/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/array-includes
+[actions-url]: https://github.com/es-shims/array-includes/actions
diff --git a/node_modules/array-includes/implementation.js b/node_modules/array-includes/implementation.js
index 7823d5a59..224ecbb0d 100644
--- a/node_modules/array-includes/implementation.js
+++ b/node_modules/array-includes/implementation.js
@@ -1,9 +1,9 @@
'use strict';
-var ToInteger = require('es-abstract/2020/ToInteger');
-var ToLength = require('es-abstract/2020/ToLength');
-var ToObject = require('es-abstract/2020/ToObject');
-var SameValueZero = require('es-abstract/2020/SameValueZero');
+var ToIntegerOrInfinity = require('es-abstract/2022/ToIntegerOrInfinity');
+var ToLength = require('es-abstract/2022/ToLength');
+var ToObject = require('es-abstract/2022/ToObject');
+var SameValueZero = require('es-abstract/2022/SameValueZero');
var $isNaN = require('es-abstract/helpers/isNaN');
var $isFinite = require('es-abstract/helpers/isFinite');
var GetIntrinsic = require('get-intrinsic');
@@ -12,9 +12,10 @@ var isString = require('is-string');
var $charAt = callBound('String.prototype.charAt');
var $indexOf = GetIntrinsic('%Array.prototype.indexOf%'); // TODO: use callBind.apply without breaking IE 8
+var $max = GetIntrinsic('%Math.max%');
module.exports = function includes(searchElement) {
- var fromIndex = arguments.length > 1 ? ToInteger(arguments[1]) : 0;
+ var fromIndex = arguments.length > 1 ? ToIntegerOrInfinity(arguments[1]) : 0;
if ($indexOf && !$isNaN(searchElement) && $isFinite(fromIndex) && typeof searchElement !== 'undefined') {
return $indexOf.apply(this, arguments) > -1;
}
@@ -24,7 +25,7 @@ module.exports = function includes(searchElement) {
if (length === 0) {
return false;
}
- var k = fromIndex >= 0 ? fromIndex : Math.max(0, length + fromIndex);
+ var k = fromIndex >= 0 ? fromIndex : $max(0, length + fromIndex);
while (k < length) {
if (SameValueZero(searchElement, isString(O) ? $charAt(O, k) : O[k])) {
return true;
diff --git a/node_modules/array-includes/index.js b/node_modules/array-includes/index.js
index bed832e4b..1ecb33102 100644
--- a/node_modules/array-includes/index.js
+++ b/node_modules/array-includes/index.js
@@ -1,7 +1,7 @@
'use strict';
var define = require('define-properties');
-var RequireObjectCoercible = require('es-abstract/2020/RequireObjectCoercible');
+var RequireObjectCoercible = require('es-abstract/2022/RequireObjectCoercible');
var callBind = require('call-bind');
var callBound = require('call-bind/callBound');
diff --git a/node_modules/array-includes/package.json b/node_modules/array-includes/package.json
index aa5c91b45..fe6ad1749 100644
--- a/node_modules/array-includes/package.json
+++ b/node_modules/array-includes/package.json
@@ -1,6 +1,6 @@
{
"name": "array-includes",
- "version": "3.1.3",
+ "version": "3.1.6",
"author": {
"name": "Jordan Harband",
"email": "ljharb@gmail.com",
@@ -20,13 +20,18 @@
"license": "MIT",
"main": "index.js",
"scripts": {
- "prepublish": "safe-publish-latest",
- "pretest": "npm run --silent lint && evalmd README.md",
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prepublishOnly": "safe-publish-latest",
+ "pretest": "npm run --silent lint",
"test": "npm run --silent tests-only",
- "posttest": "npx aud --production",
+ "posttest": "aud --production",
"tests-only": "nyc tape 'test/**/*.js'",
- "lint": "eslint .",
- "postlint": "es-shim-api --bound"
+ "prelint": "evalmd README.md",
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "es-shim-api --bound",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
},
"repository": {
"type": "git",
@@ -45,25 +50,27 @@
],
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.2",
- "get-intrinsic": "^1.1.1",
- "is-string": "^1.0.5"
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "get-intrinsic": "^1.1.3",
+ "is-string": "^1.0.7"
},
"devDependencies": {
- "@es-shims/api": "^2.1.2",
- "@ljharb/eslint-config": "^17.5.1",
- "aud": "^1.1.4",
- "eslint": "^7.20.0",
- "evalmd": "0.0.19",
- "foreach": "^2.0.5",
+ "@es-shims/api": "^2.2.3",
+ "@ljharb/eslint-config": "^21.0.0",
+ "aud": "^2.0.1",
+ "auto-changelog": "^2.4.0",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
"function-bind": "^1.1.1",
- "functions-have-names": "^1.2.2",
+ "functions-have-names": "^1.2.3",
"has-strict-mode": "^1.0.1",
+ "in-publish": "^2.0.1",
"indexof": "^0.0.1",
+ "npmignore": "^0.3.0",
"nyc": "^10.3.2",
- "safe-publish-latest": "^1.1.4",
- "tape": "^5.2.0"
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.6.1"
},
"testling": {
"files": [
@@ -89,5 +96,19 @@
},
"engines": {
"node": ">= 0.4"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true,
+ "startingVersion": "3.1.6"
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
}
}
diff --git a/node_modules/array-includes/polyfill.js b/node_modules/array-includes/polyfill.js
index dfbaa4289..6abe64b83 100644
--- a/node_modules/array-includes/polyfill.js
+++ b/node_modules/array-includes/polyfill.js
@@ -3,5 +3,11 @@
var implementation = require('./implementation');
module.exports = function getPolyfill() {
- return Array.prototype.includes || implementation;
+ if (
+ Array.prototype.includes
+ && Array(1).includes(undefined) // https://bugzilla.mozilla.org/show_bug.cgi?id=1767541
+ ) {
+ return Array.prototype.includes;
+ }
+ return implementation;
};
diff --git a/node_modules/array-includes/test/shimmed.js b/node_modules/array-includes/test/shimmed.js
index 7081eb175..95c378aed 100644
--- a/node_modules/array-includes/test/shimmed.js
+++ b/node_modules/array-includes/test/shimmed.js
@@ -1,5 +1,7 @@
'use strict';
+var orig = Array.prototype.includes;
+
require('../auto');
var test = require('tape');
@@ -11,6 +13,7 @@ var functionsHaveNames = require('functions-have-names')();
var runTests = require('./tests');
test('shimmed', function (t) {
+ t.comment('shimmed: ' + (orig === Array.prototype.includes ? 'no' : 'yes'));
t.equal(Array.prototype.includes.length, 1, 'Array#includes has a length of 1');
t.test('Function name', { skip: !functionsHaveNames }, function (st) {
st.equal(Array.prototype.includes.name, 'includes', 'Array#includes has name "includes"');
diff --git a/node_modules/array.prototype.flat/.eslintrc b/node_modules/array.prototype.flat/.eslintrc
index 5a5c9c003..0f117d3f4 100644
--- a/node_modules/array.prototype.flat/.eslintrc
+++ b/node_modules/array.prototype.flat/.eslintrc
@@ -4,11 +4,6 @@
"extends": "@ljharb",
"rules": {
- "array-bracket-newline": 0,
- "array-element-newline": 0,
- "func-name-matching": 0,
- "max-statements-per-line": [2, { "max": 2 }],
- "multiline-comment-style": 0,
"new-cap": [2, {
"capIsNewExceptions": [
"ArraySpeciesCreate",
@@ -19,11 +14,11 @@
"HasProperty",
"IsArray",
"Set",
- "ToInteger",
+ "ToIntegerOrInfinity",
"ToLength",
"ToObject",
- "ToString"
- ]
+ "ToString",
+ ],
}],
"no-magic-numbers": 0,
},
@@ -32,6 +27,7 @@
{
"files": "test/**",
"rules": {
+ "func-name-matching": 0,
"max-params": 0,
"no-invalid-this": [1],
},
diff --git a/node_modules/array.prototype.flat/.nycrc b/node_modules/array.prototype.flat/.nycrc
index d0fe23bec..bdd626ce9 100644
--- a/node_modules/array.prototype.flat/.nycrc
+++ b/node_modules/array.prototype.flat/.nycrc
@@ -2,10 +2,6 @@
"all": true,
"check-coverage": false,
"reporter": ["text-summary", "text", "html", "json"],
- "lines": 96,
- "statements": 96,
- "functions": 80,
- "branches": 87,
"exclude": [
"coverage",
"test"
diff --git a/node_modules/array.prototype.flat/CHANGELOG.md b/node_modules/array.prototype.flat/CHANGELOG.md
index d5e3b7485..730cf41d7 100644
--- a/node_modules/array.prototype.flat/CHANGELOG.md
+++ b/node_modules/array.prototype.flat/CHANGELOG.md
@@ -1,3 +1,52 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.3.1](https://github.com/es-shims/Array.prototype.flat/compare/v1.3.0...v1.3.1) - 2022-11-02
+
+### Commits
+
+- [meta] use `npmignore` to autogenerate an npmignore file [`e339ed7`](https://github.com/es-shims/Array.prototype.flat/commit/e339ed71634921d770e8831458767e4564bfc018)
+- [meta] add `auto-changelog` [`bb5cbd6`](https://github.com/es-shims/Array.prototype.flat/commit/bb5cbd64544bcdb11d0dff24ea4a18dcb5ab7fd1)
+- [Deps] update `define-properties`, `es-abstract` [`8067910`](https://github.com/es-shims/Array.prototype.flat/commit/80679104268c99a3d01552024aeff5bfc39eb97e)
+- [actions] update rebase action to use reusable workflow [`d4d9b28`](https://github.com/es-shims/Array.prototype.flat/commit/d4d9b28870ba950d6a19f0ad85f09a35767fbc55)
+- [Dev Deps] update `aud`, `object-inspect`, `tape` [`d9d7300`](https://github.com/es-shims/Array.prototype.flat/commit/d9d730009cfe8d02ed1e0f7db0f5b4ebe7c11fae)
+
+
+
+1.3.0 / 2022-04-11
+=================
+ * [New] `shim`/`auto`: add `flat` to `Symbol.unscopables`
+ * [Deps] update `es-abstract`
+ * [actions] reuse common workflows
+ * [actions] update codecov uploader
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`, `aud`, `auto-changelog`, `object-inspect`, `safe-publish-latest`, `tape`
+
+1.2.5 / 2021-10-01
+=================
+ * [readme] add github actions/codecov badges; remove travis badge
+ * [Deps] update `call-bind`, `es-abstract`
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`, `aud`, `has-strict-mode`, `object-inspect`, `tape`
+ * [meta] use `prepublishOnly`, for npm 7+
+ * [actions] use `node/install` instead of `node/run`; use `codecov` action
+ * [actions] update workflows
+ * [Tests] increase coverage
+ * [meta] fix changelog for v1.2.4
+
+1.2.4 / 2020-11-18
+=================
+ * [meta] do not publish Github Action workflows
+ * [Deps] update `es-abstract`; add `call-bind` where applicable
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `object-inspect`, `tape`
+ * [Tests] run `nyc` on all tests
+ * [Tests] add `implementation` test; run `es-shim-api` in postlint; use `tape` runner
+ * [Tests] migrate tests to Github Actions
+ * [actions] add "Allow Edits" workflow
+ * [actions] switch Automatic Rebase workflow to `pull_request_target` event
+
1.2.3 / 2019-12-12
=================
* [Refactor] use split-up `es-abstract` (65% bundle size decrease)
diff --git a/node_modules/array.prototype.flat/README.md b/node_modules/array.prototype.flat/README.md
index 1ada9f340..712ffce39 100644
--- a/node_modules/array.prototype.flat/README.md
+++ b/node_modules/array.prototype.flat/README.md
@@ -1,6 +1,7 @@
# array.prototype.flat [![Version Badge][npm-version-svg]][package-url]
-[![Build Status][travis-svg]][travis-url]
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
[![dependency status][deps-svg]][deps-url]
[![dev dependency status][dev-deps-svg]][dev-deps-url]
[![License][license-image]][license-url]
@@ -58,15 +59,17 @@ assert.deepEqual(arr.flat(mapper), flat(arr, mapper));
Simply clone the repo, `npm install`, and run `npm test`
[package-url]: https://npmjs.org/package/array.prototype.flat
-[npm-version-svg]: http://versionbadg.es/es-shims/Array.prototype.flat.svg
-[travis-svg]: https://travis-ci.org/es-shims/Array.prototype.flat.svg
-[travis-url]: https://travis-ci.org/es-shims/Array.prototype.flat
+[npm-version-svg]: https://versionbadg.es/es-shims/Array.prototype.flat.svg
[deps-svg]: https://david-dm.org/es-shims/Array.prototype.flat.svg
[deps-url]: https://david-dm.org/es-shims/Array.prototype.flat
[dev-deps-svg]: https://david-dm.org/es-shims/Array.prototype.flat/dev-status.svg
[dev-deps-url]: https://david-dm.org/es-shims/Array.prototype.flat#info=devDependencies
[npm-badge-png]: https://nodei.co/npm/array.prototype.flat.png?downloads=true&stars=true
-[license-image]: http://img.shields.io/npm/l/array.prototype.flat.svg
+[license-image]: https://img.shields.io/npm/l/array.prototype.flat.svg
[license-url]: LICENSE
-[downloads-image]: http://img.shields.io/npm/dm/array.prototype.flat.svg
-[downloads-url]: http://npm-stat.com/charts.html?package=array.prototype.flat
+[downloads-image]: https://img.shields.io/npm/dm/array.prototype.flat.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=array.prototype.flat
+[codecov-image]: https://codecov.io/gh/es-shims/Array.prototype.flat/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/es-shims/Array.prototype.flat/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/Array.prototype.flat
+[actions-url]: https://github.com/es-shims/Array.prototype.flat/actions
diff --git a/node_modules/array.prototype.flat/implementation.js b/node_modules/array.prototype.flat/implementation.js
index 68a0d28cf..84fcc9522 100644
--- a/node_modules/array.prototype.flat/implementation.js
+++ b/node_modules/array.prototype.flat/implementation.js
@@ -1,11 +1,11 @@
'use strict';
-var ArraySpeciesCreate = require('es-abstract/2020/ArraySpeciesCreate');
-var FlattenIntoArray = require('es-abstract/2020/FlattenIntoArray');
-var Get = require('es-abstract/2020/Get');
-var ToInteger = require('es-abstract/2020/ToInteger');
-var ToLength = require('es-abstract/2020/ToLength');
-var ToObject = require('es-abstract/2020/ToObject');
+var ArraySpeciesCreate = require('es-abstract/2022/ArraySpeciesCreate');
+var FlattenIntoArray = require('es-abstract/2022/FlattenIntoArray');
+var Get = require('es-abstract/2022/Get');
+var ToIntegerOrInfinity = require('es-abstract/2022/ToIntegerOrInfinity');
+var ToLength = require('es-abstract/2022/ToLength');
+var ToObject = require('es-abstract/2022/ToObject');
module.exports = function flat() {
var O = ToObject(this);
@@ -13,7 +13,7 @@ module.exports = function flat() {
var depthNum = 1;
if (arguments.length > 0 && typeof arguments[0] !== 'undefined') {
- depthNum = ToInteger(arguments[0]);
+ depthNum = ToIntegerOrInfinity(arguments[0]);
}
var A = ArraySpeciesCreate(O, 0);
diff --git a/node_modules/array.prototype.flat/package.json b/node_modules/array.prototype.flat/package.json
index 97159a123..77a4122ec 100644
--- a/node_modules/array.prototype.flat/package.json
+++ b/node_modules/array.prototype.flat/package.json
@@ -1,6 +1,6 @@
{
"name": "array.prototype.flat",
- "version": "1.2.4",
+ "version": "1.3.1",
"author": {
"name": "Jordan Harband",
"email": "ljharb@gmail.com",
@@ -20,13 +20,17 @@
"license": "MIT",
"main": "index.js",
"scripts": {
- "prepublish": "safe-publish-latest",
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prepublishOnly": "safe-publish-latest",
"pretest": "npm run --silent lint && evalmd README.md",
"test": "npm run tests-only",
"posttest": "aud --production",
"tests-only": "nyc tape 'test/**/*.js'",
- "lint": "eslint .",
- "postlint": "es-shim-api --bound"
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "es-shim-api --bound",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
},
"repository": {
"type": "git",
@@ -46,23 +50,27 @@
"es-shim API"
],
"dependencies": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.18.0-next.1"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-shim-unscopables": "^1.0.0"
},
"devDependencies": {
- "@es-shims/api": "^2.1.2",
- "@ljharb/eslint-config": "^17.2.0",
- "aud": "^1.1.3",
+ "@es-shims/api": "^2.2.3",
+ "@ljharb/eslint-config": "^21.0.0",
+ "aud": "^2.0.1",
+ "auto-changelog": "^2.4.0",
"covert": "^1.1.1",
- "eslint": "^7.13.0",
+ "eslint": "=8.8.0",
"evalmd": "^0.0.19",
"function-bind": "^1.1.1",
- "has-strict-mode": "^1.0.0",
+ "has-strict-mode": "^1.0.1",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.0",
"nyc": "^10.3.2",
- "object-inspect": "^1.8.0",
- "safe-publish-latest": "^1.1.4",
- "tape": "^5.0.1"
+ "object-inspect": "^1.12.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.6.1"
},
"testling": {
"files": [
@@ -88,9 +96,18 @@
"engines": {
"node": ">= 0.4"
},
- "greenkeeper": {
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true,
+ "startingVersion": "1.3.1"
+ },
+ "publishConfig": {
"ignore": [
- "nyc"
+ ".github/workflows"
]
}
}
diff --git a/node_modules/array.prototype.flat/shim.js b/node_modules/array.prototype.flat/shim.js
index 53ea7012e..ecc8dbeea 100644
--- a/node_modules/array.prototype.flat/shim.js
+++ b/node_modules/array.prototype.flat/shim.js
@@ -1,14 +1,20 @@
'use strict';
var define = require('define-properties');
+var shimUnscopables = require('es-shim-unscopables');
+
var getPolyfill = require('./polyfill');
module.exports = function shimFlat() {
var polyfill = getPolyfill();
+
define(
Array.prototype,
{ flat: polyfill },
{ flat: function () { return Array.prototype.flat !== polyfill; } }
);
+
+ shimUnscopables('flat');
+
return polyfill;
};
diff --git a/node_modules/array.prototype.flat/test/shimmed.js b/node_modules/array.prototype.flat/test/shimmed.js
index bbd786184..a9f396ea0 100644
--- a/node_modules/array.prototype.flat/test/shimmed.js
+++ b/node_modules/array.prototype.flat/test/shimmed.js
@@ -1,6 +1,6 @@
'use strict';
-require('../shim')();
+require('../auto');
var test = require('tape');
var defineProperties = require('define-properties');
diff --git a/node_modules/array.prototype.flatmap/.editorconfig b/node_modules/array.prototype.flatmap/.editorconfig
new file mode 100644
index 000000000..bc228f826
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/.editorconfig
@@ -0,0 +1,20 @@
+root = true
+
+[*]
+indent_style = tab
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+max_line_length = 150
+
+[CHANGELOG.md]
+indent_style = space
+indent_size = 2
+
+[*.json]
+max_line_length = off
+
+[Makefile]
+max_line_length = off
diff --git a/node_modules/array.prototype.flatmap/.eslintrc b/node_modules/array.prototype.flatmap/.eslintrc
new file mode 100644
index 000000000..07c091852
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/.eslintrc
@@ -0,0 +1,34 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "new-cap": [2, {
+ "capIsNewExceptions": [
+ "ArraySpeciesCreate",
+ "Call",
+ "CreateDataPropertyOrThrow",
+ "FlattenIntoArray",
+ "Get",
+ "HasProperty",
+ "IsArray",
+ "IsCallable",
+ "Set",
+ "ToLength",
+ "ToObject",
+ "ToString",
+ ]
+ }],
+ "no-magic-numbers": 0,
+ },
+
+ "overrides": [
+ {
+ "files": "test/**",
+ "rules": {
+ "no-invalid-this": [1],
+ },
+ },
+ ],
+}
diff --git a/node_modules/array.prototype.flatmap/.github/FUNDING.yml b/node_modules/array.prototype.flatmap/.github/FUNDING.yml
new file mode 100644
index 000000000..f80b0c40b
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/array.prototype.flatmap
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/node_modules/array.prototype.flatmap/.nycrc b/node_modules/array.prototype.flatmap/.nycrc
new file mode 100644
index 000000000..bdd626ce9
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/.nycrc
@@ -0,0 +1,9 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/node_modules/array.prototype.flatmap/CHANGELOG.md b/node_modules/array.prototype.flatmap/CHANGELOG.md
new file mode 100644
index 000000000..76d6d5904
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/CHANGELOG.md
@@ -0,0 +1,102 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.3.1](https://github.com/es-shims/Array.prototype.flatMap/compare/v1.3.0...v1.3.1) - 2022-11-02
+
+### Commits
+
+- [meta] use `npmignore` to autogenerate an npmignore file [`3587a34`](https://github.com/es-shims/Array.prototype.flatMap/commit/3587a34ca111ec36ffc46b4131f5b32d4d8a357c)
+- [meta] add `auto-changelog` [`d66bdea`](https://github.com/es-shims/Array.prototype.flatMap/commit/d66bdeac56f2c1803a72695230c80d8270ab2ecf)
+- [Deps] update `define-properties`, `es-abstract` [`d64c486`](https://github.com/es-shims/Array.prototype.flatMap/commit/d64c48639ec4958ed9a2627a4d7315ac1404687a)
+- [actions] update rebase action to use reusable workflow [`8d657d0`](https://github.com/es-shims/Array.prototype.flatMap/commit/8d657d094a2aafa7948eee73eaa0e56047c5d60d)
+- [Dev Deps] update `aud`, `object-inspect`, `tape` [`aa22741`](https://github.com/es-shims/Array.prototype.flatMap/commit/aa22741a4bbe8db6d448cc4ca5417ddec90ac01d)
+- [Tests] use `for-each` instead of `foreach` [`748a78d`](https://github.com/es-shims/Array.prototype.flatMap/commit/748a78dbddb08462c75916fde07746d34cfd5c5c)
+
+
+
+1.3.0 / 2022-04-11
+=================
+ * [New] `shim`/`auto`: add `flatMap` to `Symbol.unscopables`
+ * [Deps] update `call-bind`, `es-abstract`
+ * [actions] reuse common workflows
+ * [actions] update codecov uploader
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`, `aud`, `auto-changelog`, `object-inspect`, `safe-publish-latest`, `tape`
+
+1.2.5 / 2021-10-01
+=================
+ * [readme] add github actions/codecov badges; update description; remove travis badge
+ * [Deps] update `call-bind`, `es-abstract`; remove unused `function-bind`
+ * [meta] use `prepublishOnly`, for npm 7+
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`, `aud`, `has-strict-mode`, `object-inspect`, `tape`
+ * [actions] update workflows
+ * [actions] use `node/install` instead of `node/run`; use `codecov` action
+ * [Tests] increase coverage
+
+1.2.4 / 2020-11-18
+=================
+ * [Deps] update `es-abstract`; use `call-bind` where applicable
+ * [meta] do not publish github action workflows
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object-inspect`, `tape`; add `aud`
+ * [Tests] migrate tests to Github Actions
+ * [Tests] run `nyc` on all tests
+ * [Tests] add `implementation` test; run `es-shim-api` in postlint; use `tape` runner
+ * [actions] add "Allow Edits" workflow
+ * [actions] switch Automatic Rebase workflow to `pull_request_target` event
+
+1.2.3 / 2019-12-12
+=================
+ * [Refactor] use split-up `es-abstract` (65% bundle size decrease)
+ * [Deps] update `es-abstract`
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `object-inspect`
+ * [meta] add `funding` field
+ * [Tests] use shared travis-ci configs
+ * [actions] add automatic rebasing / merge commit blocking
+
+1.2.2 / 2019-10-10
+=================
+ * [Refactor] rename callback argument to `mapperFunction`, to match spec
+ * [Deps] update `es-abstract`, `define-properties`
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `covert`, `evalmd`, `object-inspect`, `safe-publish-latest`, `tape`
+ * [meta] create FUNDING.yml
+ * [Tests] up to `node` `v12.11`, `v11.15`, `v10.16`, `v9.11`, `v8.16`, `v6.17`, `v4.9`; use `nvm install-latest-npm`
+ * [Tests] use `npx aud` instead of `nsp` or `npm audit` with hoops
+
+1.2.1 / 2018-02-23
+=================
+ * [Fix] Temporarily hack main entry, so it's compatible with other resolvers
+ * [Dev Deps] update `eslint`, `nsp`, `tape`
+ * [Tests] up to `node` `v9.6`, `v6.13`
+
+1.2.0 / 2018-01-18
+=================
+ * [New] add "auto" entry point
+ * [Fix] Move the receiver length check higher
+ * [Fix] spec adjustments
+ * [Refactor] adjust shouldFlatten logic
+ * [Dev Deps] update `eslint`, `object-inspect`
+ * [Tests] up to `node` `v9.4`
+
+1.1.1 / 2017-11-29
+=================
+ * [Fix] avoid an extra hole in the array (#1)
+ * [Deps] update `es-abstract`
+ * [Dev Deps] update `eslint`, `nsp`, `object-inspect`
+ * [Tests] up to `node` `v9.2`, `v8.9`, `v6.12`; pin included builds to LTS
+
+1.1.0 / 2017-10-03
+=================
+ * [New] add explicit setting of “length” on target array
+ * [Fix] `FlattenIntoArray`: add assertion that `thisArg` and `mapperFunction` are both passed together
+ * [Tests] make coverage required
+
+1.0.1 / 2017-10-02
+=================
+ * Add readme
+
+1.0.0 / 2017-10-01
+=================
+ * Initial release
diff --git a/node_modules/array.prototype.flatmap/LICENSE b/node_modules/array.prototype.flatmap/LICENSE
new file mode 100644
index 000000000..999c081c6
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 ECMAScript Shims
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/array.prototype.flatmap/README.md b/node_modules/array.prototype.flatmap/README.md
new file mode 100644
index 000000000..a4ee7c239
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/README.md
@@ -0,0 +1,82 @@
+# array.prototype.flatmap [![Version Badge][npm-version-svg]][package-url]
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![dependency status][deps-svg]][deps-url]
+[![dev dependency status][dev-deps-svg]][dev-deps-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+An ES2019 spec-compliant `Array.prototype.flatMap` shim/polyfill/replacement that works as far down as ES3.
+
+This package implements the [es-shim API](https://github.com/es-shims/api) interface. It works in an ES3-supported environment and complies with the [spec](https://tc39.es/ecma262/#sec-array.prototype.flatmap).
+
+Because `Array.prototype.flatMap` depends on a receiver (the `this` value), the main export takes the array to operate on as the first argument.
+
+## Getting started
+
+```sh
+npm install --save array.prototype.flatmap
+```
+
+## Usage/Examples
+
+```js
+var flatMap = require('array.prototype.flatmap');
+var assert = require('assert');
+
+var arr = [1, [2], [], 3];
+
+var results = flatMap(arr, function (x, i) {
+ assert.equal(x, arr[i]);
+ return x;
+});
+
+assert.deepEqual(results, [1, 2, 3]);
+```
+
+```js
+var flatMap = require('array.prototype.flatmap');
+var assert = require('assert');
+/* when Array#flatMap is not present */
+delete Array.prototype.flatMap;
+var shimmedFlatMap = flatMap.shim();
+
+var mapper = function (x) { return [x, 1]; };
+
+assert.equal(shimmedFlatMap, flatMap.getPolyfill());
+assert.deepEqual(arr.flatMap(mapper), flatMap(arr, mapper));
+```
+
+```js
+var flatMap = require('array.prototype.flatmap');
+var assert = require('assert');
+/* when Array#flatMap is present */
+var shimmedIncludes = flatMap.shim();
+
+var mapper = function (x) { return [x, 1]; };
+
+assert.equal(shimmedIncludes, Array.prototype.flatMap);
+assert.deepEqual(arr.flatMap(mapper), flatMap(arr, mapper));
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.org/package/array.prototype.flatmap
+[npm-version-svg]: https://versionbadg.es/es-shims/Array.prototype.flatMap.svg
+[deps-svg]: https://david-dm.org/es-shims/Array.prototype.flatMap.svg
+[deps-url]: https://david-dm.org/es-shims/Array.prototype.flatMap
+[dev-deps-svg]: https://david-dm.org/es-shims/Array.prototype.flatMap/dev-status.svg
+[dev-deps-url]: https://david-dm.org/es-shims/Array.prototype.flatMap#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/array.prototype.flatmap.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/array.prototype.flatmap.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/array.prototype.flatmap.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=array.prototype.flatmap
+[codecov-image]: https://codecov.io/gh/es-shims/Array.prototype.flatMap/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/es-shims/Array.prototype.flatMap/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/Array.prototype.flatMap
+[actions-url]: https://github.com/es-shims/Array.prototype.flatMap/actions
diff --git a/node_modules/array.prototype.flatmap/auto.js b/node_modules/array.prototype.flatmap/auto.js
new file mode 100644
index 000000000..8ebf606cb
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/auto.js
@@ -0,0 +1,3 @@
+'use strict';
+
+require('./shim')();
diff --git a/node_modules/array.prototype.flatmap/implementation.js b/node_modules/array.prototype.flatmap/implementation.js
new file mode 100644
index 000000000..d677442e9
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/implementation.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var ArraySpeciesCreate = require('es-abstract/2022/ArraySpeciesCreate');
+var FlattenIntoArray = require('es-abstract/2022/FlattenIntoArray');
+var Get = require('es-abstract/2022/Get');
+var IsCallable = require('es-abstract/2022/IsCallable');
+var ToLength = require('es-abstract/2022/ToLength');
+var ToObject = require('es-abstract/2022/ToObject');
+
+module.exports = function flatMap(mapperFunction) {
+ var O = ToObject(this);
+ var sourceLen = ToLength(Get(O, 'length'));
+
+ if (!IsCallable(mapperFunction)) {
+ throw new TypeError('mapperFunction must be a function');
+ }
+
+ var T;
+ if (arguments.length > 1) {
+ T = arguments[1];
+ }
+
+ var A = ArraySpeciesCreate(O, 0);
+ FlattenIntoArray(A, O, sourceLen, 0, 1, mapperFunction, T);
+ return A;
+};
diff --git a/node_modules/array.prototype.flatmap/index.js b/node_modules/array.prototype.flatmap/index.js
new file mode 100644
index 000000000..078ac0a5a
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/index.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var define = require('define-properties');
+var callBind = require('call-bind');
+
+var implementation = require('./implementation');
+var getPolyfill = require('./polyfill');
+var polyfill = getPolyfill();
+var shim = require('./shim');
+
+var boundFlatMap = callBind(polyfill);
+
+define(boundFlatMap, {
+ getPolyfill: getPolyfill,
+ implementation: implementation,
+ shim: shim
+});
+
+module.exports = boundFlatMap;
diff --git a/node_modules/array.prototype.flatmap/package.json b/node_modules/array.prototype.flatmap/package.json
new file mode 100644
index 000000000..6c4ff4960
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/package.json
@@ -0,0 +1,112 @@
+{
+ "name": "array.prototype.flatmap",
+ "version": "1.3.1",
+ "author": {
+ "name": "Jordan Harband",
+ "email": "ljharb@gmail.com",
+ "url": "http://ljharb.codes"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "contributors": [
+ {
+ "name": "Jordan Harband",
+ "email": "ljharb@gmail.com",
+ "url": "http://ljharb.codes"
+ }
+ ],
+ "description": "An ES2019 spec-compliant `Array.prototype.flatMap` shim/polyfill/replacement that works as far down as ES3.",
+ "license": "MIT",
+ "main": "index",
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublishOnly": "safe-publish-latest",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "pretest": "npm run lint",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "prelint": "evalmd README.md",
+ "lint": "eslint --ext=js,mjs .",
+ "postlint": "es-shim-api --bound",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/es-shims/Array.prototype.flatMap.git"
+ },
+ "keywords": [
+ "Array.prototype.flatMap",
+ "flatMap",
+ "array",
+ "ESnext",
+ "shim",
+ "polyfill",
+ "flatten",
+ "Array.prototype.flatten",
+ "es-shim API"
+ ],
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "devDependencies": {
+ "@es-shims/api": "^2.2.3",
+ "@ljharb/eslint-config": "^21.0.0",
+ "aud": "^2.0.1",
+ "auto-changelog": "^2.4.0",
+ "covert": "^1.1.1",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "for-each": "^0.3.3",
+ "has-strict-mode": "^1.0.1",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.0",
+ "nyc": "^10.3.2",
+ "object-inspect": "^1.12.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.6.1"
+ },
+ "testling": {
+ "files": [
+ "test/index.js",
+ "test/shimmed.js"
+ ],
+ "browsers": [
+ "iexplore/6.0..latest",
+ "firefox/3.0..6.0",
+ "firefox/15.0..latest",
+ "firefox/nightly",
+ "chrome/4.0..10.0",
+ "chrome/20.0..latest",
+ "chrome/canary",
+ "opera/10.0..latest",
+ "opera/next",
+ "safari/4.0..latest",
+ "ipad/6.0..latest",
+ "iphone/6.0..latest",
+ "android-browser/4.2"
+ ]
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true,
+ "startingVersion": "1.3.1"
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ }
+}
diff --git a/node_modules/array.prototype.flatmap/polyfill.js b/node_modules/array.prototype.flatmap/polyfill.js
new file mode 100644
index 000000000..716ae58b9
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/polyfill.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var implementation = require('./implementation');
+
+module.exports = function getPolyfill() {
+ return Array.prototype.flatMap || implementation;
+};
diff --git a/node_modules/array.prototype.flatmap/shim.js b/node_modules/array.prototype.flatmap/shim.js
new file mode 100644
index 000000000..41b4f05ab
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/shim.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var define = require('define-properties');
+var shimUnscopables = require('es-shim-unscopables');
+
+var getPolyfill = require('./polyfill');
+
+module.exports = function shimFlatMap() {
+ var polyfill = getPolyfill();
+
+ define(
+ Array.prototype,
+ { flatMap: polyfill },
+ { flatMap: function () { return Array.prototype.flatMap !== polyfill; } }
+ );
+
+ shimUnscopables('flatMap');
+
+ return polyfill;
+};
diff --git a/node_modules/array.prototype.flatmap/test/implementation.js b/node_modules/array.prototype.flatmap/test/implementation.js
new file mode 100644
index 000000000..3571c707f
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/test/implementation.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var flatMap = require('../implementation');
+var callBind = require('call-bind');
+var test = require('tape');
+var hasStrictMode = require('has-strict-mode')();
+var runTests = require('./tests');
+
+test('as a function', function (t) {
+ t.test('bad array/this value', { skip: !hasStrictMode }, function (st) {
+ /* eslint no-useless-call: 0 */
+ st['throws'](function () { flatMap.call(undefined); }, TypeError, 'undefined is not an object');
+ st['throws'](function () { flatMap.call(null); }, TypeError, 'null is not an object');
+ st.end();
+ });
+
+ runTests(callBind(flatMap), t);
+
+ t.end();
+});
diff --git a/node_modules/array.prototype.flatmap/test/index.js b/node_modules/array.prototype.flatmap/test/index.js
new file mode 100644
index 000000000..58a59fd35
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/test/index.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var flatMap = require('../');
+var test = require('tape');
+var runTests = require('./tests');
+
+test('as a function', function (t) {
+ t.test('bad array/this value', function (st) {
+ /* eslint no-useless-call: 0 */
+ st['throws'](function () { flatMap.call(undefined, function () {}); }, TypeError, 'undefined is not an object');
+ st['throws'](function () { flatMap.call(null, function () {}); }, TypeError, 'null is not an object');
+ st.end();
+ });
+
+ runTests(flatMap, t);
+
+ t.end();
+});
diff --git a/node_modules/array.prototype.flatmap/test/shimmed.js b/node_modules/array.prototype.flatmap/test/shimmed.js
new file mode 100644
index 000000000..1af257984
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/test/shimmed.js
@@ -0,0 +1,36 @@
+'use strict';
+
+require('../auto');
+
+var test = require('tape');
+var defineProperties = require('define-properties');
+var callBind = require('call-bind');
+var isEnumerable = Object.prototype.propertyIsEnumerable;
+var functionsHaveNames = function f() {}.name === 'f';
+
+var runTests = require('./tests');
+
+test('shimmed', function (t) {
+ t.equal(Array.prototype.flatMap.length, 1, 'Array#flatMap has a length of 1');
+ t.test('Function name', { skip: !functionsHaveNames }, function (st) {
+ st.equal(Array.prototype.flatMap.name, 'flatMap', 'Array#flatMap has name "flatMap"');
+ st.end();
+ });
+
+ t.test('enumerability', { skip: !defineProperties.supportsDescriptors }, function (et) {
+ et.equal(false, isEnumerable.call(Array.prototype, 'flatMap'), 'Array#flatMap is not enumerable');
+ et.end();
+ });
+
+ var supportsStrictMode = (function () { return typeof this === 'undefined'; }());
+
+ t.test('bad array/this value', { skip: !supportsStrictMode }, function (st) {
+ st['throws'](function () { return Array.prototype.flatMap.call(undefined, 'a'); }, TypeError, 'undefined is not an object');
+ st['throws'](function () { return Array.prototype.flatMap.call(null, 'a'); }, TypeError, 'null is not an object');
+ st.end();
+ });
+
+ runTests(callBind(Array.prototype.flatMap), t);
+
+ t.end();
+});
diff --git a/node_modules/array.prototype.flatmap/test/tests.js b/node_modules/array.prototype.flatmap/test/tests.js
new file mode 100644
index 000000000..5f0bf7fb3
--- /dev/null
+++ b/node_modules/array.prototype.flatmap/test/tests.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var inspect = require('object-inspect');
+var forEach = require('for-each');
+
+module.exports = function (flatMap, t) {
+ t.test('callback function', function (st) {
+ forEach([[], {}, true, false, 42, 'foo', /a/g, null], function (nonFunction) {
+ st['throws'](
+ function () { flatMap([], nonFunction); },
+ TypeError,
+ inspect(nonFunction) + ' is not a function'
+ );
+ });
+
+ st.end();
+ });
+
+ t.test('flatMaps', function (st) {
+ var mapped = flatMap([1, [2], [3, 4]], function (x, i) {
+ return [x, i];
+ });
+
+ var expected = [1, 0, [2], 1, [3, 4], 2];
+ st.deepEqual(mapped, expected, 'array is flattened and mapped to tuples of item/index');
+ st.equal(mapped.length, expected.length, 'array has expected length');
+
+ var context = {};
+ var actual;
+ flatMap([1], function () { actual = this; }, context);
+ st.equal(actual, context, 'thisArg works as expected');
+
+ st.end();
+ });
+
+ t.test('sparse arrays', function (st) {
+ var identity = function (x) { return x; };
+ // eslint-disable-next-line no-sparse-arrays
+ st.deepEqual(flatMap([, [1]], identity), flatMap([[], [1]], identity), 'an array hole is treated the same as an empty array');
+
+ st.end();
+ });
+};
diff --git a/node_modules/array-includes/.eslintignore b/node_modules/available-typed-arrays/.eslintignore
similarity index 100%
rename from node_modules/array-includes/.eslintignore
rename to node_modules/available-typed-arrays/.eslintignore
diff --git a/node_modules/available-typed-arrays/.eslintrc b/node_modules/available-typed-arrays/.eslintrc
new file mode 100644
index 000000000..62f1d7f50
--- /dev/null
+++ b/node_modules/available-typed-arrays/.eslintrc
@@ -0,0 +1,9 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "globals": {
+ "globalThis": false
+ }
+}
diff --git a/node_modules/available-typed-arrays/.github/FUNDING.yml b/node_modules/available-typed-arrays/.github/FUNDING.yml
new file mode 100644
index 000000000..14abc7253
--- /dev/null
+++ b/node_modules/available-typed-arrays/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/available-typed-arrays
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/node_modules/available-typed-arrays/.nycrc b/node_modules/available-typed-arrays/.nycrc
new file mode 100644
index 000000000..bdd626ce9
--- /dev/null
+++ b/node_modules/available-typed-arrays/.nycrc
@@ -0,0 +1,9 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/node_modules/available-typed-arrays/CHANGELOG.md b/node_modules/available-typed-arrays/CHANGELOG.md
new file mode 100644
index 000000000..112aff968
--- /dev/null
+++ b/node_modules/available-typed-arrays/CHANGELOG.md
@@ -0,0 +1,79 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v1.0.5](https://github.com/inspect-js/available-typed-arrays/compare/v1.0.4...v1.0.5) - 2021-08-30
+
+### Fixed
+
+- [Refactor] use `globalThis` if available [`#12`](https://github.com/inspect-js/available-typed-arrays/issues/12)
+
+### Commits
+
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`1199790`](https://github.com/inspect-js/available-typed-arrays/commit/1199790ab5841517ad04827fab3f135d2dc5cfb7)
+
+## [v1.0.4](https://github.com/inspect-js/available-typed-arrays/compare/v1.0.3...v1.0.4) - 2021-05-25
+
+### Commits
+
+- [Refactor] Remove `array.prototype.filter` dependency [`f39c90e`](https://github.com/inspect-js/available-typed-arrays/commit/f39c90ecb1907de28ee2d3577b7da37ae12aac56)
+- [Dev Deps] update `eslint`, `auto-changelog` [`b2e3a03`](https://github.com/inspect-js/available-typed-arrays/commit/b2e3a035e8cd3ddfd7b565249e1651c6419a34d0)
+- [meta] create `FUNDING.yml` [`8c0e758`](https://github.com/inspect-js/available-typed-arrays/commit/8c0e758c6ec80adbb3770554653cdc3aa16beb55)
+- [Tests] fix harmony test matrix [`ef96549`](https://github.com/inspect-js/available-typed-arrays/commit/ef96549df171776267529413240a2219cb59d5ce)
+- [meta] add `sideEffects` flag [`288cca0`](https://github.com/inspect-js/available-typed-arrays/commit/288cca0fbd214bec706447851bb8bccc4b899a48)
+
+## [v1.0.3](https://github.com/inspect-js/available-typed-arrays/compare/v1.0.2...v1.0.3) - 2021-05-19
+
+### Commits
+
+- [Tests] migrate tests to Github Actions [`3ef082c`](https://github.com/inspect-js/available-typed-arrays/commit/3ef082caaa153b49f4c37c85bbd5c4b13fe4f638)
+- [meta] do not publish github action workflow files [`fd95ffd`](https://github.com/inspect-js/available-typed-arrays/commit/fd95ffdaca759eca81cb4c5d5772ee863dfea501)
+- [actions] use `node/install` instead of `node/run`; use `codecov` action [`eb6bd65`](https://github.com/inspect-js/available-typed-arrays/commit/eb6bd659a31c92a6a178c71a89fe0d5261413e6c)
+- [Tests] run `nyc` on all tests [`636c946`](https://github.com/inspect-js/available-typed-arrays/commit/636c94657b532599ef90a214aaa12639d11b0161)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`70a3b61`](https://github.com/inspect-js/available-typed-arrays/commit/70a3b61367b318fb883c2f35b8f2d539849a23b6)
+- [actions] add "Allow Edits" workflow [`bd09c45`](https://github.com/inspect-js/available-typed-arrays/commit/bd09c45299e396fa5bbd5be4c58b1aedcb372a82)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `array.prototype.every`, `aud`, `tape` [`8f97523`](https://github.com/inspect-js/available-typed-arrays/commit/8f9752308390a79068cd431436bbfd77bca15647)
+- [readme] fix URLs [`75418e2`](https://github.com/inspect-js/available-typed-arrays/commit/75418e20b57f4ad5e65d8c2e1864efd14eaa2e65)
+- [readme] add actions and codecov badges [`4a8bc30`](https://github.com/inspect-js/available-typed-arrays/commit/4a8bc30af2ce1f48e2b28ab3db5be9589bd6f2d0)
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud` [`65198ac`](https://github.com/inspect-js/available-typed-arrays/commit/65198ace335a013ef49b6bd722bc80bbbc6be784)
+- [actions] update workflows [`7f816eb`](https://github.com/inspect-js/available-typed-arrays/commit/7f816eb231131e53ced2572ba6c6c6a00f975789)
+- [Refactor] use `array.prototype.filter` instead of `array-filter` [`2dd1038`](https://github.com/inspect-js/available-typed-arrays/commit/2dd1038d71ce48b5650687691cf8fe09795a6d30)
+- [actions] switch Automatic Rease workflow to `pull_request_target` event [`9b45e91`](https://github.com/inspect-js/available-typed-arrays/commit/9b45e914fcb08bdaaaa0166b41716e51f400d1c6)
+- [Dev Deps] update `auto-changelog`, `tape` [`0003a5b`](https://github.com/inspect-js/available-typed-arrays/commit/0003a5b122a0724db5499c114104eeeb396b2f67)
+- [meta] use `prepublishOnly` script for npm 7+ [`d884dd1`](https://github.com/inspect-js/available-typed-arrays/commit/d884dd1c1117411f35d9fbc07f513a1a85ccdead)
+- [readme] remove travis badge [`9da2b3c`](https://github.com/inspect-js/available-typed-arrays/commit/9da2b3c29706340fada995137aba12cfae4d6f37)
+- [Dev Deps] update `auto-changelog`; add `aud` [`41b1336`](https://github.com/inspect-js/available-typed-arrays/commit/41b13369c71b0e3e57b9de0f4fb1e4d67950d74a)
+- [Tests] only audit prod deps [`2571826`](https://github.com/inspect-js/available-typed-arrays/commit/2571826a5d121eeeeccf4c711e3f9e4616685d50)
+
+## [v1.0.2](https://github.com/inspect-js/available-typed-arrays/compare/v1.0.1...v1.0.2) - 2020-01-26
+
+### Commits
+
+- [actions] add automatic rebasing / merge commit blocking [`3229a74`](https://github.com/inspect-js/available-typed-arrays/commit/3229a74bda60f24e2257efc40ddff9a3ce98de76)
+- [Dev Deps] update `@ljharb/eslint-config` [`9579abe`](https://github.com/inspect-js/available-typed-arrays/commit/9579abecc196088561d3aedf27cad45b56f8e18b)
+- [Fix] remove `require` condition to avoid experimental warning [`2cade6b`](https://github.com/inspect-js/available-typed-arrays/commit/2cade6b56d6a508a950c7da27d038bee496e716b)
+
+## [v1.0.1](https://github.com/inspect-js/available-typed-arrays/compare/v1.0.0...v1.0.1) - 2020-01-24
+
+### Commits
+
+- [meta] add "exports" [`5942917`](https://github.com/inspect-js/available-typed-arrays/commit/5942917aafb56c6bce80f01b7ae6a9b46bc72c69)
+
+## v1.0.0 - 2020-01-24
+
+### Commits
+
+- Initial commit [`2bc5144`](https://github.com/inspect-js/available-typed-arrays/commit/2bc514459c9f65756adfbd9964abf433183d78f6)
+- readme [`31e4796`](https://github.com/inspect-js/available-typed-arrays/commit/31e4796379eba4a16d3c6a8e9baf6eb3f39e33d1)
+- npm init [`9194266`](https://github.com/inspect-js/available-typed-arrays/commit/9194266b471a2a2dd5e6969bc40358ceb346e21e)
+- Tests [`b539830`](https://github.com/inspect-js/available-typed-arrays/commit/b539830c3213f90de42b4d6e62803f52daf61a6d)
+- Implementation [`6577df2`](https://github.com/inspect-js/available-typed-arrays/commit/6577df244ea146ef5ec16858044c8955e0fc445c)
+- [meta] add `auto-changelog` [`7b43310`](https://github.com/inspect-js/available-typed-arrays/commit/7b43310be76f00fe60b74a2fd6d0e46ac1d01f3e)
+- [Tests] add `npm run lint` [`dedfbc1`](https://github.com/inspect-js/available-typed-arrays/commit/dedfbc1592f86ac1636267d3965f2345df43815b)
+- [Tests] use shared travis-ci configs [`c459d78`](https://github.com/inspect-js/available-typed-arrays/commit/c459d78bf2efa9d777f88599ae71a796dbfcb70f)
+- Only apps should have lockfiles [`d294668`](https://github.com/inspect-js/available-typed-arrays/commit/d294668422cf35f5e7716a85bfd204e62b01c056)
+- [meta] add `funding` field [`6e70bc1`](https://github.com/inspect-js/available-typed-arrays/commit/6e70bc1fb199c7898165aaf05c25bb49f4062e53)
+- [meta] add `safe-publish-latest` [`dd89ca2`](https://github.com/inspect-js/available-typed-arrays/commit/dd89ca2c6842f0f3e82958df2b2bd0fc0c929c51)
diff --git a/node_modules/available-typed-arrays/LICENSE b/node_modules/available-typed-arrays/LICENSE
new file mode 100644
index 000000000..707437b57
--- /dev/null
+++ b/node_modules/available-typed-arrays/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 Inspect JS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/available-typed-arrays/README.md b/node_modules/available-typed-arrays/README.md
new file mode 100644
index 000000000..16838f4b2
--- /dev/null
+++ b/node_modules/available-typed-arrays/README.md
@@ -0,0 +1,52 @@
+# available-typed-arrays [![Version Badge][2]][1]
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![dependency status][5]][6]
+[![dev dependency status][7]][8]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][11]][1]
+
+Returns an array of Typed Array names that are available in the current environment.
+
+## Example
+
+```js
+var availableTypedArrays = require('available-typed-arrays');
+var assert = require('assert');
+
+assert.deepStrictEqual(availableTypedArrays(), [
+ 'Int8Array',
+ 'Uint8Array',
+ 'Uint8ClampedArray',
+ 'Int16Array',
+ 'Uint16Array',
+ 'Int32Array',
+ 'Uint32Array',
+ 'Float32Array',
+ 'Float64Array',
+ 'BigInt64Array',
+ 'BigUint64Array'
+].sort());
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[1]: https://npmjs.org/package/available-typed-arrays
+[2]: https://versionbadg.es/inspect-js/available-typed-arrays.svg
+[5]: https://david-dm.org/inspect-js/available-typed-arrays.svg
+[6]: https://david-dm.org/inspect-js/available-typed-arrays
+[7]: https://david-dm.org/inspect-js/available-typed-arrays/dev-status.svg
+[8]: https://david-dm.org/inspect-js/available-typed-arrays#info=devDependencies
+[11]: https://nodei.co/npm/available-typed-arrays.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/available-typed-arrays.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/available-typed-arrays.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=available-typed-arrays
+[codecov-image]: https://codecov.io/gh/inspect-js/available-typed-arrays/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/inspect-js/available-typed-arrays/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/available-typed-arrays
+[actions-url]: https://github.com/inspect-js/available-typed-arrays/actions
diff --git a/node_modules/available-typed-arrays/index.js b/node_modules/available-typed-arrays/index.js
new file mode 100644
index 000000000..88dbac3fe
--- /dev/null
+++ b/node_modules/available-typed-arrays/index.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var possibleNames = [
+ 'BigInt64Array',
+ 'BigUint64Array',
+ 'Float32Array',
+ 'Float64Array',
+ 'Int16Array',
+ 'Int32Array',
+ 'Int8Array',
+ 'Uint16Array',
+ 'Uint32Array',
+ 'Uint8Array',
+ 'Uint8ClampedArray'
+];
+
+var g = typeof globalThis === 'undefined' ? global : globalThis;
+
+module.exports = function availableTypedArrays() {
+ var out = [];
+ for (var i = 0; i < possibleNames.length; i++) {
+ if (typeof g[possibleNames[i]] === 'function') {
+ out[out.length] = possibleNames[i];
+ }
+ }
+ return out;
+};
diff --git a/node_modules/available-typed-arrays/package.json b/node_modules/available-typed-arrays/package.json
new file mode 100644
index 000000000..08f307c71
--- /dev/null
+++ b/node_modules/available-typed-arrays/package.json
@@ -0,0 +1,82 @@
+{
+ "name": "available-typed-arrays",
+ "version": "1.0.5",
+ "description": "Returns an array of Typed Array names that are available in the current environment",
+ "main": "index.js",
+ "type": "commonjs",
+ "exports": {
+ ".": [
+ {
+ "default": "./index.js"
+ },
+ "./index.js"
+ ],
+ "./package": "./package.json",
+ "./package.json": "./package.json"
+ },
+ "sideEffects": false,
+ "scripts": {
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prepublishOnly": "safe-publish-latest",
+ "prelint": "evalmd README.md",
+ "lint": "eslint --ext=js,mjs .",
+ "pretest": "npm run lint",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "test:harmony": "nyc node --harmony --es-staging test",
+ "test": "npm run tests-only && npm run test:harmony",
+ "posttest": "aud --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/inspect-js/available-typed-arrays.git"
+ },
+ "keywords": [
+ "typed",
+ "arrays",
+ "Float32Array",
+ "Float64Array",
+ "Int8Array",
+ "Int16Array",
+ "Int32Array",
+ "Uint8Array",
+ "Uint8ClampedArray",
+ "Uint16Array",
+ "Uint32Array",
+ "BigInt64Array",
+ "BigUint64Array"
+ ],
+ "author": "Jordan Harband ",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/inspect-js/available-typed-arrays/issues"
+ },
+ "homepage": "https://github.com/inspect-js/available-typed-arrays#readme",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "devDependencies": {
+ "@ljharb/eslint-config": "^18.0.0",
+ "array.prototype.every": "^1.1.2",
+ "aud": "^1.1.5",
+ "auto-changelog": "^2.3.0",
+ "eslint": "^7.32.0",
+ "evalmd": "^0.0.19",
+ "isarray": "^2.0.5",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^1.1.4",
+ "tape": "^5.3.1"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ }
+}
diff --git a/node_modules/available-typed-arrays/test/index.js b/node_modules/available-typed-arrays/test/index.js
new file mode 100644
index 000000000..21c986dc8
--- /dev/null
+++ b/node_modules/available-typed-arrays/test/index.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var test = require('tape');
+var isArray = require('isarray');
+var every = require('array.prototype.every');
+
+var availableTypedArrays = require('../');
+
+test('available typed arrays', function (t) {
+ t.equal(typeof availableTypedArrays, 'function', 'is a function');
+
+ var arrays = availableTypedArrays();
+ t.equal(isArray(arrays), true, 'returns an array');
+
+ t.equal(every(arrays, function (array) { return typeof array === 'string'; }), true, 'contains only strings');
+
+ t.end();
+});
diff --git a/node_modules/define-properties/.eslintrc b/node_modules/define-properties/.eslintrc
index db992d7a9..4297a97f6 100644
--- a/node_modules/define-properties/.eslintrc
+++ b/node_modules/define-properties/.eslintrc
@@ -5,8 +5,15 @@
"rules": {
"id-length": [2, { "min": 1, "max": 35 }],
- "max-lines-per-function": [2, 100],
"max-params": [2, 4],
- "max-statements": [2, 13]
- }
+ },
+
+ "overrides": [
+ {
+ "files": "test/**",
+ "rules": {
+ "max-lines-per-function": 0,
+ },
+ },
+ ],
}
diff --git a/node_modules/define-properties/.github/FUNDING.yml b/node_modules/define-properties/.github/FUNDING.yml
new file mode 100644
index 000000000..c70f264ad
--- /dev/null
+++ b/node_modules/define-properties/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/define-properties
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/node_modules/define-properties/.jscs.json b/node_modules/define-properties/.jscs.json
deleted file mode 100644
index 6f2d7f9ff..000000000
--- a/node_modules/define-properties/.jscs.json
+++ /dev/null
@@ -1,175 +0,0 @@
-{
- "es3": true,
-
- "additionalRules": [],
-
- "requireSemicolons": true,
-
- "disallowMultipleSpaces": true,
-
- "disallowIdentifierNames": [],
-
- "requireCurlyBraces": {
- "allExcept": [],
- "keywords": ["if", "else", "for", "while", "do", "try", "catch"]
- },
-
- "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"],
-
- "disallowSpaceAfterKeywords": [],
-
- "disallowSpaceBeforeComma": true,
- "disallowSpaceAfterComma": false,
- "disallowSpaceBeforeSemicolon": true,
-
- "disallowNodeTypes": [
- "DebuggerStatement",
- "LabeledStatement",
- "SwitchCase",
- "SwitchStatement",
- "WithStatement"
- ],
-
- "requireObjectKeysOnNewLine": { "allExcept": ["sameLine"] },
-
- "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true },
- "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
- "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
- "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
- "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
-
- "requireSpaceBetweenArguments": true,
-
- "disallowSpacesInsideParentheses": true,
-
- "disallowSpacesInsideArrayBrackets": true,
-
- "disallowQuotedKeysInObjects": { "allExcept": ["reserved"] },
-
- "disallowSpaceAfterObjectKeys": true,
-
- "requireCommaBeforeLineBreak": true,
-
- "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
- "requireSpaceAfterPrefixUnaryOperators": [],
-
- "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
- "requireSpaceBeforePostfixUnaryOperators": [],
-
- "disallowSpaceBeforeBinaryOperators": [],
- "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
-
- "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
- "disallowSpaceAfterBinaryOperators": [],
-
- "disallowImplicitTypeConversion": ["binary", "string"],
-
- "disallowKeywords": ["with", "eval"],
-
- "requireKeywordsOnNewLine": [],
- "disallowKeywordsOnNewLine": ["else"],
-
- "requireLineFeedAtFileEnd": true,
-
- "disallowTrailingWhitespace": true,
-
- "disallowTrailingComma": true,
-
- "excludeFiles": ["node_modules/**", "vendor/**"],
-
- "disallowMultipleLineStrings": true,
-
- "requireDotNotation": { "allExcept": ["keywords"] },
-
- "requireParenthesesAroundIIFE": true,
-
- "validateLineBreaks": "LF",
-
- "validateQuoteMarks": {
- "escape": true,
- "mark": "'"
- },
-
- "disallowOperatorBeforeLineBreak": [],
-
- "requireSpaceBeforeKeywords": [
- "do",
- "for",
- "if",
- "else",
- "switch",
- "case",
- "try",
- "catch",
- "finally",
- "while",
- "with",
- "return"
- ],
-
- "validateAlignedFunctionParameters": {
- "lineBreakAfterOpeningBraces": true,
- "lineBreakBeforeClosingBraces": true
- },
-
- "requirePaddingNewLinesBeforeExport": true,
-
- "validateNewlineAfterArrayElements": {
- "maximum": 3
- },
-
- "requirePaddingNewLinesAfterUseStrict": true,
-
- "disallowArrowFunctions": true,
-
- "disallowMultiLineTernary": true,
-
- "validateOrderInObjectKeys": "asc-insensitive",
-
- "disallowIdenticalDestructuringNames": true,
-
- "disallowNestedTernaries": { "maxLevel": 1 },
-
- "requireSpaceAfterComma": { "allExcept": ["trailing"] },
- "requireAlignedMultilineParams": false,
-
- "requireSpacesInGenerator": {
- "afterStar": true
- },
-
- "disallowSpacesInGenerator": {
- "beforeStar": true
- },
-
- "disallowVar": false,
-
- "requireArrayDestructuring": false,
-
- "requireEnhancedObjectLiterals": false,
-
- "requireObjectDestructuring": false,
-
- "requireEarlyReturn": false,
-
- "requireCapitalizedConstructorsNew": {
- "allExcept": ["Function", "String", "Object", "Symbol", "Number", "Date", "RegExp", "Error", "Boolean", "Array"]
- },
-
- "requireImportAlphabetized": false,
-
- "requireSpaceBeforeObjectValues": true,
- "requireSpaceBeforeDestructuredValues": true,
-
- "disallowSpacesInsideTemplateStringPlaceholders": true,
-
- "disallowArrayDestructuringReturn": false,
-
- "requireNewlineBeforeSingleStatementsInIf": false,
-
- "disallowUnusedVariables": true,
-
- "requireSpacesInsideImportedObjectBraces": true,
-
- "requireUseStrict": true
-}
-
diff --git a/node_modules/define-properties/.nycrc b/node_modules/define-properties/.nycrc
new file mode 100644
index 000000000..bdd626ce9
--- /dev/null
+++ b/node_modules/define-properties/.nycrc
@@ -0,0 +1,9 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/node_modules/define-properties/.travis.yml b/node_modules/define-properties/.travis.yml
deleted file mode 100644
index ec72d5f3d..000000000
--- a/node_modules/define-properties/.travis.yml
+++ /dev/null
@@ -1,233 +0,0 @@
-language: node_js
-os:
- - linux
-node_js:
- - "10.8"
- - "9.11"
- - "8.11"
- - "7.10"
- - "6.14"
- - "5.12"
- - "4.9"
- - "iojs-v3.3"
- - "iojs-v2.5"
- - "iojs-v1.8"
- - "0.12"
- - "0.10"
- - "0.8"
-before_install:
- - 'case "${TRAVIS_NODE_VERSION}" in 0.*) export NPM_CONFIG_STRICT_SSL=false ;; esac'
- - 'nvm install-latest-npm'
-install:
- - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ] || [ "${TRAVIS_NODE_VERSION}" = "0.9" ]; then nvm install --latest-npm 0.8 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;'
-script:
- - 'if [ -n "${PRETEST-}" ]; then npm run pretest ; fi'
- - 'if [ -n "${POSTTEST-}" ]; then npm run posttest ; fi'
- - 'if [ -n "${COVERAGE-}" ]; then npm run coverage ; fi'
- - 'if [ -n "${TEST-}" ]; then npm run tests-only ; fi'
-sudo: false
-env:
- - TEST=true
-matrix:
- fast_finish: true
- include:
- - node_js: "lts/*"
- env: PRETEST=true
- - node_js: "lts/*"
- env: POSTTEST=true
- - node_js: "4"
- env: COVERAGE=true
- - node_js: "10.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "10.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.10"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "9.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.10"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "8.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "7.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.13"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.12"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.11"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.10"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "6.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.11"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.10"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "5.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.8"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "4.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v3.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v3.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v3.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v2.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v2.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v2.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v2.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v2.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.7"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.5"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.4"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.3"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.2"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.1"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "iojs-v1.0"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "0.11"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "0.9"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "0.6"
- env: TEST=true ALLOW_FAILURE=true
- - node_js: "0.4"
- env: TEST=true ALLOW_FAILURE=true
- allow_failures:
- - os: osx
- - env: TEST=true ALLOW_FAILURE=true
- - env: COVERAGE=true
diff --git a/node_modules/define-properties/CHANGELOG.md b/node_modules/define-properties/CHANGELOG.md
index 5cad1e26a..9c86b5b9e 100644
--- a/node_modules/define-properties/CHANGELOG.md
+++ b/node_modules/define-properties/CHANGELOG.md
@@ -1,3 +1,22 @@
+1.1.4 / 2022-04-14
+=================
+ * [Refactor] use `has-property-descriptors`
+ * [readme] add github actions/codecov badges
+ * [Docs] fix header parsing; remove testling
+ * [Deps] update `object-keys`
+ * [meta] use `prepublishOnly` script for npm 7+
+ * [meta] add `funding` field; create FUNDING.yml
+ * [actions] add "Allow Edits" workflow; automatic rebasing / merge commit blocking
+ * [actions] reuse common workflows
+ * [actions] update codecov uploader
+ * [actions] use `node/install` instead of `node/run`; use `codecov` action
+ * [Tests] migrate tests to Github Actions
+ * [Tests] run `nyc` on all tests; use `tape` runner
+ * [Tests] use shared travis-ci config
+ * [Tests] use `npx aud` instead of `nsp` or `npm audit` with hoops
+ * [Tests] remove `jscs`
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape`; add `aud`, `safe-publish-latest`
+
1.1.3 / 2018-08-14
=================
* [Refactor] use a for loop instead of `foreach` to make for smaller bundle sizes
diff --git a/node_modules/define-properties/README.md b/node_modules/define-properties/README.md
index 33b6111f1..650adfa3a 100644
--- a/node_modules/define-properties/README.md
+++ b/node_modules/define-properties/README.md
@@ -1,6 +1,7 @@
-#define-properties [![Version Badge][npm-version-svg]][package-url]
+# define-properties [![Version Badge][npm-version-svg]][package-url]
-[![Build Status][travis-svg]][travis-url]
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
[![dependency status][deps-svg]][deps-url]
[![dev dependency status][dev-deps-svg]][dev-deps-url]
[![License][license-image]][license-url]
@@ -8,8 +9,6 @@
[![npm badge][npm-badge-png]][package-url]
-[![browser support][testling-svg]][testling-url]
-
Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.
Existing properties are not overridden. Accepts a map of property names to a predicate that, when true, force-overrides.
@@ -69,18 +68,17 @@ if (define.supportsDescriptors) {
Simply clone the repo, `npm install`, and run `npm test`
[package-url]: https://npmjs.org/package/define-properties
-[npm-version-svg]: http://versionbadg.es/ljharb/define-properties.svg
-[travis-svg]: https://travis-ci.org/ljharb/define-properties.svg
-[travis-url]: https://travis-ci.org/ljharb/define-properties
+[npm-version-svg]: https://versionbadg.es/ljharb/define-properties.svg
[deps-svg]: https://david-dm.org/ljharb/define-properties.svg
[deps-url]: https://david-dm.org/ljharb/define-properties
[dev-deps-svg]: https://david-dm.org/ljharb/define-properties/dev-status.svg
[dev-deps-url]: https://david-dm.org/ljharb/define-properties#info=devDependencies
-[testling-svg]: https://ci.testling.com/ljharb/define-properties.png
-[testling-url]: https://ci.testling.com/ljharb/define-properties
[npm-badge-png]: https://nodei.co/npm/define-properties.png?downloads=true&stars=true
-[license-image]: http://img.shields.io/npm/l/define-properties.svg
+[license-image]: https://img.shields.io/npm/l/define-properties.svg
[license-url]: LICENSE
-[downloads-image]: http://img.shields.io/npm/dm/define-properties.svg
-[downloads-url]: http://npm-stat.com/charts.html?package=define-properties
-
+[downloads-image]: https://img.shields.io/npm/dm/define-properties.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=define-properties
+[codecov-image]: https://codecov.io/gh/ljharb/define-properties/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/ljharb/define-properties/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/define-properties
+[actions-url]: https://github.com/ljharb/define-properties/actions
diff --git a/node_modules/define-properties/index.js b/node_modules/define-properties/index.js
index cb3ae1c7c..453afb9ed 100644
--- a/node_modules/define-properties/index.js
+++ b/node_modules/define-properties/index.js
@@ -11,20 +11,9 @@ var isFunction = function (fn) {
return typeof fn === 'function' && toStr.call(fn) === '[object Function]';
};
-var arePropertyDescriptorsSupported = function () {
- var obj = {};
- try {
- origDefineProperty(obj, 'x', { enumerable: false, value: obj });
- // eslint-disable-next-line no-unused-vars, no-restricted-syntax
- for (var _ in obj) { // jscs:ignore disallowUnusedVariables
- return false;
- }
- return obj.x === obj;
- } catch (e) { /* this is IE 8. */
- return false;
- }
-};
-var supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();
+var hasPropertyDescriptors = require('has-property-descriptors')();
+
+var supportsDescriptors = origDefineProperty && hasPropertyDescriptors;
var defineProperty = function (object, name, value, predicate) {
if (name in object && (!isFunction(predicate) || !predicate())) {
@@ -38,7 +27,7 @@ var defineProperty = function (object, name, value, predicate) {
writable: true
});
} else {
- object[name] = value;
+ object[name] = value; // eslint-disable-line no-param-reassign
}
};
diff --git a/node_modules/define-properties/package.json b/node_modules/define-properties/package.json
index 8bdb3571e..215a7e93b 100644
--- a/node_modules/define-properties/package.json
+++ b/node_modules/define-properties/package.json
@@ -1,21 +1,21 @@
{
"name": "define-properties",
- "version": "1.1.3",
- "author": "Jordan Harband",
+ "version": "1.1.4",
+ "author": "Jordan Harband ",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
"description": "Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.",
"license": "MIT",
"main": "index.js",
"scripts": {
- "pretest": "npm run --silent lint",
- "test": "npm run --silent tests-only",
- "posttest": "npm run --silent security",
- "tests-only": "node test/index.js",
- "coverage": "covert test/*.js",
- "coverage-quiet": "covert test/*.js --quiet",
- "lint": "npm run --silent jscs && npm run --silent eslint",
- "jscs": "jscs test/*.js *.js",
- "eslint": "eslint test/*.js *.js",
- "security": "nsp check"
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prepublishOnly": "safe-publish-latest",
+ "pretest": "npm run lint",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "lint": "eslint --ext=js,mjs ."
},
"repository": {
"type": "git",
@@ -31,15 +31,16 @@
"ES5"
],
"dependencies": {
- "object-keys": "^1.0.12"
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
},
"devDependencies": {
- "@ljharb/eslint-config": "^13.0.0",
- "covert": "^1.1.0",
- "eslint": "^5.3.0",
- "jscs": "^3.0.7",
- "nsp": "^3.2.1",
- "tape": "^4.9.0"
+ "@ljharb/eslint-config": "^21.0.0",
+ "aud": "^2.0.0",
+ "eslint": "=8.8.0",
+ "nyc": "^10.3.2",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.5.3"
},
"testling": {
"files": "test/index.js",
diff --git a/node_modules/define-properties/test/index.js b/node_modules/define-properties/test/index.js
deleted file mode 100644
index 3387f6bc7..000000000
--- a/node_modules/define-properties/test/index.js
+++ /dev/null
@@ -1,125 +0,0 @@
-'use strict';
-
-var define = require('../');
-var test = require('tape');
-var keys = require('object-keys');
-
-var arePropertyDescriptorsSupported = function () {
- var obj = { a: 1 };
- try {
- Object.defineProperty(obj, 'x', { value: obj });
- return obj.x === obj;
- } catch (e) { /* this is IE 8. */
- return false;
- }
-};
-var descriptorsSupported = !!Object.defineProperty && arePropertyDescriptorsSupported();
-
-var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
-
-test('defineProperties', function (dt) {
- dt.test('with descriptor support', { skip: !descriptorsSupported }, function (t) {
- var getDescriptor = function (value) {
- return {
- configurable: true,
- enumerable: false,
- value: value,
- writable: true
- };
- };
-
- var obj = {
- a: 1,
- b: 2,
- c: 3
- };
- t.deepEqual(keys(obj), ['a', 'b', 'c'], 'all literal-set keys start enumerable');
- define(obj, {
- b: 3,
- c: 4,
- d: 5
- });
- t.deepEqual(obj, {
- a: 1,
- b: 2,
- c: 3
- }, 'existing properties were not overridden');
- t.deepEqual(Object.getOwnPropertyDescriptor(obj, 'd'), getDescriptor(5), 'new property "d" was added and is not enumerable');
- t.deepEqual(['a', 'b', 'c'], keys(obj), 'new keys are not enumerable');
-
- define(obj, {
- a: 2,
- b: 3,
- c: 4
- }, {
- a: function () { return true; },
- b: function () { return false; }
- });
- t.deepEqual(obj, {
- b: 2,
- c: 3
- }, 'properties only overriden when predicate exists and returns true');
- t.deepEqual(Object.getOwnPropertyDescriptor(obj, 'd'), getDescriptor(5), 'existing property "d" remained and is not enumerable');
- t.deepEqual(Object.getOwnPropertyDescriptor(obj, 'a'), getDescriptor(2), 'existing property "a" was overridden and is not enumerable');
- t.deepEqual(['b', 'c'], keys(obj), 'overridden keys are not enumerable');
-
- t.end();
- });
-
- dt.test('without descriptor support', { skip: descriptorsSupported }, function (t) {
- var obj = {
- a: 1,
- b: 2,
- c: 3
- };
- define(obj, {
- b: 3,
- c: 4,
- d: 5
- });
- t.deepEqual(obj, {
- a: 1,
- b: 2,
- c: 3,
- d: 5
- }, 'existing properties were not overridden, new properties were added');
-
- define(obj, {
- a: 2,
- b: 3,
- c: 4
- }, {
- a: function () { return true; },
- b: function () { return false; }
- });
- t.deepEqual(obj, {
- a: 2,
- b: 2,
- c: 3,
- d: 5
- }, 'properties only overriden when predicate exists and returns true');
-
- t.end();
- });
-
- dt.end();
-});
-
-test('symbols', { skip: !hasSymbols }, function (t) {
- var sym = Symbol('foo');
- var obj = {};
- var aValue = {};
- var bValue = {};
- var properties = { a: aValue };
- properties[sym] = bValue;
-
- define(obj, properties);
-
- t.deepEqual(Object.keys(obj), [], 'object has no enumerable keys');
- t.deepEqual(Object.getOwnPropertyNames(obj), ['a'], 'object has non-enumerable "a" key');
- t.deepEqual(Object.getOwnPropertySymbols(obj), [sym], 'object has non-enumerable symbol key');
- t.equal(obj.a, aValue, 'string keyed value is defined');
- t.equal(obj[sym], bValue, 'symbol keyed value is defined');
-
- t.end();
-});
diff --git a/node_modules/error-ex/LICENSE b/node_modules/error-ex/LICENSE
deleted file mode 100644
index 0a5f461a6..000000000
--- a/node_modules/error-ex/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 JD Ballard
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/error-ex/README.md b/node_modules/error-ex/README.md
deleted file mode 100644
index 97f744af8..000000000
--- a/node_modules/error-ex/README.md
+++ /dev/null
@@ -1,144 +0,0 @@
-# node-error-ex [](https://travis-ci.org/Qix-/node-error-ex) [](https://coveralls.io/r/Qix-/node-error-ex)
-> Easily subclass and customize new Error types
-
-## Examples
-To include in your project:
-```javascript
-var errorEx = require('error-ex');
-```
-
-To create an error message type with a specific name (note, that `ErrorFn.name`
-will not reflect this):
-```javascript
-var JSONError = errorEx('JSONError');
-
-var err = new JSONError('error');
-err.name; //-> JSONError
-throw err; //-> JSONError: error
-```
-
-To add a stack line:
-```javascript
-var JSONError = errorEx('JSONError', {fileName: errorEx.line('in %s')});
-
-var err = new JSONError('error')
-err.fileName = '/a/b/c/foo.json';
-throw err; //-> (line 2)-> in /a/b/c/foo.json
-```
-
-To append to the error message:
-```javascript
-var JSONError = errorEx('JSONError', {fileName: errorEx.append('in %s')});
-
-var err = new JSONError('error');
-err.fileName = '/a/b/c/foo.json';
-throw err; //-> JSONError: error in /a/b/c/foo.json
-```
-
-## API
-
-#### `errorEx([name], [properties])`
-Creates a new ErrorEx error type
-
-- `name`: the name of the new type (appears in the error message upon throw;
- defaults to `Error.name`)
-- `properties`: if supplied, used as a key/value dictionary of properties to
- use when building up the stack message. Keys are property names that are
- looked up on the error message, and then passed to function values.
- - `line`: if specified and is a function, return value is added as a stack
- entry (error-ex will indent for you). Passed the property value given
- the key.
- - `stack`: if specified and is a function, passed the value of the property
- using the key, and the raw stack lines as a second argument. Takes no
- return value (but the stack can be modified directly).
- - `message`: if specified and is a function, return value is used as new
- `.message` value upon get. Passed the property value of the property named
- by key, and the existing message is passed as the second argument as an
- array of lines (suitable for multi-line messages).
-
-Returns a constructor (Function) that can be used just like the regular Error
-constructor.
-
-```javascript
-var errorEx = require('error-ex');
-
-var BasicError = errorEx();
-
-var NamedError = errorEx('NamedError');
-
-// --
-
-var AdvancedError = errorEx('AdvancedError', {
- foo: {
- line: function (value, stack) {
- if (value) {
- return 'bar ' + value;
- }
- return null;
- }
- }
-}
-
-var err = new AdvancedError('hello, world');
-err.foo = 'baz';
-throw err;
-
-/*
- AdvancedError: hello, world
- bar baz
- at tryReadme() (readme.js:20:1)
-*/
-```
-
-#### `errorEx.line(str)`
-Creates a stack line using a delimiter
-
-> This is a helper function. It is to be used in lieu of writing a value object
-> for `properties` values.
-
-- `str`: The string to create
- - Use the delimiter `%s` to specify where in the string the value should go
-
-```javascript
-var errorEx = require('error-ex');
-
-var FileError = errorEx('FileError', {fileName: errorEx.line('in %s')});
-
-var err = new FileError('problem reading file');
-err.fileName = '/a/b/c/d/foo.js';
-throw err;
-
-/*
- FileError: problem reading file
- in /a/b/c/d/foo.js
- at tryReadme() (readme.js:7:1)
-*/
-```
-
-#### `errorEx.append(str)`
-Appends to the `error.message` string
-
-> This is a helper function. It is to be used in lieu of writing a value object
-> for `properties` values.
-
-- `str`: The string to append
- - Use the delimiter `%s` to specify where in the string the value should go
-
-```javascript
-var errorEx = require('error-ex');
-
-var SyntaxError = errorEx('SyntaxError', {fileName: errorEx.append('in %s')});
-
-var err = new SyntaxError('improper indentation');
-err.fileName = '/a/b/c/d/foo.js';
-throw err;
-
-/*
- SyntaxError: improper indentation in /a/b/c/d/foo.js
- at tryReadme() (readme.js:7:1)
-*/
-```
-
-## License
-Licensed under the [MIT License](http://opensource.org/licenses/MIT).
-You can find a copy of it in [LICENSE](LICENSE).
diff --git a/node_modules/error-ex/index.js b/node_modules/error-ex/index.js
deleted file mode 100644
index 4fb20b487..000000000
--- a/node_modules/error-ex/index.js
+++ /dev/null
@@ -1,141 +0,0 @@
-'use strict';
-
-var util = require('util');
-var isArrayish = require('is-arrayish');
-
-var errorEx = function errorEx(name, properties) {
- if (!name || name.constructor !== String) {
- properties = name || {};
- name = Error.name;
- }
-
- var errorExError = function ErrorEXError(message) {
- if (!this) {
- return new ErrorEXError(message);
- }
-
- message = message instanceof Error
- ? message.message
- : (message || this.message);
-
- Error.call(this, message);
- Error.captureStackTrace(this, errorExError);
-
- this.name = name;
-
- Object.defineProperty(this, 'message', {
- configurable: true,
- enumerable: false,
- get: function () {
- var newMessage = message.split(/\r?\n/g);
-
- for (var key in properties) {
- if (!properties.hasOwnProperty(key)) {
- continue;
- }
-
- var modifier = properties[key];
-
- if ('message' in modifier) {
- newMessage = modifier.message(this[key], newMessage) || newMessage;
- if (!isArrayish(newMessage)) {
- newMessage = [newMessage];
- }
- }
- }
-
- return newMessage.join('\n');
- },
- set: function (v) {
- message = v;
- }
- });
-
- var overwrittenStack = null;
-
- var stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack');
- var stackGetter = stackDescriptor.get;
- var stackValue = stackDescriptor.value;
- delete stackDescriptor.value;
- delete stackDescriptor.writable;
-
- stackDescriptor.set = function (newstack) {
- overwrittenStack = newstack;
- };
-
- stackDescriptor.get = function () {
- var stack = (overwrittenStack || ((stackGetter)
- ? stackGetter.call(this)
- : stackValue)).split(/\r?\n+/g);
-
- // starting in Node 7, the stack builder caches the message.
- // just replace it.
- if (!overwrittenStack) {
- stack[0] = this.name + ': ' + this.message;
- }
-
- var lineCount = 1;
- for (var key in properties) {
- if (!properties.hasOwnProperty(key)) {
- continue;
- }
-
- var modifier = properties[key];
-
- if ('line' in modifier) {
- var line = modifier.line(this[key]);
- if (line) {
- stack.splice(lineCount++, 0, ' ' + line);
- }
- }
-
- if ('stack' in modifier) {
- modifier.stack(this[key], stack);
- }
- }
-
- return stack.join('\n');
- };
-
- Object.defineProperty(this, 'stack', stackDescriptor);
- };
-
- if (Object.setPrototypeOf) {
- Object.setPrototypeOf(errorExError.prototype, Error.prototype);
- Object.setPrototypeOf(errorExError, Error);
- } else {
- util.inherits(errorExError, Error);
- }
-
- return errorExError;
-};
-
-errorEx.append = function (str, def) {
- return {
- message: function (v, message) {
- v = v || def;
-
- if (v) {
- message[0] += ' ' + str.replace('%s', v.toString());
- }
-
- return message;
- }
- };
-};
-
-errorEx.line = function (str, def) {
- return {
- line: function (v) {
- v = v || def;
-
- if (v) {
- return str.replace('%s', v.toString());
- }
-
- return null;
- }
- };
-};
-
-module.exports = errorEx;
diff --git a/node_modules/error-ex/package.json b/node_modules/error-ex/package.json
deleted file mode 100644
index f3d9ae0e3..000000000
--- a/node_modules/error-ex/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "error-ex",
- "description": "Easy error subclassing and stack customization",
- "version": "1.3.2",
- "maintainers": [
- "Josh Junon (github.com/qix-)",
- "Sindre Sorhus (sindresorhus.com)"
- ],
- "keywords": [
- "error",
- "errors",
- "extend",
- "extending",
- "extension",
- "subclass",
- "stack",
- "custom"
- ],
- "license": "MIT",
- "scripts": {
- "pretest": "xo",
- "test": "mocha --compilers coffee:coffee-script/register"
- },
- "xo": {
- "rules": {
- "operator-linebreak": [
- 0
- ]
- }
- },
- "repository": "qix-/node-error-ex",
- "files": [
- "index.js"
- ],
- "devDependencies": {
- "coffee-script": "^1.9.3",
- "coveralls": "^2.11.2",
- "istanbul": "^0.3.17",
- "mocha": "^2.2.5",
- "should": "^7.0.1",
- "xo": "^0.7.1"
- },
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
-}
diff --git a/node_modules/es-abstract/.editorconfig b/node_modules/es-abstract/.editorconfig
index eaa214161..4598a381a 100644
--- a/node_modules/es-abstract/.editorconfig
+++ b/node_modules/es-abstract/.editorconfig
@@ -11,3 +11,5 @@ trim_trailing_whitespace = true;
spaces_in_brackets = false;
end_of_line = lf;
+[CHANGELOG.md]
+indent_style = space
diff --git a/node_modules/es-abstract/.eslintrc b/node_modules/es-abstract/.eslintrc
index 1a0d2d2ba..3d3372ac4 100644
--- a/node_modules/es-abstract/.eslintrc
+++ b/node_modules/es-abstract/.eslintrc
@@ -9,18 +9,18 @@
"rules": {
"array-bracket-newline": 0,
- "array-element-newline": 0,
"complexity": 0,
"eqeqeq": [2, "allow-null"],
"func-name-matching": 0,
"id-length": [2, { "min": 1, "max": 40 }],
"max-params": [2, 4],
+ "max-lines-per-function": 1,
+ "max-statements": 1,
"max-statements-per-line": [2, { "max": 2 }],
"multiline-comment-style": 0,
"no-magic-numbers": 0,
"new-cap": 0,
"no-extra-parens": 1,
- "operator-linebreak": [2, "before"],
"sort-keys": 0,
},
@@ -46,9 +46,12 @@
],
"extends": "@ljharb/eslint-config/node/latest",
"rules": {
+ "complexity": 0,
"func-style": 0,
"max-lines-per-function": 0,
"max-nested-callbacks": 0,
+ "max-statements": 0,
+ "no-magic-numbers": 0,
"no-throw-literal": 0,
},
},
@@ -56,9 +59,21 @@
"files": "test/**",
"extends": "@ljharb/eslint-config/tests",
"rules": {
+ "max-len": 0,
"max-lines-per-function": 0,
"no-implicit-coercion": 0,
"no-invalid-this": 1,
+ "prefer-promise-reject-errors": 0,
+ },
+ },
+ {
+ "files": "*/RawBytesToNum*.js",
+ "rules": {
+ "operator-linebreak": [2, "before", {
+ "overrides": {
+ "=": "none"
+ }
+ }],
},
},
],
diff --git a/node_modules/es-abstract/.gitattributes b/node_modules/es-abstract/.gitattributes
deleted file mode 100644
index cbdb52f92..000000000
--- a/node_modules/es-abstract/.gitattributes
+++ /dev/null
@@ -1,625 +0,0 @@
-2015/AbstractRelationalComparison.js spackled linguist-generated=true
-2015/DateFromTime.js spackled linguist-generated=true
-2015/Day.js spackled linguist-generated=true
-2015/DayFromYear.js spackled linguist-generated=true
-2015/DayWithinYear.js spackled linguist-generated=true
-2015/DaysInYear.js spackled linguist-generated=true
-2015/HourFromTime.js spackled linguist-generated=true
-2015/InLeapYear.js spackled linguist-generated=true
-2015/IsCallable.js spackled linguist-generated=true
-2015/IsPropertyDescriptor.js spackled linguist-generated=true
-2015/MakeDate.js spackled linguist-generated=true
-2015/MakeDay.js spackled linguist-generated=true
-2015/MakeTime.js spackled linguist-generated=true
-2015/MinFromTime.js spackled linguist-generated=true
-2015/MonthFromTime.js spackled linguist-generated=true
-2015/SameValue.js spackled linguist-generated=true
-2015/SecFromTime.js spackled linguist-generated=true
-2015/StrictEqualityComparison.js spackled linguist-generated=true
-2015/TimeClip.js spackled linguist-generated=true
-2015/TimeFromYear.js spackled linguist-generated=true
-2015/TimeWithinDay.js spackled linguist-generated=true
-2015/ToBoolean.js spackled linguist-generated=true
-2015/ToInt32.js spackled linguist-generated=true
-2015/ToPropertyDescriptor.js spackled linguist-generated=true
-2015/ToUint16.js spackled linguist-generated=true
-2015/ToUint32.js spackled linguist-generated=true
-2015/WeekDay.js spackled linguist-generated=true
-2015/YearFromTime.js spackled linguist-generated=true
-2015/abs.js spackled linguist-generated=true
-2015/floor.js spackled linguist-generated=true
-2015/modulo.js spackled linguist-generated=true
-2015/msFromTime.js spackled linguist-generated=true
-2016/AbstractEqualityComparison.js spackled linguist-generated=true
-2016/AbstractRelationalComparison.js spackled linguist-generated=true
-2016/AdvanceStringIndex.js spackled linguist-generated=true
-2016/ArrayCreate.js spackled linguist-generated=true
-2016/ArraySetLength.js spackled linguist-generated=true
-2016/ArraySpeciesCreate.js spackled linguist-generated=true
-2016/Call.js spackled linguist-generated=true
-2016/CanonicalNumericIndexString.js spackled linguist-generated=true
-2016/CompletePropertyDescriptor.js spackled linguist-generated=true
-2016/CreateDataProperty.js spackled linguist-generated=true
-2016/CreateDataPropertyOrThrow.js spackled linguist-generated=true
-2016/CreateHTML.js spackled linguist-generated=true
-2016/CreateIterResultObject.js spackled linguist-generated=true
-2016/CreateListFromArrayLike.js spackled linguist-generated=true
-2016/CreateMethodProperty.js spackled linguist-generated=true
-2016/DateFromTime.js spackled linguist-generated=true
-2016/Day.js spackled linguist-generated=true
-2016/DayFromYear.js spackled linguist-generated=true
-2016/DayWithinYear.js spackled linguist-generated=true
-2016/DaysInYear.js spackled linguist-generated=true
-2016/DefinePropertyOrThrow.js spackled linguist-generated=true
-2016/DeletePropertyOrThrow.js spackled linguist-generated=true
-2016/EnumerableOwnNames.js spackled linguist-generated=true
-2016/FromPropertyDescriptor.js spackled linguist-generated=true
-2016/Get.js spackled linguist-generated=true
-2016/GetIterator.js spackled linguist-generated=true
-2016/GetMethod.js spackled linguist-generated=true
-2016/GetOwnPropertyKeys.js spackled linguist-generated=true
-2016/GetPrototypeFromConstructor.js spackled linguist-generated=true
-2016/GetSubstitution.js spackled linguist-generated=true
-2016/GetV.js spackled linguist-generated=true
-2016/HasOwnProperty.js spackled linguist-generated=true
-2016/HasProperty.js spackled linguist-generated=true
-2016/HourFromTime.js spackled linguist-generated=true
-2016/InLeapYear.js spackled linguist-generated=true
-2016/InstanceofOperator.js spackled linguist-generated=true
-2016/Invoke.js spackled linguist-generated=true
-2016/IsAccessorDescriptor.js spackled linguist-generated=true
-2016/IsArray.js spackled linguist-generated=true
-2016/IsCallable.js spackled linguist-generated=true
-2016/IsConcatSpreadable.js spackled linguist-generated=true
-2016/IsConstructor.js spackled linguist-generated=true
-2016/IsDataDescriptor.js spackled linguist-generated=true
-2016/IsExtensible.js spackled linguist-generated=true
-2016/IsGenericDescriptor.js spackled linguist-generated=true
-2016/IsInteger.js spackled linguist-generated=true
-2016/IsPromise.js spackled linguist-generated=true
-2016/IsPropertyDescriptor.js spackled linguist-generated=true
-2016/IsPropertyKey.js spackled linguist-generated=true
-2016/IsRegExp.js spackled linguist-generated=true
-2016/IteratorClose.js spackled linguist-generated=true
-2016/IteratorComplete.js spackled linguist-generated=true
-2016/IteratorNext.js spackled linguist-generated=true
-2016/IteratorStep.js spackled linguist-generated=true
-2016/IteratorValue.js spackled linguist-generated=true
-2016/MakeDate.js spackled linguist-generated=true
-2016/MakeDay.js spackled linguist-generated=true
-2016/MakeTime.js spackled linguist-generated=true
-2016/MinFromTime.js spackled linguist-generated=true
-2016/MonthFromTime.js spackled linguist-generated=true
-2016/ObjectCreate.js spackled linguist-generated=true
-2016/OrdinaryCreateFromConstructor.js spackled linguist-generated=true
-2016/OrdinaryDefineOwnProperty.js spackled linguist-generated=true
-2016/OrdinaryGetOwnProperty.js spackled linguist-generated=true
-2016/OrdinaryHasInstance.js spackled linguist-generated=true
-2016/OrdinaryHasProperty.js spackled linguist-generated=true
-2016/QuoteJSONString.js spackled linguist-generated=true
-2016/RegExpCreate.js spackled linguist-generated=true
-2016/RegExpExec.js spackled linguist-generated=true
-2016/RequireObjectCoercible.js spackled linguist-generated=true
-2016/SameValue.js spackled linguist-generated=true
-2016/SameValueZero.js spackled linguist-generated=true
-2016/SecFromTime.js spackled linguist-generated=true
-2016/Set.js spackled linguist-generated=true
-2016/SetFunctionName.js spackled linguist-generated=true
-2016/SetIntegrityLevel.js spackled linguist-generated=true
-2016/SpeciesConstructor.js spackled linguist-generated=true
-2016/SplitMatch.js spackled linguist-generated=true
-2016/StrictEqualityComparison.js spackled linguist-generated=true
-2016/StringCreate.js spackled linguist-generated=true
-2016/SymbolDescriptiveString.js spackled linguist-generated=true
-2016/TestIntegrityLevel.js spackled linguist-generated=true
-2016/TimeClip.js spackled linguist-generated=true
-2016/TimeFromYear.js spackled linguist-generated=true
-2016/TimeWithinDay.js spackled linguist-generated=true
-2016/ToBoolean.js spackled linguist-generated=true
-2016/ToDateString.js spackled linguist-generated=true
-2016/ToInt16.js spackled linguist-generated=true
-2016/ToInt32.js spackled linguist-generated=true
-2016/ToInt8.js spackled linguist-generated=true
-2016/ToInteger.js spackled linguist-generated=true
-2016/ToLength.js spackled linguist-generated=true
-2016/ToNumber.js spackled linguist-generated=true
-2016/ToObject.js spackled linguist-generated=true
-2016/ToPrimitive.js spackled linguist-generated=true
-2016/ToPropertyDescriptor.js spackled linguist-generated=true
-2016/ToPropertyKey.js spackled linguist-generated=true
-2016/ToString.js spackled linguist-generated=true
-2016/ToUint16.js spackled linguist-generated=true
-2016/ToUint32.js spackled linguist-generated=true
-2016/ToUint8.js spackled linguist-generated=true
-2016/ToUint8Clamp.js spackled linguist-generated=true
-2016/Type.js spackled linguist-generated=true
-2016/ValidateAndApplyPropertyDescriptor.js spackled linguist-generated=true
-2016/WeekDay.js spackled linguist-generated=true
-2016/YearFromTime.js spackled linguist-generated=true
-2016/abs.js spackled linguist-generated=true
-2016/floor.js spackled linguist-generated=true
-2016/modulo.js spackled linguist-generated=true
-2016/msFromTime.js spackled linguist-generated=true
-2016/thisBooleanValue.js spackled linguist-generated=true
-2016/thisNumberValue.js spackled linguist-generated=true
-2016/thisStringValue.js spackled linguist-generated=true
-2016/thisTimeValue.js spackled linguist-generated=true
-2017/AbstractEqualityComparison.js spackled linguist-generated=true
-2017/AbstractRelationalComparison.js spackled linguist-generated=true
-2017/AdvanceStringIndex.js spackled linguist-generated=true
-2017/ArrayCreate.js spackled linguist-generated=true
-2017/ArraySetLength.js spackled linguist-generated=true
-2017/ArraySpeciesCreate.js spackled linguist-generated=true
-2017/Call.js spackled linguist-generated=true
-2017/CanonicalNumericIndexString.js spackled linguist-generated=true
-2017/CompletePropertyDescriptor.js spackled linguist-generated=true
-2017/CreateDataProperty.js spackled linguist-generated=true
-2017/CreateDataPropertyOrThrow.js spackled linguist-generated=true
-2017/CreateHTML.js spackled linguist-generated=true
-2017/CreateIterResultObject.js spackled linguist-generated=true
-2017/CreateListFromArrayLike.js spackled linguist-generated=true
-2017/CreateMethodProperty.js spackled linguist-generated=true
-2017/DateFromTime.js spackled linguist-generated=true
-2017/Day.js spackled linguist-generated=true
-2017/DayFromYear.js spackled linguist-generated=true
-2017/DayWithinYear.js spackled linguist-generated=true
-2017/DaysInYear.js spackled linguist-generated=true
-2017/DefinePropertyOrThrow.js spackled linguist-generated=true
-2017/DeletePropertyOrThrow.js spackled linguist-generated=true
-2017/FromPropertyDescriptor.js spackled linguist-generated=true
-2017/Get.js spackled linguist-generated=true
-2017/GetIterator.js spackled linguist-generated=true
-2017/GetMethod.js spackled linguist-generated=true
-2017/GetOwnPropertyKeys.js spackled linguist-generated=true
-2017/GetPrototypeFromConstructor.js spackled linguist-generated=true
-2017/GetSubstitution.js spackled linguist-generated=true
-2017/GetV.js spackled linguist-generated=true
-2017/HasOwnProperty.js spackled linguist-generated=true
-2017/HasProperty.js spackled linguist-generated=true
-2017/HourFromTime.js spackled linguist-generated=true
-2017/InLeapYear.js spackled linguist-generated=true
-2017/InstanceofOperator.js spackled linguist-generated=true
-2017/Invoke.js spackled linguist-generated=true
-2017/IsAccessorDescriptor.js spackled linguist-generated=true
-2017/IsArray.js spackled linguist-generated=true
-2017/IsCallable.js spackled linguist-generated=true
-2017/IsConcatSpreadable.js spackled linguist-generated=true
-2017/IsConstructor.js spackled linguist-generated=true
-2017/IsDataDescriptor.js spackled linguist-generated=true
-2017/IsExtensible.js spackled linguist-generated=true
-2017/IsGenericDescriptor.js spackled linguist-generated=true
-2017/IsInteger.js spackled linguist-generated=true
-2017/IsPromise.js spackled linguist-generated=true
-2017/IsPropertyDescriptor.js spackled linguist-generated=true
-2017/IsPropertyKey.js spackled linguist-generated=true
-2017/IsRegExp.js spackled linguist-generated=true
-2017/IteratorClose.js spackled linguist-generated=true
-2017/IteratorComplete.js spackled linguist-generated=true
-2017/IteratorNext.js spackled linguist-generated=true
-2017/IteratorStep.js spackled linguist-generated=true
-2017/IteratorValue.js spackled linguist-generated=true
-2017/MakeDate.js spackled linguist-generated=true
-2017/MakeDay.js spackled linguist-generated=true
-2017/MakeTime.js spackled linguist-generated=true
-2017/MinFromTime.js spackled linguist-generated=true
-2017/MonthFromTime.js spackled linguist-generated=true
-2017/ObjectCreate.js spackled linguist-generated=true
-2017/OrdinaryCreateFromConstructor.js spackled linguist-generated=true
-2017/OrdinaryDefineOwnProperty.js spackled linguist-generated=true
-2017/OrdinaryGetOwnProperty.js spackled linguist-generated=true
-2017/OrdinaryGetPrototypeOf.js spackled linguist-generated=true
-2017/OrdinaryHasInstance.js spackled linguist-generated=true
-2017/OrdinaryHasProperty.js spackled linguist-generated=true
-2017/OrdinarySetPrototypeOf.js spackled linguist-generated=true
-2017/QuoteJSONString.js spackled linguist-generated=true
-2017/RegExpCreate.js spackled linguist-generated=true
-2017/RegExpExec.js spackled linguist-generated=true
-2017/RequireObjectCoercible.js spackled linguist-generated=true
-2017/SameValue.js spackled linguist-generated=true
-2017/SameValueNonNumber.js spackled linguist-generated=true
-2017/SameValueZero.js spackled linguist-generated=true
-2017/SecFromTime.js spackled linguist-generated=true
-2017/Set.js spackled linguist-generated=true
-2017/SetFunctionName.js spackled linguist-generated=true
-2017/SetIntegrityLevel.js spackled linguist-generated=true
-2017/SpeciesConstructor.js spackled linguist-generated=true
-2017/SplitMatch.js spackled linguist-generated=true
-2017/StrictEqualityComparison.js spackled linguist-generated=true
-2017/StringCreate.js spackled linguist-generated=true
-2017/SymbolDescriptiveString.js spackled linguist-generated=true
-2017/TestIntegrityLevel.js spackled linguist-generated=true
-2017/TimeClip.js spackled linguist-generated=true
-2017/TimeFromYear.js spackled linguist-generated=true
-2017/TimeWithinDay.js spackled linguist-generated=true
-2017/ToBoolean.js spackled linguist-generated=true
-2017/ToDateString.js spackled linguist-generated=true
-2017/ToInt16.js spackled linguist-generated=true
-2017/ToInt32.js spackled linguist-generated=true
-2017/ToInt8.js spackled linguist-generated=true
-2017/ToInteger.js spackled linguist-generated=true
-2017/ToLength.js spackled linguist-generated=true
-2017/ToNumber.js spackled linguist-generated=true
-2017/ToObject.js spackled linguist-generated=true
-2017/ToPrimitive.js spackled linguist-generated=true
-2017/ToPropertyDescriptor.js spackled linguist-generated=true
-2017/ToPropertyKey.js spackled linguist-generated=true
-2017/ToString.js spackled linguist-generated=true
-2017/ToUint16.js spackled linguist-generated=true
-2017/ToUint32.js spackled linguist-generated=true
-2017/ToUint8.js spackled linguist-generated=true
-2017/ToUint8Clamp.js spackled linguist-generated=true
-2017/Type.js spackled linguist-generated=true
-2017/UTF16Decode.js spackled linguist-generated=true
-2017/UTF16Encoding.js spackled linguist-generated=true
-2017/ValidateAndApplyPropertyDescriptor.js spackled linguist-generated=true
-2017/WeekDay.js spackled linguist-generated=true
-2017/YearFromTime.js spackled linguist-generated=true
-2017/abs.js spackled linguist-generated=true
-2017/floor.js spackled linguist-generated=true
-2017/modulo.js spackled linguist-generated=true
-2017/msFromTime.js spackled linguist-generated=true
-2017/thisBooleanValue.js spackled linguist-generated=true
-2017/thisNumberValue.js spackled linguist-generated=true
-2017/thisStringValue.js spackled linguist-generated=true
-2017/thisTimeValue.js spackled linguist-generated=true
-2018/AbstractEqualityComparison.js spackled linguist-generated=true
-2018/AbstractRelationalComparison.js spackled linguist-generated=true
-2018/AdvanceStringIndex.js spackled linguist-generated=true
-2018/ArrayCreate.js spackled linguist-generated=true
-2018/ArraySetLength.js spackled linguist-generated=true
-2018/ArraySpeciesCreate.js spackled linguist-generated=true
-2018/Call.js spackled linguist-generated=true
-2018/CanonicalNumericIndexString.js spackled linguist-generated=true
-2018/CompletePropertyDescriptor.js spackled linguist-generated=true
-2018/CreateDataProperty.js spackled linguist-generated=true
-2018/CreateDataPropertyOrThrow.js spackled linguist-generated=true
-2018/CreateHTML.js spackled linguist-generated=true
-2018/CreateIterResultObject.js spackled linguist-generated=true
-2018/CreateListFromArrayLike.js spackled linguist-generated=true
-2018/CreateMethodProperty.js spackled linguist-generated=true
-2018/DateFromTime.js spackled linguist-generated=true
-2018/Day.js spackled linguist-generated=true
-2018/DayFromYear.js spackled linguist-generated=true
-2018/DayWithinYear.js spackled linguist-generated=true
-2018/DaysInYear.js spackled linguist-generated=true
-2018/DefinePropertyOrThrow.js spackled linguist-generated=true
-2018/DeletePropertyOrThrow.js spackled linguist-generated=true
-2018/FromPropertyDescriptor.js spackled linguist-generated=true
-2018/Get.js spackled linguist-generated=true
-2018/GetIterator.js spackled linguist-generated=true
-2018/GetMethod.js spackled linguist-generated=true
-2018/GetOwnPropertyKeys.js spackled linguist-generated=true
-2018/GetPrototypeFromConstructor.js spackled linguist-generated=true
-2018/GetV.js spackled linguist-generated=true
-2018/HasOwnProperty.js spackled linguist-generated=true
-2018/HasProperty.js spackled linguist-generated=true
-2018/HourFromTime.js spackled linguist-generated=true
-2018/InLeapYear.js spackled linguist-generated=true
-2018/InstanceofOperator.js spackled linguist-generated=true
-2018/Invoke.js spackled linguist-generated=true
-2018/IsAccessorDescriptor.js spackled linguist-generated=true
-2018/IsArray.js spackled linguist-generated=true
-2018/IsCallable.js spackled linguist-generated=true
-2018/IsConcatSpreadable.js spackled linguist-generated=true
-2018/IsConstructor.js spackled linguist-generated=true
-2018/IsDataDescriptor.js spackled linguist-generated=true
-2018/IsExtensible.js spackled linguist-generated=true
-2018/IsGenericDescriptor.js spackled linguist-generated=true
-2018/IsInteger.js spackled linguist-generated=true
-2018/IsPromise.js spackled linguist-generated=true
-2018/IsPropertyKey.js spackled linguist-generated=true
-2018/IsRegExp.js spackled linguist-generated=true
-2018/IterableToList.js spackled linguist-generated=true
-2018/IteratorClose.js spackled linguist-generated=true
-2018/IteratorComplete.js spackled linguist-generated=true
-2018/IteratorNext.js spackled linguist-generated=true
-2018/IteratorStep.js spackled linguist-generated=true
-2018/IteratorValue.js spackled linguist-generated=true
-2018/MakeDate.js spackled linguist-generated=true
-2018/MakeDay.js spackled linguist-generated=true
-2018/MakeTime.js spackled linguist-generated=true
-2018/MinFromTime.js spackled linguist-generated=true
-2018/MonthFromTime.js spackled linguist-generated=true
-2018/ObjectCreate.js spackled linguist-generated=true
-2018/OrdinaryCreateFromConstructor.js spackled linguist-generated=true
-2018/OrdinaryDefineOwnProperty.js spackled linguist-generated=true
-2018/OrdinaryGetOwnProperty.js spackled linguist-generated=true
-2018/OrdinaryGetPrototypeOf.js spackled linguist-generated=true
-2018/OrdinaryHasInstance.js spackled linguist-generated=true
-2018/OrdinaryHasProperty.js spackled linguist-generated=true
-2018/OrdinarySetPrototypeOf.js spackled linguist-generated=true
-2018/RegExpCreate.js spackled linguist-generated=true
-2018/RegExpExec.js spackled linguist-generated=true
-2018/RequireObjectCoercible.js spackled linguist-generated=true
-2018/SameValue.js spackled linguist-generated=true
-2018/SameValueNonNumber.js spackled linguist-generated=true
-2018/SameValueZero.js spackled linguist-generated=true
-2018/SecFromTime.js spackled linguist-generated=true
-2018/Set.js spackled linguist-generated=true
-2018/SetFunctionName.js spackled linguist-generated=true
-2018/SetIntegrityLevel.js spackled linguist-generated=true
-2018/SpeciesConstructor.js spackled linguist-generated=true
-2018/SplitMatch.js spackled linguist-generated=true
-2018/StrictEqualityComparison.js spackled linguist-generated=true
-2018/StringCreate.js spackled linguist-generated=true
-2018/StringGetOwnProperty.js spackled linguist-generated=true
-2018/SymbolDescriptiveString.js spackled linguist-generated=true
-2018/TestIntegrityLevel.js spackled linguist-generated=true
-2018/TimeClip.js spackled linguist-generated=true
-2018/TimeFromYear.js spackled linguist-generated=true
-2018/TimeWithinDay.js spackled linguist-generated=true
-2018/ToBoolean.js spackled linguist-generated=true
-2018/ToDateString.js spackled linguist-generated=true
-2018/ToIndex.js spackled linguist-generated=true
-2018/ToInt16.js spackled linguist-generated=true
-2018/ToInt32.js spackled linguist-generated=true
-2018/ToInt8.js spackled linguist-generated=true
-2018/ToInteger.js spackled linguist-generated=true
-2018/ToLength.js spackled linguist-generated=true
-2018/ToNumber.js spackled linguist-generated=true
-2018/ToObject.js spackled linguist-generated=true
-2018/ToPrimitive.js spackled linguist-generated=true
-2018/ToPropertyDescriptor.js spackled linguist-generated=true
-2018/ToPropertyKey.js spackled linguist-generated=true
-2018/ToString.js spackled linguist-generated=true
-2018/ToUint16.js spackled linguist-generated=true
-2018/ToUint32.js spackled linguist-generated=true
-2018/ToUint8.js spackled linguist-generated=true
-2018/ToUint8Clamp.js spackled linguist-generated=true
-2018/Type.js spackled linguist-generated=true
-2018/UTF16Decode.js spackled linguist-generated=true
-2018/UTF16Encoding.js spackled linguist-generated=true
-2018/ValidateAndApplyPropertyDescriptor.js spackled linguist-generated=true
-2018/WeekDay.js spackled linguist-generated=true
-2018/YearFromTime.js spackled linguist-generated=true
-2018/abs.js spackled linguist-generated=true
-2018/floor.js spackled linguist-generated=true
-2018/modulo.js spackled linguist-generated=true
-2018/msFromTime.js spackled linguist-generated=true
-2018/thisBooleanValue.js spackled linguist-generated=true
-2018/thisNumberValue.js spackled linguist-generated=true
-2018/thisStringValue.js spackled linguist-generated=true
-2018/thisTimeValue.js spackled linguist-generated=true
-2019/AbstractEqualityComparison.js spackled linguist-generated=true
-2019/AbstractRelationalComparison.js spackled linguist-generated=true
-2019/AdvanceStringIndex.js spackled linguist-generated=true
-2019/ArrayCreate.js spackled linguist-generated=true
-2019/ArraySetLength.js spackled linguist-generated=true
-2019/ArraySpeciesCreate.js spackled linguist-generated=true
-2019/Call.js spackled linguist-generated=true
-2019/CanonicalNumericIndexString.js spackled linguist-generated=true
-2019/CompletePropertyDescriptor.js spackled linguist-generated=true
-2019/CopyDataProperties.js spackled linguist-generated=true
-2019/CreateDataProperty.js spackled linguist-generated=true
-2019/CreateDataPropertyOrThrow.js spackled linguist-generated=true
-2019/CreateHTML.js spackled linguist-generated=true
-2019/CreateIterResultObject.js spackled linguist-generated=true
-2019/CreateListFromArrayLike.js spackled linguist-generated=true
-2019/CreateMethodProperty.js spackled linguist-generated=true
-2019/DateFromTime.js spackled linguist-generated=true
-2019/DateString.js spackled linguist-generated=true
-2019/Day.js spackled linguist-generated=true
-2019/DayFromYear.js spackled linguist-generated=true
-2019/DayWithinYear.js spackled linguist-generated=true
-2019/DaysInYear.js spackled linguist-generated=true
-2019/DefinePropertyOrThrow.js spackled linguist-generated=true
-2019/DeletePropertyOrThrow.js spackled linguist-generated=true
-2019/EnumerableOwnPropertyNames.js spackled linguist-generated=true
-2019/FromPropertyDescriptor.js spackled linguist-generated=true
-2019/Get.js spackled linguist-generated=true
-2019/GetIterator.js spackled linguist-generated=true
-2019/GetMethod.js spackled linguist-generated=true
-2019/GetOwnPropertyKeys.js spackled linguist-generated=true
-2019/GetPrototypeFromConstructor.js spackled linguist-generated=true
-2019/GetSubstitution.js spackled linguist-generated=true
-2019/GetV.js spackled linguist-generated=true
-2019/HasOwnProperty.js spackled linguist-generated=true
-2019/HasProperty.js spackled linguist-generated=true
-2019/HourFromTime.js spackled linguist-generated=true
-2019/InLeapYear.js spackled linguist-generated=true
-2019/InstanceofOperator.js spackled linguist-generated=true
-2019/Invoke.js spackled linguist-generated=true
-2019/IsAccessorDescriptor.js spackled linguist-generated=true
-2019/IsArray.js spackled linguist-generated=true
-2019/IsCallable.js spackled linguist-generated=true
-2019/IsConcatSpreadable.js spackled linguist-generated=true
-2019/IsConstructor.js spackled linguist-generated=true
-2019/IsDataDescriptor.js spackled linguist-generated=true
-2019/IsExtensible.js spackled linguist-generated=true
-2019/IsGenericDescriptor.js spackled linguist-generated=true
-2019/IsInteger.js spackled linguist-generated=true
-2019/IsPromise.js spackled linguist-generated=true
-2019/IsPropertyKey.js spackled linguist-generated=true
-2019/IsRegExp.js spackled linguist-generated=true
-2019/IsStringPrefix.js spackled linguist-generated=true
-2019/IterableToList.js spackled linguist-generated=true
-2019/IteratorClose.js spackled linguist-generated=true
-2019/IteratorComplete.js spackled linguist-generated=true
-2019/IteratorNext.js spackled linguist-generated=true
-2019/IteratorStep.js spackled linguist-generated=true
-2019/IteratorValue.js spackled linguist-generated=true
-2019/MakeDate.js spackled linguist-generated=true
-2019/MakeDay.js spackled linguist-generated=true
-2019/MakeTime.js spackled linguist-generated=true
-2019/MinFromTime.js spackled linguist-generated=true
-2019/MonthFromTime.js spackled linguist-generated=true
-2019/NumberToString.js spackled linguist-generated=true
-2019/ObjectCreate.js spackled linguist-generated=true
-2019/OrdinaryCreateFromConstructor.js spackled linguist-generated=true
-2019/OrdinaryDefineOwnProperty.js spackled linguist-generated=true
-2019/OrdinaryGetOwnProperty.js spackled linguist-generated=true
-2019/OrdinaryGetPrototypeOf.js spackled linguist-generated=true
-2019/OrdinaryHasInstance.js spackled linguist-generated=true
-2019/OrdinaryHasProperty.js spackled linguist-generated=true
-2019/OrdinarySetPrototypeOf.js spackled linguist-generated=true
-2019/PromiseResolve.js spackled linguist-generated=true
-2019/RegExpCreate.js spackled linguist-generated=true
-2019/RegExpExec.js spackled linguist-generated=true
-2019/RequireObjectCoercible.js spackled linguist-generated=true
-2019/SameValue.js spackled linguist-generated=true
-2019/SameValueNonNumber.js spackled linguist-generated=true
-2019/SameValueZero.js spackled linguist-generated=true
-2019/SecFromTime.js spackled linguist-generated=true
-2019/Set.js spackled linguist-generated=true
-2019/SetFunctionLength.js spackled linguist-generated=true
-2019/SetFunctionName.js spackled linguist-generated=true
-2019/SetIntegrityLevel.js spackled linguist-generated=true
-2019/SpeciesConstructor.js spackled linguist-generated=true
-2019/SplitMatch.js spackled linguist-generated=true
-2019/StrictEqualityComparison.js spackled linguist-generated=true
-2019/StringCreate.js spackled linguist-generated=true
-2019/StringGetOwnProperty.js spackled linguist-generated=true
-2019/SymbolDescriptiveString.js spackled linguist-generated=true
-2019/TestIntegrityLevel.js spackled linguist-generated=true
-2019/TimeClip.js spackled linguist-generated=true
-2019/TimeFromYear.js spackled linguist-generated=true
-2019/TimeString.js spackled linguist-generated=true
-2019/TimeWithinDay.js spackled linguist-generated=true
-2019/ToBoolean.js spackled linguist-generated=true
-2019/ToDateString.js spackled linguist-generated=true
-2019/ToIndex.js spackled linguist-generated=true
-2019/ToInt16.js spackled linguist-generated=true
-2019/ToInt32.js spackled linguist-generated=true
-2019/ToInt8.js spackled linguist-generated=true
-2019/ToInteger.js spackled linguist-generated=true
-2019/ToLength.js spackled linguist-generated=true
-2019/ToNumber.js spackled linguist-generated=true
-2019/ToObject.js spackled linguist-generated=true
-2019/ToPrimitive.js spackled linguist-generated=true
-2019/ToPropertyDescriptor.js spackled linguist-generated=true
-2019/ToPropertyKey.js spackled linguist-generated=true
-2019/ToString.js spackled linguist-generated=true
-2019/ToUint16.js spackled linguist-generated=true
-2019/ToUint32.js spackled linguist-generated=true
-2019/ToUint8.js spackled linguist-generated=true
-2019/ToUint8Clamp.js spackled linguist-generated=true
-2019/Type.js spackled linguist-generated=true
-2019/UTF16Decode.js spackled linguist-generated=true
-2019/UTF16Encoding.js spackled linguist-generated=true
-2019/UnicodeEscape.js spackled linguist-generated=true
-2019/ValidateAndApplyPropertyDescriptor.js spackled linguist-generated=true
-2019/WeekDay.js spackled linguist-generated=true
-2019/YearFromTime.js spackled linguist-generated=true
-2019/abs.js spackled linguist-generated=true
-2019/floor.js spackled linguist-generated=true
-2019/modulo.js spackled linguist-generated=true
-2019/msFromTime.js spackled linguist-generated=true
-2019/thisBooleanValue.js spackled linguist-generated=true
-2019/thisNumberValue.js spackled linguist-generated=true
-2019/thisStringValue.js spackled linguist-generated=true
-2019/thisSymbolValue.js spackled linguist-generated=true
-2020/AbstractEqualityComparison.js spackled linguist-generated=true
-2020/AbstractRelationalComparison.js spackled linguist-generated=true
-2020/AddEntriesFromIterable.js spackled linguist-generated=true
-2020/ArrayCreate.js spackled linguist-generated=true
-2020/ArraySetLength.js spackled linguist-generated=true
-2020/ArraySpeciesCreate.js spackled linguist-generated=true
-2020/Call.js spackled linguist-generated=true
-2020/CanonicalNumericIndexString.js spackled linguist-generated=true
-2020/CompletePropertyDescriptor.js spackled linguist-generated=true
-2020/CreateDataProperty.js spackled linguist-generated=true
-2020/CreateDataPropertyOrThrow.js spackled linguist-generated=true
-2020/CreateHTML.js spackled linguist-generated=true
-2020/CreateIterResultObject.js spackled linguist-generated=true
-2020/CreateMethodProperty.js spackled linguist-generated=true
-2020/DateFromTime.js spackled linguist-generated=true
-2020/DateString.js spackled linguist-generated=true
-2020/Day.js spackled linguist-generated=true
-2020/DayFromYear.js spackled linguist-generated=true
-2020/DayWithinYear.js spackled linguist-generated=true
-2020/DaysInYear.js spackled linguist-generated=true
-2020/DefinePropertyOrThrow.js spackled linguist-generated=true
-2020/DeletePropertyOrThrow.js spackled linguist-generated=true
-2020/EnumerableOwnPropertyNames.js spackled linguist-generated=true
-2020/FromPropertyDescriptor.js spackled linguist-generated=true
-2020/Get.js spackled linguist-generated=true
-2020/GetMethod.js spackled linguist-generated=true
-2020/GetOwnPropertyKeys.js spackled linguist-generated=true
-2020/GetPrototypeFromConstructor.js spackled linguist-generated=true
-2020/GetSubstitution.js spackled linguist-generated=true
-2020/GetV.js spackled linguist-generated=true
-2020/HasOwnProperty.js spackled linguist-generated=true
-2020/HasProperty.js spackled linguist-generated=true
-2020/HourFromTime.js spackled linguist-generated=true
-2020/InLeapYear.js spackled linguist-generated=true
-2020/InstanceofOperator.js spackled linguist-generated=true
-2020/Invoke.js spackled linguist-generated=true
-2020/IsAccessorDescriptor.js spackled linguist-generated=true
-2020/IsArray.js spackled linguist-generated=true
-2020/IsCallable.js spackled linguist-generated=true
-2020/IsConcatSpreadable.js spackled linguist-generated=true
-2020/IsConstructor.js spackled linguist-generated=true
-2020/IsDataDescriptor.js spackled linguist-generated=true
-2020/IsExtensible.js spackled linguist-generated=true
-2020/IsGenericDescriptor.js spackled linguist-generated=true
-2020/IsInteger.js spackled linguist-generated=true
-2020/IsPromise.js spackled linguist-generated=true
-2020/IsPropertyKey.js spackled linguist-generated=true
-2020/IsRegExp.js spackled linguist-generated=true
-2020/IsStringPrefix.js spackled linguist-generated=true
-2020/IteratorClose.js spackled linguist-generated=true
-2020/IteratorComplete.js spackled linguist-generated=true
-2020/IteratorNext.js spackled linguist-generated=true
-2020/IteratorStep.js spackled linguist-generated=true
-2020/IteratorValue.js spackled linguist-generated=true
-2020/MakeDate.js spackled linguist-generated=true
-2020/MakeDay.js spackled linguist-generated=true
-2020/MakeTime.js spackled linguist-generated=true
-2020/MinFromTime.js spackled linguist-generated=true
-2020/MonthFromTime.js spackled linguist-generated=true
-2020/OrdinaryDefineOwnProperty.js spackled linguist-generated=true
-2020/OrdinaryGetOwnProperty.js spackled linguist-generated=true
-2020/OrdinaryGetPrototypeOf.js spackled linguist-generated=true
-2020/OrdinaryHasInstance.js spackled linguist-generated=true
-2020/OrdinaryHasProperty.js spackled linguist-generated=true
-2020/OrdinarySetPrototypeOf.js spackled linguist-generated=true
-2020/PromiseResolve.js spackled linguist-generated=true
-2020/RegExpCreate.js spackled linguist-generated=true
-2020/RegExpExec.js spackled linguist-generated=true
-2020/RequireObjectCoercible.js spackled linguist-generated=true
-2020/SameValue.js spackled linguist-generated=true
-2020/SameValueZero.js spackled linguist-generated=true
-2020/SecFromTime.js spackled linguist-generated=true
-2020/Set.js spackled linguist-generated=true
-2020/SetFunctionName.js spackled linguist-generated=true
-2020/SetIntegrityLevel.js spackled linguist-generated=true
-2020/SpeciesConstructor.js spackled linguist-generated=true
-2020/SplitMatch.js spackled linguist-generated=true
-2020/StrictEqualityComparison.js spackled linguist-generated=true
-2020/StringCreate.js spackled linguist-generated=true
-2020/StringGetOwnProperty.js spackled linguist-generated=true
-2020/SymbolDescriptiveString.js spackled linguist-generated=true
-2020/TestIntegrityLevel.js spackled linguist-generated=true
-2020/TimeClip.js spackled linguist-generated=true
-2020/TimeFromYear.js spackled linguist-generated=true
-2020/TimeString.js spackled linguist-generated=true
-2020/TimeWithinDay.js spackled linguist-generated=true
-2020/ToBoolean.js spackled linguist-generated=true
-2020/ToDateString.js spackled linguist-generated=true
-2020/ToInt16.js spackled linguist-generated=true
-2020/ToInt32.js spackled linguist-generated=true
-2020/ToInt8.js spackled linguist-generated=true
-2020/ToLength.js spackled linguist-generated=true
-2020/ToObject.js spackled linguist-generated=true
-2020/ToPrimitive.js spackled linguist-generated=true
-2020/ToPropertyDescriptor.js spackled linguist-generated=true
-2020/ToPropertyKey.js spackled linguist-generated=true
-2020/ToString.js spackled linguist-generated=true
-2020/ToUint16.js spackled linguist-generated=true
-2020/ToUint32.js spackled linguist-generated=true
-2020/ToUint8.js spackled linguist-generated=true
-2020/ToUint8Clamp.js spackled linguist-generated=true
-2020/TrimString.js spackled linguist-generated=true
-2020/UTF16Encoding.js spackled linguist-generated=true
-2020/ValidateAndApplyPropertyDescriptor.js spackled linguist-generated=true
-2020/WeekDay.js spackled linguist-generated=true
-2020/YearFromTime.js spackled linguist-generated=true
-2020/abs.js spackled linguist-generated=true
-2020/floor.js spackled linguist-generated=true
-2020/modulo.js spackled linguist-generated=true
-2020/msFromTime.js spackled linguist-generated=true
-2020/thisBooleanValue.js spackled linguist-generated=true
-2020/thisNumberValue.js spackled linguist-generated=true
-2020/thisStringValue.js spackled linguist-generated=true
-2020/thisSymbolValue.js spackled linguist-generated=true
-2020/thisTimeValue.js spackled linguist-generated=true
\ No newline at end of file
diff --git a/node_modules/es-abstract/.nycrc b/node_modules/es-abstract/.nycrc
index 526adaa51..9e5435f9d 100644
--- a/node_modules/es-abstract/.nycrc
+++ b/node_modules/es-abstract/.nycrc
@@ -5,6 +5,11 @@
"exclude": [
"coverage",
"operations",
- "test"
+ "test",
+ "helpers/callBind.js",
+ "helpers/callBound.js",
+ "helpers/getOwnPropertyDescriptor.js",
+ "helpers/getSymbolDescription.js",
+ "helpers/regexTester.js"
]
}
diff --git a/node_modules/es-abstract/2015/ArrayCreate.js b/node_modules/es-abstract/2015/ArrayCreate.js
index 4d20e2e5e..cc890cafb 100644
--- a/node_modules/es-abstract/2015/ArrayCreate.js
+++ b/node_modules/es-abstract/2015/ArrayCreate.js
@@ -9,16 +9,17 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsInteger = require('./IsInteger');
+var hasProto = require('has-proto')();
+
var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || (
- // eslint-disable-next-line no-proto, no-negated-condition
- [].__proto__ !== $ArrayPrototype
- ? null
- : function (O, proto) {
+ hasProto
+ ? function (O, proto) {
O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
return O;
}
+ : null
);
// https://ecma-international.org/ecma-262/6.0/#sec-arraycreate
@@ -42,12 +43,12 @@ module.exports = function ArrayCreate(length) {
A.length = length;
}
/* step 10, the above as a shortcut for the below
- OrdinaryDefineOwnProperty(A, 'length', {
- '[[Configurable]]': false,
- '[[Enumerable]]': false,
- '[[Value]]': length,
- '[[Writable]]': true
- });
- */
+ OrdinaryDefineOwnProperty(A, 'length', {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': true
+ });
+ */
return A;
};
diff --git a/node_modules/es-abstract/2015/CharacterRange.js b/node_modules/es-abstract/2015/CharacterRange.js
new file mode 100644
index 000000000..70e4b5235
--- /dev/null
+++ b/node_modules/es-abstract/2015/CharacterRange.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $charCodeAt = callBound('%String.prototype.charCodeAt%');
+var $push = callBound('%Array.prototype.push%');
+
+module.exports = function CharacterRange(A, B) {
+ if (A.length !== 1 || B.length !== 1) {
+ throw new $TypeError('Assertion failed: CharSets A and B contain exactly one character');
+ }
+
+ var a = A[0];
+ var b = B[0];
+
+ var i = $charCodeAt(a, 0);
+ var j = $charCodeAt(b, 0);
+
+ if (!(i <= j)) {
+ throw new $TypeError('Assertion failed: i is not <= j');
+ }
+
+ var arr = [];
+ for (var k = i; k <= j; k += 1) {
+ $push(arr, $fromCharCode(k));
+ }
+ return arr;
+};
diff --git a/node_modules/es-abstract/2015/CompletionRecord.js b/node_modules/es-abstract/2015/CompletionRecord.js
new file mode 100644
index 000000000..c0ad487c1
--- /dev/null
+++ b/node_modules/es-abstract/2015/CompletionRecord.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var SLOT = require('internal-slot');
+
+// https://262.ecma-international.org/6.0/#sec-completion-record-specification-type
+
+var CompletionRecord = function CompletionRecord(type, value) {
+ if (!(this instanceof CompletionRecord)) {
+ return new CompletionRecord(type, value);
+ }
+ if (type !== 'normal' && type !== 'break' && type !== 'continue' && type !== 'return' && type !== 'throw') {
+ throw new $SyntaxError('Assertion failed: `type` must be one of "normal", "break", "continue", "return", or "throw"');
+ }
+ SLOT.set(this, '[[type]]', type);
+ SLOT.set(this, '[[value]]', value);
+ // [[target]] slot?
+};
+
+CompletionRecord.prototype.type = function type() {
+ return SLOT.get(this, '[[type]]');
+};
+
+CompletionRecord.prototype.value = function value() {
+ return SLOT.get(this, '[[value]]');
+};
+
+CompletionRecord.prototype['?'] = function ReturnIfAbrupt() {
+ var type = SLOT.get(this, '[[type]]');
+ var value = SLOT.get(this, '[[value]]');
+
+ if (type === 'normal') {
+ return value;
+ }
+ if (type === 'throw') {
+ throw value;
+ }
+ throw new $SyntaxError('Completion Record is not of type "normal" or "throw": other types not supported');
+};
+
+CompletionRecord.prototype['!'] = function assert() {
+ var type = SLOT.get(this, '[[type]]');
+
+ if (type !== 'normal') {
+ throw new $SyntaxError('Assertion failed: Completion Record is not of type "normal"');
+ }
+ return SLOT.get(this, '[[value]]');
+};
+
+module.exports = CompletionRecord;
diff --git a/node_modules/es-abstract/2015/CreateDataProperty.js b/node_modules/es-abstract/2015/CreateDataProperty.js
index ff5ca3055..02c6cd1f8 100644
--- a/node_modules/es-abstract/2015/CreateDataProperty.js
+++ b/node_modules/es-abstract/2015/CreateDataProperty.js
@@ -25,8 +25,8 @@ module.exports = function CreateDataProperty(O, P, V) {
}
var oldDesc = OrdinaryGetOwnProperty(O, P);
var extensible = !oldDesc || IsExtensible(O);
- var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']);
- if (immutable || !extensible) {
+ var nonConfigurable = oldDesc && !oldDesc['[[Configurable]]'];
+ if (nonConfigurable || !extensible) {
return false;
}
return DefineOwnProperty(
diff --git a/node_modules/es-abstract/2015/DetachArrayBuffer.js b/node_modules/es-abstract/2015/DetachArrayBuffer.js
new file mode 100644
index 000000000..a7b89b36b
--- /dev/null
+++ b/node_modules/es-abstract/2015/DetachArrayBuffer.js
@@ -0,0 +1,34 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isArrayBuffer = require('is-array-buffer');
+
+var MessageChannel;
+try {
+ // eslint-disable-next-line global-require
+ MessageChannel = require('worker_threads').MessageChannel; // node 11.7+
+} catch (e) { /**/ }
+
+// https://262.ecma-international.org/6.0/#sec-detacharraybuffer
+
+/* globals postMessage */
+
+module.exports = function DetachArrayBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
+ }
+ if (typeof structuredClone === 'function') {
+ structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
+ } else if (typeof postMessage === 'function') {
+ postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
+ } else if (MessageChannel) {
+ (new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
+ } else {
+ throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
+ }
+ return null;
+};
diff --git a/node_modules/es-abstract/2015/FromPropertyDescriptor.js b/node_modules/es-abstract/2015/FromPropertyDescriptor.js
index 9a69a2605..e142ed582 100644
--- a/node_modules/es-abstract/2015/FromPropertyDescriptor.js
+++ b/node_modules/es-abstract/2015/FromPropertyDescriptor.js
@@ -1,36 +1,16 @@
'use strict';
var assertRecord = require('../helpers/assertRecord');
+var fromPropertyDescriptor = require('../helpers/fromPropertyDescriptor');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
module.exports = function FromPropertyDescriptor(Desc) {
- if (typeof Desc === 'undefined') {
- return Desc;
+ if (typeof Desc !== 'undefined') {
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
}
- assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
-
- var obj = {};
- if ('[[Value]]' in Desc) {
- obj.value = Desc['[[Value]]'];
- }
- if ('[[Writable]]' in Desc) {
- obj.writable = Desc['[[Writable]]'];
- }
- if ('[[Get]]' in Desc) {
- obj.get = Desc['[[Get]]'];
- }
- if ('[[Set]]' in Desc) {
- obj.set = Desc['[[Set]]'];
- }
- if ('[[Enumerable]]' in Desc) {
- obj.enumerable = Desc['[[Enumerable]]'];
- }
- if ('[[Configurable]]' in Desc) {
- obj.configurable = Desc['[[Configurable]]'];
- }
- return obj;
+ return fromPropertyDescriptor(Desc);
};
diff --git a/node_modules/es-abstract/2015/Get.js b/node_modules/es-abstract/2015/Get.js
index 681055a2f..297968643 100644
--- a/node_modules/es-abstract/2015/Get.js
+++ b/node_modules/es-abstract/2015/Get.js
@@ -9,12 +9,7 @@ var inspect = require('object-inspect');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
-/**
- * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
- * 1. Assert: Type(O) is Object.
- * 2. Assert: IsPropertyKey(P) is true.
- * 3. Return O.[[Get]](P, O).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
module.exports = function Get(O, P) {
// 7.3.1.1
diff --git a/node_modules/es-abstract/2015/GetGlobalObject.js b/node_modules/es-abstract/2015/GetGlobalObject.js
new file mode 100644
index 000000000..0541ede0c
--- /dev/null
+++ b/node_modules/es-abstract/2015/GetGlobalObject.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var getGlobal = require('globalthis/polyfill');
+
+// https://262.ecma-international.org/6.0/#sec-getglobalobject
+
+module.exports = function GetGlobalObject() {
+ return getGlobal();
+};
diff --git a/node_modules/es-abstract/2015/GetIterator.js b/node_modules/es-abstract/2015/GetIterator.js
index a2d3b16cb..892197a23 100644
--- a/node_modules/es-abstract/2015/GetIterator.js
+++ b/node_modules/es-abstract/2015/GetIterator.js
@@ -20,8 +20,7 @@ module.exports = function GetIterator(obj, method) {
{
AdvanceStringIndex: AdvanceStringIndex,
GetMethod: GetMethod,
- IsArray: IsArray,
- Type: Type
+ IsArray: IsArray
},
obj
);
diff --git a/node_modules/es-abstract/2015/GetMethod.js b/node_modules/es-abstract/2015/GetMethod.js
index 775d3fb95..d3775178e 100644
--- a/node_modules/es-abstract/2015/GetMethod.js
+++ b/node_modules/es-abstract/2015/GetMethod.js
@@ -8,15 +8,9 @@ var GetV = require('./GetV');
var IsCallable = require('./IsCallable');
var IsPropertyKey = require('./IsPropertyKey');
-/**
- * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let func be GetV(O, P).
- * 3. ReturnIfAbrupt(func).
- * 4. If func is either undefined or null, return undefined.
- * 5. If IsCallable(func) is false, throw a TypeError exception.
- * 6. Return func.
- */
+var debug = require('object-inspect');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getmethod
module.exports = function GetMethod(O, P) {
// 7.3.9.1
@@ -34,7 +28,7 @@ module.exports = function GetMethod(O, P) {
// 7.3.9.5
if (!IsCallable(func)) {
- throw new $TypeError(P + 'is not a function');
+ throw new $TypeError(P + ' is not a function: ' + debug(func));
}
// 7.3.9.6
diff --git a/node_modules/es-abstract/2015/GetOwnPropertyKeys.js b/node_modules/es-abstract/2015/GetOwnPropertyKeys.js
index b8f4167f7..40c0b367f 100644
--- a/node_modules/es-abstract/2015/GetOwnPropertyKeys.js
+++ b/node_modules/es-abstract/2015/GetOwnPropertyKeys.js
@@ -6,8 +6,8 @@ var hasSymbols = require('has-symbols')();
var $TypeError = GetIntrinsic('%TypeError%');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
-var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
+var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%', true);
var keys = require('object-keys');
var esType = require('./Type');
diff --git a/node_modules/es-abstract/2015/GetPrototypeFromConstructor.js b/node_modules/es-abstract/2015/GetPrototypeFromConstructor.js
index 5f369cad8..25ee12f35 100644
--- a/node_modules/es-abstract/2015/GetPrototypeFromConstructor.js
+++ b/node_modules/es-abstract/2015/GetPrototypeFromConstructor.js
@@ -4,6 +4,7 @@ var GetIntrinsic = require('get-intrinsic');
var $Function = GetIntrinsic('%Function%');
var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
var Get = require('./Get');
var IsConstructor = require('./IsConstructor');
@@ -20,7 +21,7 @@ module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefa
if (Type(proto) !== 'Object') {
if (!(constructor instanceof $Function)) {
// ignore other realms, for now
- throw new $TypeError('cross-realm constructors not currently supported');
+ throw new $SyntaxError('cross-realm constructors not currently supported');
}
proto = intrinsic;
}
diff --git a/node_modules/es-abstract/2015/GetSubstitution.js b/node_modules/es-abstract/2015/GetSubstitution.js
index 5bdce38b6..a60d42136 100644
--- a/node_modules/es-abstract/2015/GetSubstitution.js
+++ b/node_modules/es-abstract/2015/GetSubstitution.js
@@ -8,7 +8,7 @@ var $parseInt = GetIntrinsic('%parseInt%');
var inspect = require('object-inspect');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var callBound = require('call-bind/callBound');
var every = require('../helpers/every');
diff --git a/node_modules/es-abstract/2015/GetV.js b/node_modules/es-abstract/2015/GetV.js
index 2d8cc8246..2dcddb351 100644
--- a/node_modules/es-abstract/2015/GetV.js
+++ b/node_modules/es-abstract/2015/GetV.js
@@ -7,13 +7,7 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var ToObject = require('./ToObject');
-/**
- * 7.3.2 GetV (V, P)
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let O be ToObject(V).
- * 3. ReturnIfAbrupt(O).
- * 4. Return O.[[Get]](P, V).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-getv
module.exports = function GetV(V, P) {
// 7.3.2.1
diff --git a/node_modules/es-abstract/2015/IsArray.js b/node_modules/es-abstract/2015/IsArray.js
index f933cec03..600ffa002 100644
--- a/node_modules/es-abstract/2015/IsArray.js
+++ b/node_modules/es-abstract/2015/IsArray.js
@@ -1,14 +1,4 @@
'use strict';
-var GetIntrinsic = require('get-intrinsic');
-
-var $Array = GetIntrinsic('%Array%');
-
-// eslint-disable-next-line global-require
-var toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');
-
// https://ecma-international.org/ecma-262/6.0/#sec-isarray
-
-module.exports = $Array.isArray || function IsArray(argument) {
- return toStr(argument) === '[object Array]';
-};
+module.exports = require('../helpers/IsArray');
diff --git a/node_modules/es-abstract/2015/IsCompatiblePropertyDescriptor.js b/node_modules/es-abstract/2015/IsCompatiblePropertyDescriptor.js
new file mode 100644
index 000000000..8bdaf3eb4
--- /dev/null
+++ b/node_modules/es-abstract/2015/IsCompatiblePropertyDescriptor.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
+
+// https://262.ecma-international.org/6.0/#sec-iscompatiblepropertydescriptor
+
+module.exports = function IsCompatiblePropertyDescriptor(Extensible, Desc, Current) {
+ return ValidateAndApplyPropertyDescriptor(undefined, undefined, Extensible, Desc, Current);
+};
diff --git a/node_modules/es-abstract/2015/IsDetachedBuffer.js b/node_modules/es-abstract/2015/IsDetachedBuffer.js
new file mode 100644
index 000000000..4b373e9ab
--- /dev/null
+++ b/node_modules/es-abstract/2015/IsDetachedBuffer.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $byteLength = callBound('%ArrayBuffer.prototype.byteLength%', true)
+ || function byteLength(ab) { return ab.byteLength; }; // in node < 0.11, byteLength is an own nonconfigurable property
+
+var isArrayBuffer = require('is-array-buffer');
+
+var availableTypedArrays = require('available-typed-arrays')();
+
+// https://262.ecma-international.org/6.0/#sec-isdetachedbuffer
+
+module.exports = function IsDetachedBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
+ }
+ if ($byteLength(arrayBuffer) === 0) {
+ try {
+ new global[availableTypedArrays[0]](arrayBuffer); // eslint-disable-line no-new
+ } catch (error) {
+ return error.name === 'TypeError';
+ }
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2015/IsExtensible.js b/node_modules/es-abstract/2015/IsExtensible.js
index 9df5b80b1..d6e363840 100644
--- a/node_modules/es-abstract/2015/IsExtensible.js
+++ b/node_modules/es-abstract/2015/IsExtensible.js
@@ -2,13 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $Object = GetIntrinsic('%Object%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $isExtensible = GetIntrinsic('%Object.isExtensible%', true);
var isPrimitive = require('../helpers/isPrimitive');
-var $preventExtensions = $Object.preventExtensions;
-var $isExtensible = $Object.isExtensible;
-
// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o
module.exports = $preventExtensions
diff --git a/node_modules/es-abstract/2015/IteratorClose.js b/node_modules/es-abstract/2015/IteratorClose.js
index dd1118df7..f703ea632 100644
--- a/node_modules/es-abstract/2015/IteratorClose.js
+++ b/node_modules/es-abstract/2015/IteratorClose.js
@@ -5,6 +5,7 @@ var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
var GetMethod = require('./GetMethod');
var IsCallable = require('./IsCallable');
var Type = require('./Type');
@@ -15,10 +16,10 @@ module.exports = function IteratorClose(iterator, completion) {
if (Type(iterator) !== 'Object') {
throw new $TypeError('Assertion failed: Type(iterator) is not Object');
}
- if (!IsCallable(completion)) {
- throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record');
+ if (!IsCallable(completion) && !(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a thunk representing a Completion Record, nor a Completion Record instance');
}
- var completionThunk = completion;
+ var completionThunk = completion instanceof CompletionRecord ? function () { return completion['?'](); } : completion;
var iteratorReturn = GetMethod(iterator, 'return');
diff --git a/node_modules/es-abstract/2015/NormalCompletion.js b/node_modules/es-abstract/2015/NormalCompletion.js
new file mode 100644
index 000000000..1e429dd65
--- /dev/null
+++ b/node_modules/es-abstract/2015/NormalCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/6.0/#sec-normalcompletion
+
+module.exports = function NormalCompletion(value) {
+ return new CompletionRecord('normal', value);
+};
diff --git a/node_modules/es-abstract/2015/ObjectCreate.js b/node_modules/es-abstract/2015/ObjectCreate.js
index 2851a646d..1f4bb16af 100644
--- a/node_modules/es-abstract/2015/ObjectCreate.js
+++ b/node_modules/es-abstract/2015/ObjectCreate.js
@@ -6,9 +6,14 @@ var $ObjectCreate = GetIntrinsic('%Object.create%', true);
var $TypeError = GetIntrinsic('%TypeError%');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var IsArray = require('./IsArray');
var Type = require('./Type');
-var hasProto = !({ __proto__: null } instanceof Object);
+var forEach = require('../helpers/forEach');
+
+var SLOT = require('internal-slot');
+
+var hasProto = require('has-proto')();
// https://ecma-international.org/ecma-262/6.0/#sec-objectcreate
@@ -16,22 +21,30 @@ module.exports = function ObjectCreate(proto, internalSlotsList) {
if (proto !== null && Type(proto) !== 'Object') {
throw new $TypeError('Assertion failed: `proto` must be null or an object');
}
- var slots = arguments.length < 2 ? [] : internalSlotsList;
- if (slots.length > 0) {
- throw new $SyntaxError('es-abstract does not yet support internal slots');
+ var slots = arguments.length < 2 ? [] : internalSlotsList; // step 1
+ if (arguments.length >= 2 && !IsArray(slots)) {
+ throw new $TypeError('Assertion failed: `internalSlotsList` must be an Array');
}
+ var O;
if ($ObjectCreate) {
- return $ObjectCreate(proto);
- }
- if (hasProto) {
- return { __proto__: proto };
+ O = $ObjectCreate(proto);
+ } else if (hasProto) {
+ O = { __proto__: proto };
+ } else {
+ if (proto === null) {
+ throw new $SyntaxError('native Object.create support is required to create null objects');
+ }
+ var T = function T() {};
+ T.prototype = proto;
+ O = new T();
}
- if (proto === null) {
- throw new $SyntaxError('native Object.create support is required to create null objects');
+ if (slots.length > 0) {
+ forEach(slots, function (slot) {
+ SLOT.set(O, slot, void undefined);
+ });
}
- var T = function T() {};
- T.prototype = proto;
- return new T();
+
+ return O; // step 6
};
diff --git a/node_modules/es-abstract/2015/ObjectDefineProperties.js b/node_modules/es-abstract/2015/ObjectDefineProperties.js
new file mode 100644
index 000000000..f096f1ede
--- /dev/null
+++ b/node_modules/es-abstract/2015/ObjectDefineProperties.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var Get = require('./Get');
+var ToObject = require('./ToObject');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+
+var forEach = require('../helpers/forEach');
+var getOwnPropertyDescriptor = require('gopd');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var $push = callBound('Array.prototype.push');
+
+// https://262.ecma-international.org/6.0/#sec-objectdefineproperties
+module.exports = function ObjectDefineProperties(O, Properties) {
+ var props = ToObject(Properties); // step 1
+ var keys = OwnPropertyKeys(props); // step 2
+ var descriptors = []; // step 3
+
+ forEach(keys, function (nextKey) { // step 4
+ var propDesc = ToPropertyDescriptor(getOwnPropertyDescriptor(props, nextKey)); // step 4.a
+ if (typeof propDesc !== 'undefined' && propDesc['[[Enumerable]]']) { // step 4.b
+ var descObj = Get(props, nextKey); // step 4.b.i
+ var desc = ToPropertyDescriptor(descObj); // step 4.b.ii
+ $push(descriptors, [nextKey, desc]); // step 4.b.iii
+ }
+ });
+
+ forEach(descriptors, function (pair) { // step 5
+ var P = pair[0]; // step 5.a
+ var desc = pair[1]; // step 5.b
+ desc = FromPropertyDescriptor(desc); // TODO: remove this once DefinePropertyOrThrow is fixed
+ DefinePropertyOrThrow(O, P, desc); // step 5.c
+ });
+
+ return O; // step 6
+};
diff --git a/node_modules/es-abstract/2015/OrdinaryDefineOwnProperty.js b/node_modules/es-abstract/2015/OrdinaryDefineOwnProperty.js
index 5d33aa6d6..34f029f7e 100644
--- a/node_modules/es-abstract/2015/OrdinaryDefineOwnProperty.js
+++ b/node_modules/es-abstract/2015/OrdinaryDefineOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
diff --git a/node_modules/es-abstract/2015/OrdinaryGetOwnProperty.js b/node_modules/es-abstract/2015/OrdinaryGetOwnProperty.js
index 3d11e9fad..fd8035acb 100644
--- a/node_modules/es-abstract/2015/OrdinaryGetOwnProperty.js
+++ b/node_modules/es-abstract/2015/OrdinaryGetOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('call-bind/callBound');
diff --git a/node_modules/es-abstract/2015/Set.js b/node_modules/es-abstract/2015/Set.js
index ea49e813f..097149887 100644
--- a/node_modules/es-abstract/2015/Set.js
+++ b/node_modules/es-abstract/2015/Set.js
@@ -36,12 +36,12 @@ module.exports = function Set(O, P, V, Throw) {
throw new $TypeError('Attempted to assign to readonly property.');
}
return true;
- } else {
- try {
- O[P] = V; // eslint-disable-line no-param-reassign
- return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
- } catch (e) {
- return false;
- }
}
+ try {
+ O[P] = V; // eslint-disable-line no-param-reassign
+ return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
+ } catch (e) {
+ return false;
+ }
+
};
diff --git a/node_modules/es-abstract/2015/SetFunctionName.js b/node_modules/es-abstract/2015/SetFunctionName.js
index f59cb7b9e..03ec2227c 100644
--- a/node_modules/es-abstract/2015/SetFunctionName.js
+++ b/node_modules/es-abstract/2015/SetFunctionName.js
@@ -6,7 +6,7 @@ var has = require('has');
var $TypeError = GetIntrinsic('%TypeError%');
-var getSymbolDescription = require('../helpers/getSymbolDescription');
+var getSymbolDescription = require('get-symbol-description');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
var IsExtensible = require('./IsExtensible');
diff --git a/node_modules/es-abstract/2015/SetIntegrityLevel.js b/node_modules/es-abstract/2015/SetIntegrityLevel.js
index 1ac7d61e2..546f3e74f 100644
--- a/node_modules/es-abstract/2015/SetIntegrityLevel.js
+++ b/node_modules/es-abstract/2015/SetIntegrityLevel.js
@@ -4,9 +4,9 @@ var GetIntrinsic = require('get-intrinsic');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
-var $preventExtensions = GetIntrinsic('%Object.preventExtensions%');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $gOPD = require('gopd');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
var forEach = require('../helpers/forEach');
diff --git a/node_modules/es-abstract/2015/StringCreate.js b/node_modules/es-abstract/2015/StringCreate.js
index da0c0ea06..bd02820f7 100644
--- a/node_modules/es-abstract/2015/StringCreate.js
+++ b/node_modules/es-abstract/2015/StringCreate.js
@@ -20,7 +20,7 @@ module.exports = function StringCreate(value, prototype) {
}
var S = $Object(value);
- if (S !== $StringPrototype) {
+ if (prototype !== $StringPrototype) {
if (setProto) {
setProto(S, prototype);
} else {
diff --git a/node_modules/es-abstract/2015/TestIntegrityLevel.js b/node_modules/es-abstract/2015/TestIntegrityLevel.js
index cf1649c1b..7f95a6e1d 100644
--- a/node_modules/es-abstract/2015/TestIntegrityLevel.js
+++ b/node_modules/es-abstract/2015/TestIntegrityLevel.js
@@ -2,11 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var every = require('../helpers/every');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsExtensible = require('./IsExtensible');
@@ -26,7 +26,7 @@ module.exports = function TestIntegrityLevel(O, level) {
if (status) {
return false;
}
- var theKeys = $gOPN(O);
+ var theKeys = OwnPropertyKeys(O);
return theKeys.length === 0 || every(theKeys, function (k) {
var currentDesc = $gOPD(O, k);
if (typeof currentDesc !== 'undefined') {
diff --git a/node_modules/es-abstract/2015/ToNumber.js b/node_modules/es-abstract/2015/ToNumber.js
index e776bb2b7..95bdd9ecd 100644
--- a/node_modules/es-abstract/2015/ToNumber.js
+++ b/node_modules/es-abstract/2015/ToNumber.js
@@ -8,7 +8,7 @@ var $RegExp = GetIntrinsic('%RegExp%');
var $parseInteger = GetIntrinsic('%parseInt%');
var callBound = require('call-bind/callBound');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var isPrimitive = require('../helpers/isPrimitive');
var $strSlice = callBound('String.prototype.slice');
@@ -48,12 +48,12 @@ module.exports = function ToNumber(argument) {
return ToNumber($parseInteger($strSlice(value, 2), 8));
} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {
return NaN;
- } else {
- var trimmed = $trim(value);
- if (trimmed !== value) {
- return ToNumber(trimmed);
- }
}
+ var trimmed = $trim(value);
+ if (trimmed !== value) {
+ return ToNumber(trimmed);
+ }
+
}
return $Number(value);
};
diff --git a/node_modules/es-abstract/2015/ValidateTypedArray.js b/node_modules/es-abstract/2015/ValidateTypedArray.js
new file mode 100644
index 000000000..83df3a81c
--- /dev/null
+++ b/node_modules/es-abstract/2015/ValidateTypedArray.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var $taSome = callBound('%TypedArray.prototype.some%', true);
+
+var Type = require('./Type');
+
+var isTypedArray = require('is-typed-array');
+
+// https://262.ecma-international.org/6.0/#sec-validatetypedarray
+
+module.exports = function ValidateTypedArray(O) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!isTypedArray(O)) {
+ throw new $TypeError('Assertion failed: O must be a TypedArray');
+ }
+
+ // without `.some` (like in node 0.10), there's no way to check buffer detachment, but also no way to be detached
+ if ($taSome) {
+ $taSome(O, function () { return true; });
+ }
+
+ return O.buffer;
+};
diff --git a/node_modules/es-abstract/2015/max.js b/node_modules/es-abstract/2015/max.js
new file mode 100644
index 000000000..b919d4e83
--- /dev/null
+++ b/node_modules/es-abstract/2015/max.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.max%');
diff --git a/node_modules/es-abstract/2015/min.js b/node_modules/es-abstract/2015/min.js
new file mode 100644
index 000000000..909de4b0e
--- /dev/null
+++ b/node_modules/es-abstract/2015/min.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.min%');
diff --git a/node_modules/es-abstract/2015/thisTimeValue.js b/node_modules/es-abstract/2015/thisTimeValue.js
index 12548fa4f..4687950f1 100644
--- a/node_modules/es-abstract/2015/thisTimeValue.js
+++ b/node_modules/es-abstract/2015/thisTimeValue.js
@@ -1,9 +1,9 @@
'use strict';
-var $DateValueOf = require('call-bind/callBound')('Date.prototype.valueOf');
+var $DateGetTime = require('call-bind/callBound')('Date.prototype.getTime');
// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-date-prototype-object
module.exports = function thisTimeValue(value) {
- return $DateValueOf(value);
+ return $DateGetTime(value);
};
diff --git a/node_modules/es-abstract/2016/ArrayCreate.js b/node_modules/es-abstract/2016/ArrayCreate.js
index 4d20e2e5e..cc890cafb 100644
--- a/node_modules/es-abstract/2016/ArrayCreate.js
+++ b/node_modules/es-abstract/2016/ArrayCreate.js
@@ -9,16 +9,17 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsInteger = require('./IsInteger');
+var hasProto = require('has-proto')();
+
var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || (
- // eslint-disable-next-line no-proto, no-negated-condition
- [].__proto__ !== $ArrayPrototype
- ? null
- : function (O, proto) {
+ hasProto
+ ? function (O, proto) {
O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
return O;
}
+ : null
);
// https://ecma-international.org/ecma-262/6.0/#sec-arraycreate
@@ -42,12 +43,12 @@ module.exports = function ArrayCreate(length) {
A.length = length;
}
/* step 10, the above as a shortcut for the below
- OrdinaryDefineOwnProperty(A, 'length', {
- '[[Configurable]]': false,
- '[[Enumerable]]': false,
- '[[Value]]': length,
- '[[Writable]]': true
- });
- */
+ OrdinaryDefineOwnProperty(A, 'length', {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': true
+ });
+ */
return A;
};
diff --git a/node_modules/es-abstract/2016/CharacterRange.js b/node_modules/es-abstract/2016/CharacterRange.js
new file mode 100644
index 000000000..70e4b5235
--- /dev/null
+++ b/node_modules/es-abstract/2016/CharacterRange.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $charCodeAt = callBound('%String.prototype.charCodeAt%');
+var $push = callBound('%Array.prototype.push%');
+
+module.exports = function CharacterRange(A, B) {
+ if (A.length !== 1 || B.length !== 1) {
+ throw new $TypeError('Assertion failed: CharSets A and B contain exactly one character');
+ }
+
+ var a = A[0];
+ var b = B[0];
+
+ var i = $charCodeAt(a, 0);
+ var j = $charCodeAt(b, 0);
+
+ if (!(i <= j)) {
+ throw new $TypeError('Assertion failed: i is not <= j');
+ }
+
+ var arr = [];
+ for (var k = i; k <= j; k += 1) {
+ $push(arr, $fromCharCode(k));
+ }
+ return arr;
+};
diff --git a/node_modules/es-abstract/2016/CompletionRecord.js b/node_modules/es-abstract/2016/CompletionRecord.js
new file mode 100644
index 000000000..370a5677f
--- /dev/null
+++ b/node_modules/es-abstract/2016/CompletionRecord.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var SLOT = require('internal-slot');
+
+// https://262.ecma-international.org/7.0/#sec-completion-record-specification-type
+
+var CompletionRecord = function CompletionRecord(type, value) {
+ if (!(this instanceof CompletionRecord)) {
+ return new CompletionRecord(type, value);
+ }
+ if (type !== 'normal' && type !== 'break' && type !== 'continue' && type !== 'return' && type !== 'throw') {
+ throw new $SyntaxError('Assertion failed: `type` must be one of "normal", "break", "continue", "return", or "throw"');
+ }
+ SLOT.set(this, '[[Type]]', type);
+ SLOT.set(this, '[[Value]]', value);
+ // [[Target]] slot?
+};
+
+CompletionRecord.prototype.type = function Type() {
+ return SLOT.get(this, '[[Type]]');
+};
+
+CompletionRecord.prototype.value = function Value() {
+ return SLOT.get(this, '[[Value]]');
+};
+
+CompletionRecord.prototype['?'] = function ReturnIfAbrupt() {
+ var type = SLOT.get(this, '[[Type]]');
+ var value = SLOT.get(this, '[[Value]]');
+
+ if (type === 'normal') {
+ return value;
+ }
+ if (type === 'throw') {
+ throw value;
+ }
+ throw new $SyntaxError('Completion Record is not of type "normal" or "throw": other types not supported');
+};
+
+CompletionRecord.prototype['!'] = function assert() {
+ var type = SLOT.get(this, '[[Type]]');
+
+ if (type !== 'normal') {
+ throw new $SyntaxError('Assertion failed: Completion Record is not of type "normal"');
+ }
+ return SLOT.get(this, '[[Value]]');
+};
+
+module.exports = CompletionRecord;
diff --git a/node_modules/es-abstract/2016/CreateDataProperty.js b/node_modules/es-abstract/2016/CreateDataProperty.js
index ff5ca3055..02c6cd1f8 100644
--- a/node_modules/es-abstract/2016/CreateDataProperty.js
+++ b/node_modules/es-abstract/2016/CreateDataProperty.js
@@ -25,8 +25,8 @@ module.exports = function CreateDataProperty(O, P, V) {
}
var oldDesc = OrdinaryGetOwnProperty(O, P);
var extensible = !oldDesc || IsExtensible(O);
- var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']);
- if (immutable || !extensible) {
+ var nonConfigurable = oldDesc && !oldDesc['[[Configurable]]'];
+ if (nonConfigurable || !extensible) {
return false;
}
return DefineOwnProperty(
diff --git a/node_modules/es-abstract/2016/DetachArrayBuffer.js b/node_modules/es-abstract/2016/DetachArrayBuffer.js
new file mode 100644
index 000000000..a7b89b36b
--- /dev/null
+++ b/node_modules/es-abstract/2016/DetachArrayBuffer.js
@@ -0,0 +1,34 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isArrayBuffer = require('is-array-buffer');
+
+var MessageChannel;
+try {
+ // eslint-disable-next-line global-require
+ MessageChannel = require('worker_threads').MessageChannel; // node 11.7+
+} catch (e) { /**/ }
+
+// https://262.ecma-international.org/6.0/#sec-detacharraybuffer
+
+/* globals postMessage */
+
+module.exports = function DetachArrayBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
+ }
+ if (typeof structuredClone === 'function') {
+ structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
+ } else if (typeof postMessage === 'function') {
+ postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
+ } else if (MessageChannel) {
+ (new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
+ } else {
+ throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
+ }
+ return null;
+};
diff --git a/node_modules/es-abstract/2016/FromPropertyDescriptor.js b/node_modules/es-abstract/2016/FromPropertyDescriptor.js
index 9a69a2605..e142ed582 100644
--- a/node_modules/es-abstract/2016/FromPropertyDescriptor.js
+++ b/node_modules/es-abstract/2016/FromPropertyDescriptor.js
@@ -1,36 +1,16 @@
'use strict';
var assertRecord = require('../helpers/assertRecord');
+var fromPropertyDescriptor = require('../helpers/fromPropertyDescriptor');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
module.exports = function FromPropertyDescriptor(Desc) {
- if (typeof Desc === 'undefined') {
- return Desc;
+ if (typeof Desc !== 'undefined') {
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
}
- assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
-
- var obj = {};
- if ('[[Value]]' in Desc) {
- obj.value = Desc['[[Value]]'];
- }
- if ('[[Writable]]' in Desc) {
- obj.writable = Desc['[[Writable]]'];
- }
- if ('[[Get]]' in Desc) {
- obj.get = Desc['[[Get]]'];
- }
- if ('[[Set]]' in Desc) {
- obj.set = Desc['[[Set]]'];
- }
- if ('[[Enumerable]]' in Desc) {
- obj.enumerable = Desc['[[Enumerable]]'];
- }
- if ('[[Configurable]]' in Desc) {
- obj.configurable = Desc['[[Configurable]]'];
- }
- return obj;
+ return fromPropertyDescriptor(Desc);
};
diff --git a/node_modules/es-abstract/2016/Get.js b/node_modules/es-abstract/2016/Get.js
index 681055a2f..297968643 100644
--- a/node_modules/es-abstract/2016/Get.js
+++ b/node_modules/es-abstract/2016/Get.js
@@ -9,12 +9,7 @@ var inspect = require('object-inspect');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
-/**
- * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
- * 1. Assert: Type(O) is Object.
- * 2. Assert: IsPropertyKey(P) is true.
- * 3. Return O.[[Get]](P, O).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
module.exports = function Get(O, P) {
// 7.3.1.1
diff --git a/node_modules/es-abstract/2016/GetGlobalObject.js b/node_modules/es-abstract/2016/GetGlobalObject.js
new file mode 100644
index 000000000..0541ede0c
--- /dev/null
+++ b/node_modules/es-abstract/2016/GetGlobalObject.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var getGlobal = require('globalthis/polyfill');
+
+// https://262.ecma-international.org/6.0/#sec-getglobalobject
+
+module.exports = function GetGlobalObject() {
+ return getGlobal();
+};
diff --git a/node_modules/es-abstract/2016/GetIterator.js b/node_modules/es-abstract/2016/GetIterator.js
index a2d3b16cb..892197a23 100644
--- a/node_modules/es-abstract/2016/GetIterator.js
+++ b/node_modules/es-abstract/2016/GetIterator.js
@@ -20,8 +20,7 @@ module.exports = function GetIterator(obj, method) {
{
AdvanceStringIndex: AdvanceStringIndex,
GetMethod: GetMethod,
- IsArray: IsArray,
- Type: Type
+ IsArray: IsArray
},
obj
);
diff --git a/node_modules/es-abstract/2016/GetMethod.js b/node_modules/es-abstract/2016/GetMethod.js
index 775d3fb95..d3775178e 100644
--- a/node_modules/es-abstract/2016/GetMethod.js
+++ b/node_modules/es-abstract/2016/GetMethod.js
@@ -8,15 +8,9 @@ var GetV = require('./GetV');
var IsCallable = require('./IsCallable');
var IsPropertyKey = require('./IsPropertyKey');
-/**
- * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let func be GetV(O, P).
- * 3. ReturnIfAbrupt(func).
- * 4. If func is either undefined or null, return undefined.
- * 5. If IsCallable(func) is false, throw a TypeError exception.
- * 6. Return func.
- */
+var debug = require('object-inspect');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getmethod
module.exports = function GetMethod(O, P) {
// 7.3.9.1
@@ -34,7 +28,7 @@ module.exports = function GetMethod(O, P) {
// 7.3.9.5
if (!IsCallable(func)) {
- throw new $TypeError(P + 'is not a function');
+ throw new $TypeError(P + ' is not a function: ' + debug(func));
}
// 7.3.9.6
diff --git a/node_modules/es-abstract/2016/GetOwnPropertyKeys.js b/node_modules/es-abstract/2016/GetOwnPropertyKeys.js
index b8f4167f7..40c0b367f 100644
--- a/node_modules/es-abstract/2016/GetOwnPropertyKeys.js
+++ b/node_modules/es-abstract/2016/GetOwnPropertyKeys.js
@@ -6,8 +6,8 @@ var hasSymbols = require('has-symbols')();
var $TypeError = GetIntrinsic('%TypeError%');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
-var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
+var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%', true);
var keys = require('object-keys');
var esType = require('./Type');
diff --git a/node_modules/es-abstract/2016/GetPrototypeFromConstructor.js b/node_modules/es-abstract/2016/GetPrototypeFromConstructor.js
index 5f369cad8..25ee12f35 100644
--- a/node_modules/es-abstract/2016/GetPrototypeFromConstructor.js
+++ b/node_modules/es-abstract/2016/GetPrototypeFromConstructor.js
@@ -4,6 +4,7 @@ var GetIntrinsic = require('get-intrinsic');
var $Function = GetIntrinsic('%Function%');
var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
var Get = require('./Get');
var IsConstructor = require('./IsConstructor');
@@ -20,7 +21,7 @@ module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefa
if (Type(proto) !== 'Object') {
if (!(constructor instanceof $Function)) {
// ignore other realms, for now
- throw new $TypeError('cross-realm constructors not currently supported');
+ throw new $SyntaxError('cross-realm constructors not currently supported');
}
proto = intrinsic;
}
diff --git a/node_modules/es-abstract/2016/GetSubstitution.js b/node_modules/es-abstract/2016/GetSubstitution.js
index 5bdce38b6..a60d42136 100644
--- a/node_modules/es-abstract/2016/GetSubstitution.js
+++ b/node_modules/es-abstract/2016/GetSubstitution.js
@@ -8,7 +8,7 @@ var $parseInt = GetIntrinsic('%parseInt%');
var inspect = require('object-inspect');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var callBound = require('call-bind/callBound');
var every = require('../helpers/every');
diff --git a/node_modules/es-abstract/2016/GetV.js b/node_modules/es-abstract/2016/GetV.js
index 2d8cc8246..2dcddb351 100644
--- a/node_modules/es-abstract/2016/GetV.js
+++ b/node_modules/es-abstract/2016/GetV.js
@@ -7,13 +7,7 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var ToObject = require('./ToObject');
-/**
- * 7.3.2 GetV (V, P)
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let O be ToObject(V).
- * 3. ReturnIfAbrupt(O).
- * 4. Return O.[[Get]](P, V).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-getv
module.exports = function GetV(V, P) {
// 7.3.2.1
diff --git a/node_modules/es-abstract/2016/IsArray.js b/node_modules/es-abstract/2016/IsArray.js
index f933cec03..600ffa002 100644
--- a/node_modules/es-abstract/2016/IsArray.js
+++ b/node_modules/es-abstract/2016/IsArray.js
@@ -1,14 +1,4 @@
'use strict';
-var GetIntrinsic = require('get-intrinsic');
-
-var $Array = GetIntrinsic('%Array%');
-
-// eslint-disable-next-line global-require
-var toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');
-
// https://ecma-international.org/ecma-262/6.0/#sec-isarray
-
-module.exports = $Array.isArray || function IsArray(argument) {
- return toStr(argument) === '[object Array]';
-};
+module.exports = require('../helpers/IsArray');
diff --git a/node_modules/es-abstract/2016/IsCompatiblePropertyDescriptor.js b/node_modules/es-abstract/2016/IsCompatiblePropertyDescriptor.js
new file mode 100644
index 000000000..8bdaf3eb4
--- /dev/null
+++ b/node_modules/es-abstract/2016/IsCompatiblePropertyDescriptor.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
+
+// https://262.ecma-international.org/6.0/#sec-iscompatiblepropertydescriptor
+
+module.exports = function IsCompatiblePropertyDescriptor(Extensible, Desc, Current) {
+ return ValidateAndApplyPropertyDescriptor(undefined, undefined, Extensible, Desc, Current);
+};
diff --git a/node_modules/es-abstract/2016/IsDetachedBuffer.js b/node_modules/es-abstract/2016/IsDetachedBuffer.js
new file mode 100644
index 000000000..4b373e9ab
--- /dev/null
+++ b/node_modules/es-abstract/2016/IsDetachedBuffer.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $byteLength = callBound('%ArrayBuffer.prototype.byteLength%', true)
+ || function byteLength(ab) { return ab.byteLength; }; // in node < 0.11, byteLength is an own nonconfigurable property
+
+var isArrayBuffer = require('is-array-buffer');
+
+var availableTypedArrays = require('available-typed-arrays')();
+
+// https://262.ecma-international.org/6.0/#sec-isdetachedbuffer
+
+module.exports = function IsDetachedBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
+ }
+ if ($byteLength(arrayBuffer) === 0) {
+ try {
+ new global[availableTypedArrays[0]](arrayBuffer); // eslint-disable-line no-new
+ } catch (error) {
+ return error.name === 'TypeError';
+ }
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2016/IsExtensible.js b/node_modules/es-abstract/2016/IsExtensible.js
index 9df5b80b1..d6e363840 100644
--- a/node_modules/es-abstract/2016/IsExtensible.js
+++ b/node_modules/es-abstract/2016/IsExtensible.js
@@ -2,13 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $Object = GetIntrinsic('%Object%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $isExtensible = GetIntrinsic('%Object.isExtensible%', true);
var isPrimitive = require('../helpers/isPrimitive');
-var $preventExtensions = $Object.preventExtensions;
-var $isExtensible = $Object.isExtensible;
-
// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o
module.exports = $preventExtensions
diff --git a/node_modules/es-abstract/2016/IterableToArrayLike.js b/node_modules/es-abstract/2016/IterableToArrayLike.js
index a16bbba86..82c6c33d5 100644
--- a/node_modules/es-abstract/2016/IterableToArrayLike.js
+++ b/node_modules/es-abstract/2016/IterableToArrayLike.js
@@ -11,30 +11,13 @@ var IsArray = require('./IsArray');
var IteratorStep = require('./IteratorStep');
var IteratorValue = require('./IteratorValue');
var ToObject = require('./ToObject');
-var Type = require('./Type');
var ES = {
AdvanceStringIndex: AdvanceStringIndex,
GetMethod: GetMethod,
- IsArray: IsArray,
- Type: Type
+ IsArray: IsArray
};
// https://262.ecma-international.org/7.0/#sec-iterabletoarraylike
-/**
- * 1. Let usingIterator be ? GetMethod(items, @@iterator).
- * 2. If usingIterator is not undefined, then
- * 1. Let iterator be ? GetIterator(items, usingIterator).
- * 2. Let values be a new empty List.
- * 3. Let next be true.
- * 4. Repeat, while next is not false
- * 1. Let next be ? IteratorStep(iterator).
- * 2. If next is not false, then
- * 1. Let nextValue be ? IteratorValue(next).
- * 2. Append nextValue to the end of the List values.
- * 5. Return CreateArrayFromList(values).
- * 3. NOTE: items is not an Iterable so assume it is already an array-like object.
- * 4. Return ! ToObject(items).
- */
module.exports = function IterableToArrayLike(items) {
var usingIterator = getIteratorMethod(ES, items);
diff --git a/node_modules/es-abstract/2016/IteratorClose.js b/node_modules/es-abstract/2016/IteratorClose.js
index dd1118df7..f703ea632 100644
--- a/node_modules/es-abstract/2016/IteratorClose.js
+++ b/node_modules/es-abstract/2016/IteratorClose.js
@@ -5,6 +5,7 @@ var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
var GetMethod = require('./GetMethod');
var IsCallable = require('./IsCallable');
var Type = require('./Type');
@@ -15,10 +16,10 @@ module.exports = function IteratorClose(iterator, completion) {
if (Type(iterator) !== 'Object') {
throw new $TypeError('Assertion failed: Type(iterator) is not Object');
}
- if (!IsCallable(completion)) {
- throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record');
+ if (!IsCallable(completion) && !(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a thunk representing a Completion Record, nor a Completion Record instance');
}
- var completionThunk = completion;
+ var completionThunk = completion instanceof CompletionRecord ? function () { return completion['?'](); } : completion;
var iteratorReturn = GetMethod(iterator, 'return');
diff --git a/node_modules/es-abstract/2016/NormalCompletion.js b/node_modules/es-abstract/2016/NormalCompletion.js
new file mode 100644
index 000000000..1e429dd65
--- /dev/null
+++ b/node_modules/es-abstract/2016/NormalCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/6.0/#sec-normalcompletion
+
+module.exports = function NormalCompletion(value) {
+ return new CompletionRecord('normal', value);
+};
diff --git a/node_modules/es-abstract/2016/ObjectCreate.js b/node_modules/es-abstract/2016/ObjectCreate.js
index 2851a646d..1f4bb16af 100644
--- a/node_modules/es-abstract/2016/ObjectCreate.js
+++ b/node_modules/es-abstract/2016/ObjectCreate.js
@@ -6,9 +6,14 @@ var $ObjectCreate = GetIntrinsic('%Object.create%', true);
var $TypeError = GetIntrinsic('%TypeError%');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var IsArray = require('./IsArray');
var Type = require('./Type');
-var hasProto = !({ __proto__: null } instanceof Object);
+var forEach = require('../helpers/forEach');
+
+var SLOT = require('internal-slot');
+
+var hasProto = require('has-proto')();
// https://ecma-international.org/ecma-262/6.0/#sec-objectcreate
@@ -16,22 +21,30 @@ module.exports = function ObjectCreate(proto, internalSlotsList) {
if (proto !== null && Type(proto) !== 'Object') {
throw new $TypeError('Assertion failed: `proto` must be null or an object');
}
- var slots = arguments.length < 2 ? [] : internalSlotsList;
- if (slots.length > 0) {
- throw new $SyntaxError('es-abstract does not yet support internal slots');
+ var slots = arguments.length < 2 ? [] : internalSlotsList; // step 1
+ if (arguments.length >= 2 && !IsArray(slots)) {
+ throw new $TypeError('Assertion failed: `internalSlotsList` must be an Array');
}
+ var O;
if ($ObjectCreate) {
- return $ObjectCreate(proto);
- }
- if (hasProto) {
- return { __proto__: proto };
+ O = $ObjectCreate(proto);
+ } else if (hasProto) {
+ O = { __proto__: proto };
+ } else {
+ if (proto === null) {
+ throw new $SyntaxError('native Object.create support is required to create null objects');
+ }
+ var T = function T() {};
+ T.prototype = proto;
+ O = new T();
}
- if (proto === null) {
- throw new $SyntaxError('native Object.create support is required to create null objects');
+ if (slots.length > 0) {
+ forEach(slots, function (slot) {
+ SLOT.set(O, slot, void undefined);
+ });
}
- var T = function T() {};
- T.prototype = proto;
- return new T();
+
+ return O; // step 6
};
diff --git a/node_modules/es-abstract/2016/ObjectDefineProperties.js b/node_modules/es-abstract/2016/ObjectDefineProperties.js
new file mode 100644
index 000000000..f096f1ede
--- /dev/null
+++ b/node_modules/es-abstract/2016/ObjectDefineProperties.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var Get = require('./Get');
+var ToObject = require('./ToObject');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+
+var forEach = require('../helpers/forEach');
+var getOwnPropertyDescriptor = require('gopd');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var $push = callBound('Array.prototype.push');
+
+// https://262.ecma-international.org/6.0/#sec-objectdefineproperties
+module.exports = function ObjectDefineProperties(O, Properties) {
+ var props = ToObject(Properties); // step 1
+ var keys = OwnPropertyKeys(props); // step 2
+ var descriptors = []; // step 3
+
+ forEach(keys, function (nextKey) { // step 4
+ var propDesc = ToPropertyDescriptor(getOwnPropertyDescriptor(props, nextKey)); // step 4.a
+ if (typeof propDesc !== 'undefined' && propDesc['[[Enumerable]]']) { // step 4.b
+ var descObj = Get(props, nextKey); // step 4.b.i
+ var desc = ToPropertyDescriptor(descObj); // step 4.b.ii
+ $push(descriptors, [nextKey, desc]); // step 4.b.iii
+ }
+ });
+
+ forEach(descriptors, function (pair) { // step 5
+ var P = pair[0]; // step 5.a
+ var desc = pair[1]; // step 5.b
+ desc = FromPropertyDescriptor(desc); // TODO: remove this once DefinePropertyOrThrow is fixed
+ DefinePropertyOrThrow(O, P, desc); // step 5.c
+ });
+
+ return O; // step 6
+};
diff --git a/node_modules/es-abstract/2016/OrdinaryDefineOwnProperty.js b/node_modules/es-abstract/2016/OrdinaryDefineOwnProperty.js
index 5d33aa6d6..34f029f7e 100644
--- a/node_modules/es-abstract/2016/OrdinaryDefineOwnProperty.js
+++ b/node_modules/es-abstract/2016/OrdinaryDefineOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
diff --git a/node_modules/es-abstract/2016/OrdinaryGetOwnProperty.js b/node_modules/es-abstract/2016/OrdinaryGetOwnProperty.js
index 3d11e9fad..fd8035acb 100644
--- a/node_modules/es-abstract/2016/OrdinaryGetOwnProperty.js
+++ b/node_modules/es-abstract/2016/OrdinaryGetOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('call-bind/callBound');
diff --git a/node_modules/es-abstract/2016/OrdinarySetPrototypeOf.js b/node_modules/es-abstract/2016/OrdinarySetPrototypeOf.js
index d0ff7a7c2..d2b72306c 100644
--- a/node_modules/es-abstract/2016/OrdinarySetPrototypeOf.js
+++ b/node_modules/es-abstract/2016/OrdinarySetPrototypeOf.js
@@ -16,15 +16,15 @@ module.exports = function OrdinarySetPrototypeOf(O, V) {
throw new $TypeError('Assertion failed: V must be Object or Null');
}
/*
- var extensible = IsExtensible(O);
- var current = OrdinaryGetPrototypeOf(O);
- if (SameValue(V, current)) {
- return true;
- }
- if (!extensible) {
- return false;
- }
- */
+ var extensible = IsExtensible(O);
+ var current = OrdinaryGetPrototypeOf(O);
+ if (SameValue(V, current)) {
+ return true;
+ }
+ if (!extensible) {
+ return false;
+ }
+ */
try {
$setProto(O, V);
} catch (e) {
@@ -32,22 +32,22 @@ module.exports = function OrdinarySetPrototypeOf(O, V) {
}
return OrdinaryGetPrototypeOf(O) === V;
/*
- var p = V;
- var done = false;
- while (!done) {
- if (p === null) {
- done = true;
- } else if (SameValue(p, O)) {
- return false;
- } else {
- if (wat) {
- done = true;
- } else {
- p = p.[[Prototype]];
- }
- }
- }
- O.[[Prototype]] = V;
- return true;
- */
+ var p = V;
+ var done = false;
+ while (!done) {
+ if (p === null) {
+ done = true;
+ } else if (SameValue(p, O)) {
+ return false;
+ } else {
+ if (wat) {
+ done = true;
+ } else {
+ p = p.[[Prototype]];
+ }
+ }
+ }
+ O.[[Prototype]] = V;
+ return true;
+ */
};
diff --git a/node_modules/es-abstract/2016/Set.js b/node_modules/es-abstract/2016/Set.js
index ea49e813f..097149887 100644
--- a/node_modules/es-abstract/2016/Set.js
+++ b/node_modules/es-abstract/2016/Set.js
@@ -36,12 +36,12 @@ module.exports = function Set(O, P, V, Throw) {
throw new $TypeError('Attempted to assign to readonly property.');
}
return true;
- } else {
- try {
- O[P] = V; // eslint-disable-line no-param-reassign
- return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
- } catch (e) {
- return false;
- }
}
+ try {
+ O[P] = V; // eslint-disable-line no-param-reassign
+ return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
+ } catch (e) {
+ return false;
+ }
+
};
diff --git a/node_modules/es-abstract/2016/SetFunctionName.js b/node_modules/es-abstract/2016/SetFunctionName.js
index f59cb7b9e..03ec2227c 100644
--- a/node_modules/es-abstract/2016/SetFunctionName.js
+++ b/node_modules/es-abstract/2016/SetFunctionName.js
@@ -6,7 +6,7 @@ var has = require('has');
var $TypeError = GetIntrinsic('%TypeError%');
-var getSymbolDescription = require('../helpers/getSymbolDescription');
+var getSymbolDescription = require('get-symbol-description');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
var IsExtensible = require('./IsExtensible');
diff --git a/node_modules/es-abstract/2016/SetIntegrityLevel.js b/node_modules/es-abstract/2016/SetIntegrityLevel.js
index 1ac7d61e2..546f3e74f 100644
--- a/node_modules/es-abstract/2016/SetIntegrityLevel.js
+++ b/node_modules/es-abstract/2016/SetIntegrityLevel.js
@@ -4,9 +4,9 @@ var GetIntrinsic = require('get-intrinsic');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
-var $preventExtensions = GetIntrinsic('%Object.preventExtensions%');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $gOPD = require('gopd');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
var forEach = require('../helpers/forEach');
diff --git a/node_modules/es-abstract/2016/StringCreate.js b/node_modules/es-abstract/2016/StringCreate.js
index da0c0ea06..bd02820f7 100644
--- a/node_modules/es-abstract/2016/StringCreate.js
+++ b/node_modules/es-abstract/2016/StringCreate.js
@@ -20,7 +20,7 @@ module.exports = function StringCreate(value, prototype) {
}
var S = $Object(value);
- if (S !== $StringPrototype) {
+ if (prototype !== $StringPrototype) {
if (setProto) {
setProto(S, prototype);
} else {
diff --git a/node_modules/es-abstract/2016/TestIntegrityLevel.js b/node_modules/es-abstract/2016/TestIntegrityLevel.js
index cf1649c1b..7f95a6e1d 100644
--- a/node_modules/es-abstract/2016/TestIntegrityLevel.js
+++ b/node_modules/es-abstract/2016/TestIntegrityLevel.js
@@ -2,11 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var every = require('../helpers/every');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsExtensible = require('./IsExtensible');
@@ -26,7 +26,7 @@ module.exports = function TestIntegrityLevel(O, level) {
if (status) {
return false;
}
- var theKeys = $gOPN(O);
+ var theKeys = OwnPropertyKeys(O);
return theKeys.length === 0 || every(theKeys, function (k) {
var currentDesc = $gOPD(O, k);
if (typeof currentDesc !== 'undefined') {
diff --git a/node_modules/es-abstract/2016/ToNumber.js b/node_modules/es-abstract/2016/ToNumber.js
index e776bb2b7..95bdd9ecd 100644
--- a/node_modules/es-abstract/2016/ToNumber.js
+++ b/node_modules/es-abstract/2016/ToNumber.js
@@ -8,7 +8,7 @@ var $RegExp = GetIntrinsic('%RegExp%');
var $parseInteger = GetIntrinsic('%parseInt%');
var callBound = require('call-bind/callBound');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var isPrimitive = require('../helpers/isPrimitive');
var $strSlice = callBound('String.prototype.slice');
@@ -48,12 +48,12 @@ module.exports = function ToNumber(argument) {
return ToNumber($parseInteger($strSlice(value, 2), 8));
} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {
return NaN;
- } else {
- var trimmed = $trim(value);
- if (trimmed !== value) {
- return ToNumber(trimmed);
- }
}
+ var trimmed = $trim(value);
+ if (trimmed !== value) {
+ return ToNumber(trimmed);
+ }
+
}
return $Number(value);
};
diff --git a/node_modules/es-abstract/2016/ValidateTypedArray.js b/node_modules/es-abstract/2016/ValidateTypedArray.js
new file mode 100644
index 000000000..83df3a81c
--- /dev/null
+++ b/node_modules/es-abstract/2016/ValidateTypedArray.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var $taSome = callBound('%TypedArray.prototype.some%', true);
+
+var Type = require('./Type');
+
+var isTypedArray = require('is-typed-array');
+
+// https://262.ecma-international.org/6.0/#sec-validatetypedarray
+
+module.exports = function ValidateTypedArray(O) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!isTypedArray(O)) {
+ throw new $TypeError('Assertion failed: O must be a TypedArray');
+ }
+
+ // without `.some` (like in node 0.10), there's no way to check buffer detachment, but also no way to be detached
+ if ($taSome) {
+ $taSome(O, function () { return true; });
+ }
+
+ return O.buffer;
+};
diff --git a/node_modules/es-abstract/2016/max.js b/node_modules/es-abstract/2016/max.js
new file mode 100644
index 000000000..b919d4e83
--- /dev/null
+++ b/node_modules/es-abstract/2016/max.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.max%');
diff --git a/node_modules/es-abstract/2016/min.js b/node_modules/es-abstract/2016/min.js
new file mode 100644
index 000000000..909de4b0e
--- /dev/null
+++ b/node_modules/es-abstract/2016/min.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.min%');
diff --git a/node_modules/es-abstract/2016/thisTimeValue.js b/node_modules/es-abstract/2016/thisTimeValue.js
index 12548fa4f..4687950f1 100644
--- a/node_modules/es-abstract/2016/thisTimeValue.js
+++ b/node_modules/es-abstract/2016/thisTimeValue.js
@@ -1,9 +1,9 @@
'use strict';
-var $DateValueOf = require('call-bind/callBound')('Date.prototype.valueOf');
+var $DateGetTime = require('call-bind/callBound')('Date.prototype.getTime');
// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-date-prototype-object
module.exports = function thisTimeValue(value) {
- return $DateValueOf(value);
+ return $DateGetTime(value);
};
diff --git a/node_modules/es-abstract/2017/ArrayCreate.js b/node_modules/es-abstract/2017/ArrayCreate.js
index 4d20e2e5e..cc890cafb 100644
--- a/node_modules/es-abstract/2017/ArrayCreate.js
+++ b/node_modules/es-abstract/2017/ArrayCreate.js
@@ -9,16 +9,17 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsInteger = require('./IsInteger');
+var hasProto = require('has-proto')();
+
var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || (
- // eslint-disable-next-line no-proto, no-negated-condition
- [].__proto__ !== $ArrayPrototype
- ? null
- : function (O, proto) {
+ hasProto
+ ? function (O, proto) {
O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
return O;
}
+ : null
);
// https://ecma-international.org/ecma-262/6.0/#sec-arraycreate
@@ -42,12 +43,12 @@ module.exports = function ArrayCreate(length) {
A.length = length;
}
/* step 10, the above as a shortcut for the below
- OrdinaryDefineOwnProperty(A, 'length', {
- '[[Configurable]]': false,
- '[[Enumerable]]': false,
- '[[Value]]': length,
- '[[Writable]]': true
- });
- */
+ OrdinaryDefineOwnProperty(A, 'length', {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': true
+ });
+ */
return A;
};
diff --git a/node_modules/es-abstract/2017/CharacterRange.js b/node_modules/es-abstract/2017/CharacterRange.js
new file mode 100644
index 000000000..70e4b5235
--- /dev/null
+++ b/node_modules/es-abstract/2017/CharacterRange.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $charCodeAt = callBound('%String.prototype.charCodeAt%');
+var $push = callBound('%Array.prototype.push%');
+
+module.exports = function CharacterRange(A, B) {
+ if (A.length !== 1 || B.length !== 1) {
+ throw new $TypeError('Assertion failed: CharSets A and B contain exactly one character');
+ }
+
+ var a = A[0];
+ var b = B[0];
+
+ var i = $charCodeAt(a, 0);
+ var j = $charCodeAt(b, 0);
+
+ if (!(i <= j)) {
+ throw new $TypeError('Assertion failed: i is not <= j');
+ }
+
+ var arr = [];
+ for (var k = i; k <= j; k += 1) {
+ $push(arr, $fromCharCode(k));
+ }
+ return arr;
+};
diff --git a/node_modules/es-abstract/2017/CompletionRecord.js b/node_modules/es-abstract/2017/CompletionRecord.js
new file mode 100644
index 000000000..370a5677f
--- /dev/null
+++ b/node_modules/es-abstract/2017/CompletionRecord.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var SLOT = require('internal-slot');
+
+// https://262.ecma-international.org/7.0/#sec-completion-record-specification-type
+
+var CompletionRecord = function CompletionRecord(type, value) {
+ if (!(this instanceof CompletionRecord)) {
+ return new CompletionRecord(type, value);
+ }
+ if (type !== 'normal' && type !== 'break' && type !== 'continue' && type !== 'return' && type !== 'throw') {
+ throw new $SyntaxError('Assertion failed: `type` must be one of "normal", "break", "continue", "return", or "throw"');
+ }
+ SLOT.set(this, '[[Type]]', type);
+ SLOT.set(this, '[[Value]]', value);
+ // [[Target]] slot?
+};
+
+CompletionRecord.prototype.type = function Type() {
+ return SLOT.get(this, '[[Type]]');
+};
+
+CompletionRecord.prototype.value = function Value() {
+ return SLOT.get(this, '[[Value]]');
+};
+
+CompletionRecord.prototype['?'] = function ReturnIfAbrupt() {
+ var type = SLOT.get(this, '[[Type]]');
+ var value = SLOT.get(this, '[[Value]]');
+
+ if (type === 'normal') {
+ return value;
+ }
+ if (type === 'throw') {
+ throw value;
+ }
+ throw new $SyntaxError('Completion Record is not of type "normal" or "throw": other types not supported');
+};
+
+CompletionRecord.prototype['!'] = function assert() {
+ var type = SLOT.get(this, '[[Type]]');
+
+ if (type !== 'normal') {
+ throw new $SyntaxError('Assertion failed: Completion Record is not of type "normal"');
+ }
+ return SLOT.get(this, '[[Value]]');
+};
+
+module.exports = CompletionRecord;
diff --git a/node_modules/es-abstract/2017/CreateDataProperty.js b/node_modules/es-abstract/2017/CreateDataProperty.js
index ff5ca3055..02c6cd1f8 100644
--- a/node_modules/es-abstract/2017/CreateDataProperty.js
+++ b/node_modules/es-abstract/2017/CreateDataProperty.js
@@ -25,8 +25,8 @@ module.exports = function CreateDataProperty(O, P, V) {
}
var oldDesc = OrdinaryGetOwnProperty(O, P);
var extensible = !oldDesc || IsExtensible(O);
- var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']);
- if (immutable || !extensible) {
+ var nonConfigurable = oldDesc && !oldDesc['[[Configurable]]'];
+ if (nonConfigurable || !extensible) {
return false;
}
return DefineOwnProperty(
diff --git a/node_modules/es-abstract/2017/DetachArrayBuffer.js b/node_modules/es-abstract/2017/DetachArrayBuffer.js
new file mode 100644
index 000000000..db77a07ec
--- /dev/null
+++ b/node_modules/es-abstract/2017/DetachArrayBuffer.js
@@ -0,0 +1,35 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isArrayBuffer = require('is-array-buffer');
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+var MessageChannel;
+try {
+ // eslint-disable-next-line global-require
+ MessageChannel = require('worker_threads').MessageChannel; // node 11.7+
+} catch (e) { /**/ }
+
+// https://262.ecma-international.org/8.0/#sec-detacharraybuffer
+
+/* globals postMessage */
+
+module.exports = function DetachArrayBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer) || isSharedArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot, and not a Shared Array Buffer');
+ }
+ if (typeof structuredClone === 'function') {
+ structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
+ } else if (typeof postMessage === 'function') {
+ postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
+ } else if (MessageChannel) {
+ (new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
+ } else {
+ throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
+ }
+ return null;
+};
diff --git a/node_modules/es-abstract/2017/FromPropertyDescriptor.js b/node_modules/es-abstract/2017/FromPropertyDescriptor.js
index 9a69a2605..e142ed582 100644
--- a/node_modules/es-abstract/2017/FromPropertyDescriptor.js
+++ b/node_modules/es-abstract/2017/FromPropertyDescriptor.js
@@ -1,36 +1,16 @@
'use strict';
var assertRecord = require('../helpers/assertRecord');
+var fromPropertyDescriptor = require('../helpers/fromPropertyDescriptor');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
module.exports = function FromPropertyDescriptor(Desc) {
- if (typeof Desc === 'undefined') {
- return Desc;
+ if (typeof Desc !== 'undefined') {
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
}
- assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
-
- var obj = {};
- if ('[[Value]]' in Desc) {
- obj.value = Desc['[[Value]]'];
- }
- if ('[[Writable]]' in Desc) {
- obj.writable = Desc['[[Writable]]'];
- }
- if ('[[Get]]' in Desc) {
- obj.get = Desc['[[Get]]'];
- }
- if ('[[Set]]' in Desc) {
- obj.set = Desc['[[Set]]'];
- }
- if ('[[Enumerable]]' in Desc) {
- obj.enumerable = Desc['[[Enumerable]]'];
- }
- if ('[[Configurable]]' in Desc) {
- obj.configurable = Desc['[[Configurable]]'];
- }
- return obj;
+ return fromPropertyDescriptor(Desc);
};
diff --git a/node_modules/es-abstract/2017/Get.js b/node_modules/es-abstract/2017/Get.js
index 681055a2f..297968643 100644
--- a/node_modules/es-abstract/2017/Get.js
+++ b/node_modules/es-abstract/2017/Get.js
@@ -9,12 +9,7 @@ var inspect = require('object-inspect');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
-/**
- * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
- * 1. Assert: Type(O) is Object.
- * 2. Assert: IsPropertyKey(P) is true.
- * 3. Return O.[[Get]](P, O).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
module.exports = function Get(O, P) {
// 7.3.1.1
diff --git a/node_modules/es-abstract/2017/GetGlobalObject.js b/node_modules/es-abstract/2017/GetGlobalObject.js
new file mode 100644
index 000000000..0541ede0c
--- /dev/null
+++ b/node_modules/es-abstract/2017/GetGlobalObject.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var getGlobal = require('globalthis/polyfill');
+
+// https://262.ecma-international.org/6.0/#sec-getglobalobject
+
+module.exports = function GetGlobalObject() {
+ return getGlobal();
+};
diff --git a/node_modules/es-abstract/2017/GetIterator.js b/node_modules/es-abstract/2017/GetIterator.js
index a2d3b16cb..892197a23 100644
--- a/node_modules/es-abstract/2017/GetIterator.js
+++ b/node_modules/es-abstract/2017/GetIterator.js
@@ -20,8 +20,7 @@ module.exports = function GetIterator(obj, method) {
{
AdvanceStringIndex: AdvanceStringIndex,
GetMethod: GetMethod,
- IsArray: IsArray,
- Type: Type
+ IsArray: IsArray
},
obj
);
diff --git a/node_modules/es-abstract/2017/GetMethod.js b/node_modules/es-abstract/2017/GetMethod.js
index 775d3fb95..d3775178e 100644
--- a/node_modules/es-abstract/2017/GetMethod.js
+++ b/node_modules/es-abstract/2017/GetMethod.js
@@ -8,15 +8,9 @@ var GetV = require('./GetV');
var IsCallable = require('./IsCallable');
var IsPropertyKey = require('./IsPropertyKey');
-/**
- * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let func be GetV(O, P).
- * 3. ReturnIfAbrupt(func).
- * 4. If func is either undefined or null, return undefined.
- * 5. If IsCallable(func) is false, throw a TypeError exception.
- * 6. Return func.
- */
+var debug = require('object-inspect');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getmethod
module.exports = function GetMethod(O, P) {
// 7.3.9.1
@@ -34,7 +28,7 @@ module.exports = function GetMethod(O, P) {
// 7.3.9.5
if (!IsCallable(func)) {
- throw new $TypeError(P + 'is not a function');
+ throw new $TypeError(P + ' is not a function: ' + debug(func));
}
// 7.3.9.6
diff --git a/node_modules/es-abstract/2017/GetOwnPropertyKeys.js b/node_modules/es-abstract/2017/GetOwnPropertyKeys.js
index b8f4167f7..40c0b367f 100644
--- a/node_modules/es-abstract/2017/GetOwnPropertyKeys.js
+++ b/node_modules/es-abstract/2017/GetOwnPropertyKeys.js
@@ -6,8 +6,8 @@ var hasSymbols = require('has-symbols')();
var $TypeError = GetIntrinsic('%TypeError%');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
-var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
+var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%', true);
var keys = require('object-keys');
var esType = require('./Type');
diff --git a/node_modules/es-abstract/2017/GetPrototypeFromConstructor.js b/node_modules/es-abstract/2017/GetPrototypeFromConstructor.js
index 5f369cad8..25ee12f35 100644
--- a/node_modules/es-abstract/2017/GetPrototypeFromConstructor.js
+++ b/node_modules/es-abstract/2017/GetPrototypeFromConstructor.js
@@ -4,6 +4,7 @@ var GetIntrinsic = require('get-intrinsic');
var $Function = GetIntrinsic('%Function%');
var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
var Get = require('./Get');
var IsConstructor = require('./IsConstructor');
@@ -20,7 +21,7 @@ module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefa
if (Type(proto) !== 'Object') {
if (!(constructor instanceof $Function)) {
// ignore other realms, for now
- throw new $TypeError('cross-realm constructors not currently supported');
+ throw new $SyntaxError('cross-realm constructors not currently supported');
}
proto = intrinsic;
}
diff --git a/node_modules/es-abstract/2017/GetSubstitution.js b/node_modules/es-abstract/2017/GetSubstitution.js
index 5bdce38b6..a60d42136 100644
--- a/node_modules/es-abstract/2017/GetSubstitution.js
+++ b/node_modules/es-abstract/2017/GetSubstitution.js
@@ -8,7 +8,7 @@ var $parseInt = GetIntrinsic('%parseInt%');
var inspect = require('object-inspect');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var callBound = require('call-bind/callBound');
var every = require('../helpers/every');
diff --git a/node_modules/es-abstract/2017/GetV.js b/node_modules/es-abstract/2017/GetV.js
index 2d8cc8246..2dcddb351 100644
--- a/node_modules/es-abstract/2017/GetV.js
+++ b/node_modules/es-abstract/2017/GetV.js
@@ -7,13 +7,7 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var ToObject = require('./ToObject');
-/**
- * 7.3.2 GetV (V, P)
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let O be ToObject(V).
- * 3. ReturnIfAbrupt(O).
- * 4. Return O.[[Get]](P, V).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-getv
module.exports = function GetV(V, P) {
// 7.3.2.1
diff --git a/node_modules/es-abstract/2017/IsArray.js b/node_modules/es-abstract/2017/IsArray.js
index f933cec03..600ffa002 100644
--- a/node_modules/es-abstract/2017/IsArray.js
+++ b/node_modules/es-abstract/2017/IsArray.js
@@ -1,14 +1,4 @@
'use strict';
-var GetIntrinsic = require('get-intrinsic');
-
-var $Array = GetIntrinsic('%Array%');
-
-// eslint-disable-next-line global-require
-var toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');
-
// https://ecma-international.org/ecma-262/6.0/#sec-isarray
-
-module.exports = $Array.isArray || function IsArray(argument) {
- return toStr(argument) === '[object Array]';
-};
+module.exports = require('../helpers/IsArray');
diff --git a/node_modules/es-abstract/2017/IsCompatiblePropertyDescriptor.js b/node_modules/es-abstract/2017/IsCompatiblePropertyDescriptor.js
new file mode 100644
index 000000000..8bdaf3eb4
--- /dev/null
+++ b/node_modules/es-abstract/2017/IsCompatiblePropertyDescriptor.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
+
+// https://262.ecma-international.org/6.0/#sec-iscompatiblepropertydescriptor
+
+module.exports = function IsCompatiblePropertyDescriptor(Extensible, Desc, Current) {
+ return ValidateAndApplyPropertyDescriptor(undefined, undefined, Extensible, Desc, Current);
+};
diff --git a/node_modules/es-abstract/2017/IsDetachedBuffer.js b/node_modules/es-abstract/2017/IsDetachedBuffer.js
new file mode 100644
index 000000000..4b373e9ab
--- /dev/null
+++ b/node_modules/es-abstract/2017/IsDetachedBuffer.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $byteLength = callBound('%ArrayBuffer.prototype.byteLength%', true)
+ || function byteLength(ab) { return ab.byteLength; }; // in node < 0.11, byteLength is an own nonconfigurable property
+
+var isArrayBuffer = require('is-array-buffer');
+
+var availableTypedArrays = require('available-typed-arrays')();
+
+// https://262.ecma-international.org/6.0/#sec-isdetachedbuffer
+
+module.exports = function IsDetachedBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
+ }
+ if ($byteLength(arrayBuffer) === 0) {
+ try {
+ new global[availableTypedArrays[0]](arrayBuffer); // eslint-disable-line no-new
+ } catch (error) {
+ return error.name === 'TypeError';
+ }
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2017/IsExtensible.js b/node_modules/es-abstract/2017/IsExtensible.js
index 9df5b80b1..d6e363840 100644
--- a/node_modules/es-abstract/2017/IsExtensible.js
+++ b/node_modules/es-abstract/2017/IsExtensible.js
@@ -2,13 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $Object = GetIntrinsic('%Object%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $isExtensible = GetIntrinsic('%Object.isExtensible%', true);
var isPrimitive = require('../helpers/isPrimitive');
-var $preventExtensions = $Object.preventExtensions;
-var $isExtensible = $Object.isExtensible;
-
// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o
module.exports = $preventExtensions
diff --git a/node_modules/es-abstract/2017/IsSharedArrayBuffer.js b/node_modules/es-abstract/2017/IsSharedArrayBuffer.js
new file mode 100644
index 000000000..8e96e33f3
--- /dev/null
+++ b/node_modules/es-abstract/2017/IsSharedArrayBuffer.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+// https://262.ecma-international.org/8.0/#sec-issharedarraybuffer
+
+module.exports = function IsSharedArrayBuffer(obj) {
+ if (Type(obj) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ return isSharedArrayBuffer(obj);
+};
diff --git a/node_modules/es-abstract/2017/IteratorClose.js b/node_modules/es-abstract/2017/IteratorClose.js
index dd1118df7..f703ea632 100644
--- a/node_modules/es-abstract/2017/IteratorClose.js
+++ b/node_modules/es-abstract/2017/IteratorClose.js
@@ -5,6 +5,7 @@ var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
var GetMethod = require('./GetMethod');
var IsCallable = require('./IsCallable');
var Type = require('./Type');
@@ -15,10 +16,10 @@ module.exports = function IteratorClose(iterator, completion) {
if (Type(iterator) !== 'Object') {
throw new $TypeError('Assertion failed: Type(iterator) is not Object');
}
- if (!IsCallable(completion)) {
- throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record');
+ if (!IsCallable(completion) && !(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a thunk representing a Completion Record, nor a Completion Record instance');
}
- var completionThunk = completion;
+ var completionThunk = completion instanceof CompletionRecord ? function () { return completion['?'](); } : completion;
var iteratorReturn = GetMethod(iterator, 'return');
diff --git a/node_modules/es-abstract/2017/NormalCompletion.js b/node_modules/es-abstract/2017/NormalCompletion.js
new file mode 100644
index 000000000..1e429dd65
--- /dev/null
+++ b/node_modules/es-abstract/2017/NormalCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/6.0/#sec-normalcompletion
+
+module.exports = function NormalCompletion(value) {
+ return new CompletionRecord('normal', value);
+};
diff --git a/node_modules/es-abstract/2017/NumberToRawBytes.js b/node_modules/es-abstract/2017/NumberToRawBytes.js
new file mode 100644
index 000000000..b26cd22fd
--- /dev/null
+++ b/node_modules/es-abstract/2017/NumberToRawBytes.js
@@ -0,0 +1,198 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $floor = GetIntrinsic('%Math.floor%');
+var $log = GetIntrinsic('%Math.log%');
+var $log2E = GetIntrinsic('%Math.LOG2E%');
+var $log2 = GetIntrinsic('%Math.log2%', true) || function log2(x) {
+ return $log(x) * $log2E;
+};
+var $parseInt = GetIntrinsic('%parseInt%');
+var $pow = GetIntrinsic('%Math.pow%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $reverse = callBound('Array.prototype.reverse');
+var $numberToString = callBound('Number.prototype.toString');
+var $strSlice = callBound('String.prototype.slice');
+
+var abs = require('./abs');
+var hasOwnProperty = require('./HasOwnProperty');
+var ToInt16 = require('./ToInt16');
+var ToInt32 = require('./ToInt32');
+var ToInt8 = require('./ToInt8');
+var ToUint16 = require('./ToUint16');
+var ToUint32 = require('./ToUint32');
+var ToUint8 = require('./ToUint8');
+var ToUint8Clamp = require('./ToUint8Clamp');
+var Type = require('./Type');
+
+var isNaN = require('../helpers/isNaN');
+var isFinite = require('../helpers/isFinite');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/8.0/#table-50
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ Float32: 4,
+ Float64: 8
+};
+
+var TypeToAO = {
+ __proto__: null,
+ Int8: ToInt8,
+ Uint8: ToUint8,
+ Uint8C: ToUint8Clamp,
+ Int16: ToInt16,
+ Uint16: ToUint16,
+ Int32: ToInt32,
+ Uint32: ToUint32
+};
+
+// https://262.ecma-international.org/8.0/#sec-numbertorawbytes
+
+module.exports = function NumberToRawBytes(type, value, isLittleEndian) {
+ if (typeof type !== 'string' || !hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (Type(value) !== 'Number') {
+ throw new $TypeError('Assertion failed: `value` must be a Number');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var rawBytes = [];
+ var exponent;
+
+ if (type === 'Float32') { // step 1
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 192, 127] : [127, 192, 0, 0]; // hardcoded
+ }
+
+ var leastSig;
+
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, leastSig] : [leastSig, 0, 0, 0];
+ }
+
+ if (!isFinite(value)) {
+ leastSig = value < 0 ? 255 : 127;
+ return isLittleEndian ? [0, 0, 128, leastSig] : [leastSig, 128, 0, 0];
+ }
+
+ var sign = value < 0 ? 1 : 0;
+ value = abs(value); // eslint-disable-line no-param-reassign
+
+ exponent = 0;
+ while (value >= 2) {
+ exponent += 1;
+ value /= 2; // eslint-disable-line no-param-reassign
+ }
+
+ while (value < 1) {
+ exponent -= 1;
+ value *= 2; // eslint-disable-line no-param-reassign
+ }
+
+ var mantissa = value - 1;
+ mantissa *= $pow(2, 23);
+ mantissa = $floor(mantissa);
+
+ exponent += 127;
+ exponent = exponent << 23;
+
+ var result = sign << 31;
+ result |= exponent;
+ result |= mantissa;
+
+ var byte0 = result & 255;
+ result = result >> 8;
+ var byte1 = result & 255;
+ result = result >> 8;
+ var byte2 = result & 255;
+ result = result >> 8;
+ var byte3 = result & 255;
+
+ if (isLittleEndian) {
+ return [byte0, byte1, byte2, byte3];
+ }
+ return [byte3, byte2, byte1, byte0];
+ } else if (type === 'Float64') { // step 2
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 0, leastSig] : [leastSig, 0, 0, 0, 0, 0, 0, 0];
+ }
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 248, 127] : [127, 248, 0, 0, 0, 0, 0, 0];
+ }
+ if (!isFinite(value)) {
+ var infBytes = value < 0 ? [0, 0, 0, 0, 0, 0, 240, 255] : [0, 0, 0, 0, 0, 0, 240, 127];
+ return isLittleEndian ? infBytes : $reverse(infBytes);
+ }
+
+ var isNegative = value < 0;
+ if (isNegative) { value = -value; } // eslint-disable-line no-param-reassign
+
+ exponent = $floor($log2(value));
+ var significand = (value / $pow(2, exponent)) - 1;
+
+ var bitString = '';
+ for (var i = 0; i < 52; i++) {
+ significand *= 2;
+ if (significand >= 1) {
+ bitString += '1';
+ significand -= 1;
+ } else {
+ bitString += '0';
+ }
+ }
+
+ exponent += 1023;
+ var exponentBits = $numberToString(exponent, 2);
+ while (exponentBits.length < 11) { exponentBits = '0' + exponentBits; }
+
+ var fullBitString = (isNegative ? '1' : '0') + exponentBits + bitString;
+ while (fullBitString.length < 64) { fullBitString = '0' + fullBitString; }
+
+ for (i = 0; i < 8; i++) {
+ rawBytes[i] = $parseInt($strSlice(fullBitString, i * 8, (i + 1) * 8), 2);
+ }
+
+ return isLittleEndian ? $reverse(rawBytes) : rawBytes;
+ } // step 3
+
+ var n = TypeToSizes[type]; // step 3.a
+
+ var convOp = TypeToAO[type]; // step 3.b
+
+ var intValue = convOp(value); // step 3.c
+
+ /*
+ if (intValue >= 0) { // step 3.d
+ // Let rawBytes be a List containing the n-byte binary encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ } else { // step 3.e
+ // Let rawBytes be a List containing the n-byte binary 2's complement encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ }
+ */
+ if (intValue < 0) {
+ intValue = intValue >>> 0;
+ }
+ for (i = 0; i < n; i++) {
+ rawBytes[isLittleEndian ? i : n - 1 - i] = intValue & 0xff;
+ intValue = intValue >> 8;
+ }
+
+ return rawBytes; // step 4
+};
diff --git a/node_modules/es-abstract/2017/ObjectCreate.js b/node_modules/es-abstract/2017/ObjectCreate.js
index 2851a646d..1f4bb16af 100644
--- a/node_modules/es-abstract/2017/ObjectCreate.js
+++ b/node_modules/es-abstract/2017/ObjectCreate.js
@@ -6,9 +6,14 @@ var $ObjectCreate = GetIntrinsic('%Object.create%', true);
var $TypeError = GetIntrinsic('%TypeError%');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var IsArray = require('./IsArray');
var Type = require('./Type');
-var hasProto = !({ __proto__: null } instanceof Object);
+var forEach = require('../helpers/forEach');
+
+var SLOT = require('internal-slot');
+
+var hasProto = require('has-proto')();
// https://ecma-international.org/ecma-262/6.0/#sec-objectcreate
@@ -16,22 +21,30 @@ module.exports = function ObjectCreate(proto, internalSlotsList) {
if (proto !== null && Type(proto) !== 'Object') {
throw new $TypeError('Assertion failed: `proto` must be null or an object');
}
- var slots = arguments.length < 2 ? [] : internalSlotsList;
- if (slots.length > 0) {
- throw new $SyntaxError('es-abstract does not yet support internal slots');
+ var slots = arguments.length < 2 ? [] : internalSlotsList; // step 1
+ if (arguments.length >= 2 && !IsArray(slots)) {
+ throw new $TypeError('Assertion failed: `internalSlotsList` must be an Array');
}
+ var O;
if ($ObjectCreate) {
- return $ObjectCreate(proto);
- }
- if (hasProto) {
- return { __proto__: proto };
+ O = $ObjectCreate(proto);
+ } else if (hasProto) {
+ O = { __proto__: proto };
+ } else {
+ if (proto === null) {
+ throw new $SyntaxError('native Object.create support is required to create null objects');
+ }
+ var T = function T() {};
+ T.prototype = proto;
+ O = new T();
}
- if (proto === null) {
- throw new $SyntaxError('native Object.create support is required to create null objects');
+ if (slots.length > 0) {
+ forEach(slots, function (slot) {
+ SLOT.set(O, slot, void undefined);
+ });
}
- var T = function T() {};
- T.prototype = proto;
- return new T();
+
+ return O; // step 6
};
diff --git a/node_modules/es-abstract/2017/ObjectDefineProperties.js b/node_modules/es-abstract/2017/ObjectDefineProperties.js
new file mode 100644
index 000000000..f096f1ede
--- /dev/null
+++ b/node_modules/es-abstract/2017/ObjectDefineProperties.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var Get = require('./Get');
+var ToObject = require('./ToObject');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+
+var forEach = require('../helpers/forEach');
+var getOwnPropertyDescriptor = require('gopd');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var $push = callBound('Array.prototype.push');
+
+// https://262.ecma-international.org/6.0/#sec-objectdefineproperties
+module.exports = function ObjectDefineProperties(O, Properties) {
+ var props = ToObject(Properties); // step 1
+ var keys = OwnPropertyKeys(props); // step 2
+ var descriptors = []; // step 3
+
+ forEach(keys, function (nextKey) { // step 4
+ var propDesc = ToPropertyDescriptor(getOwnPropertyDescriptor(props, nextKey)); // step 4.a
+ if (typeof propDesc !== 'undefined' && propDesc['[[Enumerable]]']) { // step 4.b
+ var descObj = Get(props, nextKey); // step 4.b.i
+ var desc = ToPropertyDescriptor(descObj); // step 4.b.ii
+ $push(descriptors, [nextKey, desc]); // step 4.b.iii
+ }
+ });
+
+ forEach(descriptors, function (pair) { // step 5
+ var P = pair[0]; // step 5.a
+ var desc = pair[1]; // step 5.b
+ desc = FromPropertyDescriptor(desc); // TODO: remove this once DefinePropertyOrThrow is fixed
+ DefinePropertyOrThrow(O, P, desc); // step 5.c
+ });
+
+ return O; // step 6
+};
diff --git a/node_modules/es-abstract/2017/OrdinaryDefineOwnProperty.js b/node_modules/es-abstract/2017/OrdinaryDefineOwnProperty.js
index 5d33aa6d6..34f029f7e 100644
--- a/node_modules/es-abstract/2017/OrdinaryDefineOwnProperty.js
+++ b/node_modules/es-abstract/2017/OrdinaryDefineOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
diff --git a/node_modules/es-abstract/2017/OrdinaryGetOwnProperty.js b/node_modules/es-abstract/2017/OrdinaryGetOwnProperty.js
index 3d11e9fad..fd8035acb 100644
--- a/node_modules/es-abstract/2017/OrdinaryGetOwnProperty.js
+++ b/node_modules/es-abstract/2017/OrdinaryGetOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('call-bind/callBound');
diff --git a/node_modules/es-abstract/2017/OrdinarySetPrototypeOf.js b/node_modules/es-abstract/2017/OrdinarySetPrototypeOf.js
index d0ff7a7c2..d2b72306c 100644
--- a/node_modules/es-abstract/2017/OrdinarySetPrototypeOf.js
+++ b/node_modules/es-abstract/2017/OrdinarySetPrototypeOf.js
@@ -16,15 +16,15 @@ module.exports = function OrdinarySetPrototypeOf(O, V) {
throw new $TypeError('Assertion failed: V must be Object or Null');
}
/*
- var extensible = IsExtensible(O);
- var current = OrdinaryGetPrototypeOf(O);
- if (SameValue(V, current)) {
- return true;
- }
- if (!extensible) {
- return false;
- }
- */
+ var extensible = IsExtensible(O);
+ var current = OrdinaryGetPrototypeOf(O);
+ if (SameValue(V, current)) {
+ return true;
+ }
+ if (!extensible) {
+ return false;
+ }
+ */
try {
$setProto(O, V);
} catch (e) {
@@ -32,22 +32,22 @@ module.exports = function OrdinarySetPrototypeOf(O, V) {
}
return OrdinaryGetPrototypeOf(O) === V;
/*
- var p = V;
- var done = false;
- while (!done) {
- if (p === null) {
- done = true;
- } else if (SameValue(p, O)) {
- return false;
- } else {
- if (wat) {
- done = true;
- } else {
- p = p.[[Prototype]];
- }
- }
- }
- O.[[Prototype]] = V;
- return true;
- */
+ var p = V;
+ var done = false;
+ while (!done) {
+ if (p === null) {
+ done = true;
+ } else if (SameValue(p, O)) {
+ return false;
+ } else {
+ if (wat) {
+ done = true;
+ } else {
+ p = p.[[Prototype]];
+ }
+ }
+ }
+ O.[[Prototype]] = V;
+ return true;
+ */
};
diff --git a/node_modules/es-abstract/2017/OrdinaryToPrimitive.js b/node_modules/es-abstract/2017/OrdinaryToPrimitive.js
new file mode 100644
index 000000000..e1dbe1427
--- /dev/null
+++ b/node_modules/es-abstract/2017/OrdinaryToPrimitive.js
@@ -0,0 +1,38 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+var inspect = require('object-inspect');
+
+// https://262.ecma-international.org/8.0/#sec-ordinarytoprimitive
+
+module.exports = function OrdinaryToPrimitive(O, hint) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (/* Type(hint) !== 'String' || */ hint !== 'string' && hint !== 'number') {
+ throw new $TypeError('Assertion failed: `hint` must be "string" or "number"');
+ }
+
+ var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
+
+ for (var i = 0; i < methodNames.length; i += 1) {
+ var name = methodNames[i];
+ var method = Get(O, name);
+ if (IsCallable(method)) {
+ var result = Call(method, O);
+ if (Type(result) !== 'Object') {
+ return result;
+ }
+ }
+ }
+
+ throw new $TypeError('No primitive value for ' + inspect(O));
+};
diff --git a/node_modules/es-abstract/2017/RawBytesToNumber.js b/node_modules/es-abstract/2017/RawBytesToNumber.js
new file mode 100644
index 000000000..5811dae40
--- /dev/null
+++ b/node_modules/es-abstract/2017/RawBytesToNumber.js
@@ -0,0 +1,145 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $pow = GetIntrinsic('%Math.pow%');
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $charAt = callBound('String.prototype.charAt');
+var $reverse = callBound('Array.prototype.reverse');
+var $slice = callBound('Array.prototype.slice');
+
+var hasOwnProperty = require('./HasOwnProperty');
+var IsArray = require('./IsArray');
+var Type = require('./Type');
+
+var every = require('../helpers/every');
+var isByteValue = require('../helpers/isByteValue');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/8.0/#table-50
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ Float32: 4,
+ Float64: 8
+};
+
+// https://262.ecma-international.org/8.0/#sec-rawbytestonumber
+
+module.exports = function RawBytesToNumber(type, rawBytes, isLittleEndian) {
+ if (typeof type !== 'string' || !hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (!IsArray(rawBytes) || !every(rawBytes, isByteValue)) {
+ throw new $TypeError('Assertion failed: `rawBytes` must be an Array of bytes');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var elementSize = TypeToSizes[type]; // step 1
+
+ if (rawBytes.length !== elementSize) {
+ // this assertion is not in the spec, but it'd be an editorial error if it were ever violated
+ throw new $RangeError('Assertion failed: `rawBytes` must have a length of ' + elementSize + ' for type ' + type);
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $slice(rawBytes, 0, elementSize);
+ if (!isLittleEndian) {
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $reverse(rawBytes); // step 2
+ }
+
+ /* eslint no-redeclare: 1 */
+ if (type === 'Float32') { // step 3
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary32 value.
+If value is an IEEE 754-2008 binary32 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = (rawBytes[3] & 0x80) >> 7; // first bit
+ var exponent = ((rawBytes[3] & 0x7F) << 1) // 7 bits from index 3
+ | ((rawBytes[2] & 0x80) >> 7); // 1 bit from index 2
+ var mantissa = ((rawBytes[2] & 0x7F) << 16) // 7 bits from index 2
+ | (rawBytes[1] << 8) // 8 bits from index 1
+ | rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign === 0 ? 0 : -0;
+ }
+ if (exponent === 0xFF && mantissa === 0) {
+ return sign === 0 ? Infinity : -Infinity;
+ }
+ if (exponent === 0xFF && mantissa !== 0) {
+ return NaN;
+ }
+
+ exponent -= 127; // subtract the bias
+
+ // return $pow(-1, sign) * mantissa / $pow(2, 23) * $pow(2, exponent);
+ // return $pow(-1, sign) * (mantissa + 0x1000000) * $pow(2, exponent - 23);
+ return $pow(-1, sign) * (1 + (mantissa / $pow(2, 23))) * $pow(2, exponent);
+ }
+
+ if (type === 'Float64') { // step 4
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary64 value.
+If value is an IEEE 754-2008 binary64 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = rawBytes[7] & 0x80 ? -1 : 1; // first bit
+ var exponent = ((rawBytes[7] & 0x7F) << 4) // 7 bits from index 7
+ | ((rawBytes[6] & 0xF0) >> 4); // 4 bits from index 6
+ var mantissa = ((rawBytes[6] & 0x0F) * 0x1000000000000) // 4 bits from index 6
+ + (rawBytes[5] * 0x10000000000) // 8 bits from index 5
+ + (rawBytes[4] * 0x100000000) // 8 bits from index 4
+ + (rawBytes[3] * 0x1000000) // 8 bits from index 3
+ + (rawBytes[2] * 0x10000) // 8 bits from index 2
+ + (rawBytes[1] * 0x100) // 8 bits from index 1
+ + rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign * 0;
+ }
+ if (exponent === 0x7FF && mantissa !== 0) {
+ return NaN;
+ }
+ if (exponent === 0x7FF && mantissa === 0) {
+ return sign * Infinity;
+ }
+
+ exponent -= 1023; // subtract the bias
+
+ return sign * (mantissa + 0x10000000000000) * $pow(2, exponent - 52);
+ }
+
+ // this is common to both branches
+ var intValue = 0;
+ for (var i = 0; i < rawBytes.length; i++) {
+ intValue |= rawBytes[i] << (8 * i);
+ }
+ /*
+ Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of an unsigned little-endian binary number.
+ */
+
+ if ($charAt(type, 0) !== 'U') { // steps 5-6
+ // Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of a binary little-endian 2's complement number of bit length elementSize × 8.
+ var bitLength = elementSize * 8;
+ if (bitLength < 32) {
+ intValue = (intValue << (32 - bitLength)) >> (32 - bitLength);
+ }
+ }
+
+ return intValue; // step 7
+};
diff --git a/node_modules/es-abstract/2017/Set.js b/node_modules/es-abstract/2017/Set.js
index ea49e813f..097149887 100644
--- a/node_modules/es-abstract/2017/Set.js
+++ b/node_modules/es-abstract/2017/Set.js
@@ -36,12 +36,12 @@ module.exports = function Set(O, P, V, Throw) {
throw new $TypeError('Attempted to assign to readonly property.');
}
return true;
- } else {
- try {
- O[P] = V; // eslint-disable-line no-param-reassign
- return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
- } catch (e) {
- return false;
- }
}
+ try {
+ O[P] = V; // eslint-disable-line no-param-reassign
+ return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
+ } catch (e) {
+ return false;
+ }
+
};
diff --git a/node_modules/es-abstract/2017/SetFunctionName.js b/node_modules/es-abstract/2017/SetFunctionName.js
index f59cb7b9e..03ec2227c 100644
--- a/node_modules/es-abstract/2017/SetFunctionName.js
+++ b/node_modules/es-abstract/2017/SetFunctionName.js
@@ -6,7 +6,7 @@ var has = require('has');
var $TypeError = GetIntrinsic('%TypeError%');
-var getSymbolDescription = require('../helpers/getSymbolDescription');
+var getSymbolDescription = require('get-symbol-description');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
var IsExtensible = require('./IsExtensible');
diff --git a/node_modules/es-abstract/2017/SetIntegrityLevel.js b/node_modules/es-abstract/2017/SetIntegrityLevel.js
index 1ac7d61e2..546f3e74f 100644
--- a/node_modules/es-abstract/2017/SetIntegrityLevel.js
+++ b/node_modules/es-abstract/2017/SetIntegrityLevel.js
@@ -4,9 +4,9 @@ var GetIntrinsic = require('get-intrinsic');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
-var $preventExtensions = GetIntrinsic('%Object.preventExtensions%');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $gOPD = require('gopd');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
var forEach = require('../helpers/forEach');
diff --git a/node_modules/es-abstract/2017/StringCreate.js b/node_modules/es-abstract/2017/StringCreate.js
index da0c0ea06..bd02820f7 100644
--- a/node_modules/es-abstract/2017/StringCreate.js
+++ b/node_modules/es-abstract/2017/StringCreate.js
@@ -20,7 +20,7 @@ module.exports = function StringCreate(value, prototype) {
}
var S = $Object(value);
- if (S !== $StringPrototype) {
+ if (prototype !== $StringPrototype) {
if (setProto) {
setProto(S, prototype);
} else {
diff --git a/node_modules/es-abstract/2017/TestIntegrityLevel.js b/node_modules/es-abstract/2017/TestIntegrityLevel.js
index cf1649c1b..7f95a6e1d 100644
--- a/node_modules/es-abstract/2017/TestIntegrityLevel.js
+++ b/node_modules/es-abstract/2017/TestIntegrityLevel.js
@@ -2,11 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var every = require('../helpers/every');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsExtensible = require('./IsExtensible');
@@ -26,7 +26,7 @@ module.exports = function TestIntegrityLevel(O, level) {
if (status) {
return false;
}
- var theKeys = $gOPN(O);
+ var theKeys = OwnPropertyKeys(O);
return theKeys.length === 0 || every(theKeys, function (k) {
var currentDesc = $gOPD(O, k);
if (typeof currentDesc !== 'undefined') {
diff --git a/node_modules/es-abstract/2017/ToNumber.js b/node_modules/es-abstract/2017/ToNumber.js
index e776bb2b7..95bdd9ecd 100644
--- a/node_modules/es-abstract/2017/ToNumber.js
+++ b/node_modules/es-abstract/2017/ToNumber.js
@@ -8,7 +8,7 @@ var $RegExp = GetIntrinsic('%RegExp%');
var $parseInteger = GetIntrinsic('%parseInt%');
var callBound = require('call-bind/callBound');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var isPrimitive = require('../helpers/isPrimitive');
var $strSlice = callBound('String.prototype.slice');
@@ -48,12 +48,12 @@ module.exports = function ToNumber(argument) {
return ToNumber($parseInteger($strSlice(value, 2), 8));
} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {
return NaN;
- } else {
- var trimmed = $trim(value);
- if (trimmed !== value) {
- return ToNumber(trimmed);
- }
}
+ var trimmed = $trim(value);
+ if (trimmed !== value) {
+ return ToNumber(trimmed);
+ }
+
}
return $Number(value);
};
diff --git a/node_modules/es-abstract/2017/ValidateAtomicAccess.js b/node_modules/es-abstract/2017/ValidateAtomicAccess.js
new file mode 100644
index 000000000..e1c51c776
--- /dev/null
+++ b/node_modules/es-abstract/2017/ValidateAtomicAccess.js
@@ -0,0 +1,36 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToIndex = require('./ToIndex');
+
+var isTypedArray = require('is-typed-array');
+var typedArrayLength = require('typed-array-length');
+
+// https://262.ecma-international.org/8.0/#sec-validateatomicaccess
+
+module.exports = function ValidateAtomicAccess(typedArray, requestIndex) {
+ if (!isTypedArray(typedArray)) {
+ throw new $TypeError('Assertion failed: `typedArray` must be a TypedArray'); // step 1
+ }
+
+ var accessIndex = ToIndex(requestIndex); // step 2
+
+ var length = typedArrayLength(typedArray); // step 3
+
+ /*
+ // this assertion can never be reached
+ if (!(accessIndex >= 0)) {
+ throw new $TypeError('Assertion failed: accessIndex >= 0'); // step 4
+ }
+ */
+
+ if (accessIndex >= length) {
+ throw new $RangeError('index out of range'); // step 5
+ }
+
+ return accessIndex; // step 6
+};
diff --git a/node_modules/es-abstract/2017/ValidateTypedArray.js b/node_modules/es-abstract/2017/ValidateTypedArray.js
new file mode 100644
index 000000000..83df3a81c
--- /dev/null
+++ b/node_modules/es-abstract/2017/ValidateTypedArray.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var $taSome = callBound('%TypedArray.prototype.some%', true);
+
+var Type = require('./Type');
+
+var isTypedArray = require('is-typed-array');
+
+// https://262.ecma-international.org/6.0/#sec-validatetypedarray
+
+module.exports = function ValidateTypedArray(O) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!isTypedArray(O)) {
+ throw new $TypeError('Assertion failed: O must be a TypedArray');
+ }
+
+ // without `.some` (like in node 0.10), there's no way to check buffer detachment, but also no way to be detached
+ if ($taSome) {
+ $taSome(O, function () { return true; });
+ }
+
+ return O.buffer;
+};
diff --git a/node_modules/es-abstract/2017/max.js b/node_modules/es-abstract/2017/max.js
new file mode 100644
index 000000000..b919d4e83
--- /dev/null
+++ b/node_modules/es-abstract/2017/max.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.max%');
diff --git a/node_modules/es-abstract/2017/min.js b/node_modules/es-abstract/2017/min.js
new file mode 100644
index 000000000..909de4b0e
--- /dev/null
+++ b/node_modules/es-abstract/2017/min.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.min%');
diff --git a/node_modules/es-abstract/2017/thisTimeValue.js b/node_modules/es-abstract/2017/thisTimeValue.js
index 12548fa4f..4687950f1 100644
--- a/node_modules/es-abstract/2017/thisTimeValue.js
+++ b/node_modules/es-abstract/2017/thisTimeValue.js
@@ -1,9 +1,9 @@
'use strict';
-var $DateValueOf = require('call-bind/callBound')('Date.prototype.valueOf');
+var $DateGetTime = require('call-bind/callBound')('Date.prototype.getTime');
// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-date-prototype-object
module.exports = function thisTimeValue(value) {
- return $DateValueOf(value);
+ return $DateGetTime(value);
};
diff --git a/node_modules/es-abstract/2018/AbstractRelationalComparison.js b/node_modules/es-abstract/2018/AbstractRelationalComparison.js
index 0dfed5ffe..7c6472f56 100644
--- a/node_modules/es-abstract/2018/AbstractRelationalComparison.js
+++ b/node_modules/es-abstract/2018/AbstractRelationalComparison.js
@@ -7,15 +7,14 @@ var $TypeError = GetIntrinsic('%TypeError%');
var $isNaN = require('../helpers/isNaN');
var $isFinite = require('../helpers/isFinite');
-var isPrefixOf = require('../helpers/isPrefixOf');
+var IsStringPrefix = require('./IsStringPrefix');
var ToNumber = require('./ToNumber');
var ToPrimitive = require('./ToPrimitive');
var Type = require('./Type');
-// https://262.ecma-international.org/5.1/#sec-11.8.5
+// https://262.ecma-international.org/9.0/#sec-abstract-relational-comparison
-// eslint-disable-next-line max-statements
module.exports = function AbstractRelationalComparison(x, y, LeftFirst) {
if (Type(LeftFirst) !== 'Boolean') {
throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean');
@@ -29,35 +28,34 @@ module.exports = function AbstractRelationalComparison(x, y, LeftFirst) {
py = ToPrimitive(y, $Number);
px = ToPrimitive(x, $Number);
}
- var bothStrings = Type(px) === 'String' && Type(py) === 'String';
- if (!bothStrings) {
- var nx = ToNumber(px);
- var ny = ToNumber(py);
- if ($isNaN(nx) || $isNaN(ny)) {
- return undefined;
- }
- if ($isFinite(nx) && $isFinite(ny) && nx === ny) {
- return false;
- }
- if (nx === Infinity) {
- return false;
- }
- if (ny === Infinity) {
- return true;
- }
- if (ny === -Infinity) {
+ if (Type(px) === 'String' && Type(py) === 'String') {
+ if (IsStringPrefix(py, px)) {
return false;
}
- if (nx === -Infinity) {
+ if (IsStringPrefix(px, py)) {
return true;
}
- return nx < ny; // by now, these are both nonzero, finite, and not equal
+ return px < py; // both strings, neither a prefix of the other. shortcut for steps 3 c-f
+ }
+ var nx = ToNumber(px);
+ var ny = ToNumber(py);
+ if ($isNaN(nx) || $isNaN(ny)) {
+ return undefined;
+ }
+ if ($isFinite(nx) && $isFinite(ny) && nx === ny) {
+ return false;
+ }
+ if (nx === Infinity) {
+ return false;
+ }
+ if (ny === Infinity) {
+ return true;
}
- if (isPrefixOf(py, px)) {
+ if (ny === -Infinity) {
return false;
}
- if (isPrefixOf(px, py)) {
+ if (nx === -Infinity) {
return true;
}
- return px < py; // both strings, neither a prefix of the other. shortcut for steps c-f
+ return nx < ny; // by now, these are both nonzero, finite, and not equal
};
diff --git a/node_modules/es-abstract/2018/ArrayCreate.js b/node_modules/es-abstract/2018/ArrayCreate.js
index 4d20e2e5e..cc890cafb 100644
--- a/node_modules/es-abstract/2018/ArrayCreate.js
+++ b/node_modules/es-abstract/2018/ArrayCreate.js
@@ -9,16 +9,17 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsInteger = require('./IsInteger');
+var hasProto = require('has-proto')();
+
var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || (
- // eslint-disable-next-line no-proto, no-negated-condition
- [].__proto__ !== $ArrayPrototype
- ? null
- : function (O, proto) {
+ hasProto
+ ? function (O, proto) {
O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
return O;
}
+ : null
);
// https://ecma-international.org/ecma-262/6.0/#sec-arraycreate
@@ -42,12 +43,12 @@ module.exports = function ArrayCreate(length) {
A.length = length;
}
/* step 10, the above as a shortcut for the below
- OrdinaryDefineOwnProperty(A, 'length', {
- '[[Configurable]]': false,
- '[[Enumerable]]': false,
- '[[Value]]': length,
- '[[Writable]]': true
- });
- */
+ OrdinaryDefineOwnProperty(A, 'length', {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': true
+ });
+ */
return A;
};
diff --git a/node_modules/es-abstract/2018/AsyncIteratorClose.js b/node_modules/es-abstract/2018/AsyncIteratorClose.js
new file mode 100644
index 000000000..eb72ef938
--- /dev/null
+++ b/node_modules/es-abstract/2018/AsyncIteratorClose.js
@@ -0,0 +1,62 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Promise = GetIntrinsic('%Promise%', true);
+
+var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
+var GetMethod = require('./GetMethod');
+var Type = require('./Type');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var callBound = require('call-bind/callBound');
+
+var $then = callBound('Promise.prototype.then', true);
+
+// https://262.ecma-international.org/9.0/#sec-asynciteratorclose
+
+module.exports = function AsyncIteratorClose(iteratorRecord, completion) {
+ assertRecord(Type, 'Iterator Record', 'iteratorRecord', iteratorRecord); // step 1
+
+ if (!(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a Completion Record instance'); // step 2
+ }
+
+ if (!$then) {
+ throw new $SyntaxError('This environment does not support Promises.');
+ }
+
+ var iterator = iteratorRecord['[[Iterator]]']; // step 3
+
+ return new $Promise(function (resolve) {
+ var ret = GetMethod(iterator, 'return'); // step 4
+
+ if (typeof ret === 'undefined') {
+ resolve(completion); // step 5
+ } else {
+ resolve($then(
+ new $Promise(function (resolve2) {
+ // process.exit(42);
+ resolve2(Call(ret, iterator, [])); // step 6
+ }),
+ function (innerResult) {
+ if (Type(innerResult) !== 'Object') {
+ throw new $TypeError('`innerResult` must be an Object'); // step 10
+ }
+ return completion;
+ },
+ function (e) {
+ if (completion.type() === 'throw') {
+ completion['?'](); // step 8
+ } else {
+ throw e; // step 9
+ }
+ }
+ ));
+ }
+ });
+};
diff --git a/node_modules/es-abstract/2018/CharacterRange.js b/node_modules/es-abstract/2018/CharacterRange.js
new file mode 100644
index 000000000..70e4b5235
--- /dev/null
+++ b/node_modules/es-abstract/2018/CharacterRange.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $charCodeAt = callBound('%String.prototype.charCodeAt%');
+var $push = callBound('%Array.prototype.push%');
+
+module.exports = function CharacterRange(A, B) {
+ if (A.length !== 1 || B.length !== 1) {
+ throw new $TypeError('Assertion failed: CharSets A and B contain exactly one character');
+ }
+
+ var a = A[0];
+ var b = B[0];
+
+ var i = $charCodeAt(a, 0);
+ var j = $charCodeAt(b, 0);
+
+ if (!(i <= j)) {
+ throw new $TypeError('Assertion failed: i is not <= j');
+ }
+
+ var arr = [];
+ for (var k = i; k <= j; k += 1) {
+ $push(arr, $fromCharCode(k));
+ }
+ return arr;
+};
diff --git a/node_modules/es-abstract/2018/CompletionRecord.js b/node_modules/es-abstract/2018/CompletionRecord.js
new file mode 100644
index 000000000..370a5677f
--- /dev/null
+++ b/node_modules/es-abstract/2018/CompletionRecord.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var SLOT = require('internal-slot');
+
+// https://262.ecma-international.org/7.0/#sec-completion-record-specification-type
+
+var CompletionRecord = function CompletionRecord(type, value) {
+ if (!(this instanceof CompletionRecord)) {
+ return new CompletionRecord(type, value);
+ }
+ if (type !== 'normal' && type !== 'break' && type !== 'continue' && type !== 'return' && type !== 'throw') {
+ throw new $SyntaxError('Assertion failed: `type` must be one of "normal", "break", "continue", "return", or "throw"');
+ }
+ SLOT.set(this, '[[Type]]', type);
+ SLOT.set(this, '[[Value]]', value);
+ // [[Target]] slot?
+};
+
+CompletionRecord.prototype.type = function Type() {
+ return SLOT.get(this, '[[Type]]');
+};
+
+CompletionRecord.prototype.value = function Value() {
+ return SLOT.get(this, '[[Value]]');
+};
+
+CompletionRecord.prototype['?'] = function ReturnIfAbrupt() {
+ var type = SLOT.get(this, '[[Type]]');
+ var value = SLOT.get(this, '[[Value]]');
+
+ if (type === 'normal') {
+ return value;
+ }
+ if (type === 'throw') {
+ throw value;
+ }
+ throw new $SyntaxError('Completion Record is not of type "normal" or "throw": other types not supported');
+};
+
+CompletionRecord.prototype['!'] = function assert() {
+ var type = SLOT.get(this, '[[Type]]');
+
+ if (type !== 'normal') {
+ throw new $SyntaxError('Assertion failed: Completion Record is not of type "normal"');
+ }
+ return SLOT.get(this, '[[Value]]');
+};
+
+module.exports = CompletionRecord;
diff --git a/node_modules/es-abstract/2018/CopyDataProperties.js b/node_modules/es-abstract/2018/CopyDataProperties.js
index b8f2802bb..c267c3723 100644
--- a/node_modules/es-abstract/2018/CopyDataProperties.js
+++ b/node_modules/es-abstract/2018/CopyDataProperties.js
@@ -55,8 +55,8 @@ module.exports = function CopyDataProperties(target, source, excludedItems) {
var enumerable = $isEnumerable(fromObj, nextKey) || (
// this is to handle string keys being non-enumerable in older engines
typeof source === 'string'
- && nextKey >= 0
- && IsInteger(ToNumber(nextKey))
+ && nextKey >= 0
+ && IsInteger(ToNumber(nextKey))
);
if (excluded === false && enumerable) {
var propValue = Get(fromObj, nextKey);
diff --git a/node_modules/es-abstract/2018/CreateAsyncFromSyncIterator.js b/node_modules/es-abstract/2018/CreateAsyncFromSyncIterator.js
new file mode 100644
index 000000000..90250d10d
--- /dev/null
+++ b/node_modules/es-abstract/2018/CreateAsyncFromSyncIterator.js
@@ -0,0 +1,155 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Promise = GetIntrinsic('%Promise%', true);
+
+var Call = require('./Call');
+var CreateIterResultObject = require('./CreateIterResultObject');
+var Get = require('./Get');
+var GetMethod = require('./GetMethod');
+var IteratorComplete = require('./IteratorComplete');
+var IteratorNext = require('./IteratorNext');
+var IteratorValue = require('./IteratorValue');
+var ObjectCreate = require('./ObjectCreate');
+var PromiseResolve = require('./PromiseResolve');
+var Type = require('./Type');
+
+var SLOT = require('internal-slot');
+
+var callBound = require('call-bind/callBound');
+
+var $then = callBound('Promise.prototype.then', true);
+
+var assertRecord = require('../helpers/assertRecord');
+
+var AsyncFromSyncIteratorContinuation = function AsyncFromSyncIteratorContinuation(result) {
+ if (Type(result) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (arguments.length > 1) {
+ throw new $TypeError('although AsyncFromSyncIteratorContinuation should take a second argument, it is not used in this implementation');
+ }
+
+ if (!$Promise) {
+ throw new $SyntaxError('This environment does not support Promises.');
+ }
+
+ return new Promise(function (resolve) {
+ var done = IteratorComplete(result); // step 2
+ var value = IteratorValue(result); // step 4
+ var valueWrapper = PromiseResolve($Promise, value); // step 6
+
+ // eslint-disable-next-line no-shadow
+ var onFulfilled = function (value) { // steps 8-9
+ return CreateIterResultObject(value, done); // step 8.a
+ };
+ resolve($then(valueWrapper, onFulfilled)); // step 11
+ }); // step 12
+};
+
+var $AsyncFromSyncIteratorPrototype = GetIntrinsic('%AsyncFromSyncIteratorPrototype%', true) || {
+ next: function next(value) {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var argsLength = arguments.length;
+
+ return new Promise(function (resolve) { // step 3
+ var syncIteratorRecord = SLOT.get(O, '[[SyncIteratorRecord]]'); // step 4
+ var result;
+ if (argsLength > 0) {
+ result = IteratorNext(syncIteratorRecord['[[Iterator]]'], value); // step 5.a
+ } else { // step 6
+ result = IteratorNext(syncIteratorRecord['[[Iterator]]']);// step 6.a
+ }
+ resolve(AsyncFromSyncIteratorContinuation(result)); // step 8
+ });
+ },
+ 'return': function () {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var valueIsPresent = arguments.length > 0;
+ var value = valueIsPresent ? arguments[0] : void undefined;
+
+ return new Promise(function (resolve, reject) { // step 3
+ var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4
+ var iteratorReturn = GetMethod(syncIterator, 'return'); // step 5
+
+ if (typeof iteratorReturn === 'undefined') { // step 7
+ var iterResult = CreateIterResultObject(value, true); // step 7.a
+ Call(resolve, undefined, [iterResult]); // step 7.b
+ return;
+ }
+ var result;
+ if (valueIsPresent) { // step 8
+ result = Call(iteratorReturn, syncIterator, [value]); // step 8.a
+ } else { // step 9
+ result = Call(iteratorReturn, syncIterator); // step 9.a
+ }
+ if (Type(result) !== 'Object') { // step 11
+ Call(reject, undefined, [new $TypeError('Iterator `return` method returned a non-object value.')]); // step 11.a
+ return;
+ }
+
+ resolve(AsyncFromSyncIteratorContinuation(result)); // step 12
+ });
+ },
+ 'throw': function () {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var valueIsPresent = arguments.length > 0;
+ var value = valueIsPresent ? arguments[0] : void undefined;
+
+ return new Promise(function (resolve, reject) { // step 3
+ var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4
+
+ var throwMethod = GetMethod(syncIterator, 'throw'); // step 5
+
+ if (typeof throwMethod === 'undefined') { // step 7
+ Call(reject, undefined, [value]); // step 7.a
+ return;
+ }
+
+ var result;
+ if (valueIsPresent) { // step 8
+ result = Call(throwMethod, syncIterator, [value]); // step 8.a
+ } else { // step 9
+ result = Call(throwMethod, syncIterator); // step 9.a
+ }
+ if (Type(result) !== 'Object') { // step 11
+ Call(reject, undefined, [new $TypeError('Iterator `throw` method returned a non-object value.')]); // step 11.a
+ return;
+ }
+
+ resolve(AsyncFromSyncIteratorContinuation(result/* , promiseCapability */)); // step 12
+ });
+ }
+};
+
+// https://ecma-international.org/ecma-262/9.0/#sec-createasyncfromsynciterator
+
+module.exports = function CreateAsyncFromSyncIterator(syncIteratorRecord) {
+ assertRecord(Type, 'Iterator Record', 'syncIteratorRecord', syncIteratorRecord);
+
+ // var asyncIterator = ObjectCreate(%AsyncFromSyncIteratorPrototype%, « [[SyncIteratorRecord]] »); // step 1
+ var asyncIterator = ObjectCreate($AsyncFromSyncIteratorPrototype);
+
+ SLOT.set(asyncIterator, '[[SyncIteratorRecord]]', syncIteratorRecord); // step 2
+
+ var nextMethod = Get(asyncIterator, 'next'); // step 3
+
+ return { // steps 3-4
+ '[[Iterator]]': asyncIterator,
+ '[[NextMethod]]': nextMethod,
+ '[[Done]]': false
+ };
+};
diff --git a/node_modules/es-abstract/2018/CreateDataProperty.js b/node_modules/es-abstract/2018/CreateDataProperty.js
index ff5ca3055..02c6cd1f8 100644
--- a/node_modules/es-abstract/2018/CreateDataProperty.js
+++ b/node_modules/es-abstract/2018/CreateDataProperty.js
@@ -25,8 +25,8 @@ module.exports = function CreateDataProperty(O, P, V) {
}
var oldDesc = OrdinaryGetOwnProperty(O, P);
var extensible = !oldDesc || IsExtensible(O);
- var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']);
- if (immutable || !extensible) {
+ var nonConfigurable = oldDesc && !oldDesc['[[Configurable]]'];
+ if (nonConfigurable || !extensible) {
return false;
}
return DefineOwnProperty(
diff --git a/node_modules/es-abstract/2018/DetachArrayBuffer.js b/node_modules/es-abstract/2018/DetachArrayBuffer.js
new file mode 100644
index 000000000..03284729b
--- /dev/null
+++ b/node_modules/es-abstract/2018/DetachArrayBuffer.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isArrayBuffer = require('is-array-buffer');
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+var MessageChannel;
+try {
+ // eslint-disable-next-line global-require
+ MessageChannel = require('worker_threads').MessageChannel;
+} catch (e) { /**/ }
+
+// https://262.ecma-international.org/9.0/#sec-detacharraybuffer
+
+/* globals postMessage */
+
+module.exports = function DetachArrayBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer) || isSharedArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot, and not a Shared Array Buffer');
+ }
+
+ // commented out since there's no way to set or access this key
+ // var key = arguments.length > 1 ? arguments[1] : void undefined;
+
+ // if (!SameValue(arrayBuffer[[ArrayBufferDetachKey]], key)) {
+ // throw new $TypeError('Assertion failed: `key` must be the value of the [[ArrayBufferDetachKey]] internal slot of `arrayBuffer`');
+ // }
+
+ if (typeof structuredClone === 'function') {
+ structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
+ } else if (typeof postMessage === 'function') {
+ postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
+ } else if (MessageChannel) {
+ (new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
+ } else {
+ throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
+ }
+ return null;
+};
diff --git a/node_modules/es-abstract/2018/EnumerableOwnPropertyNames.js b/node_modules/es-abstract/2018/EnumerableOwnPropertyNames.js
index 44171b9eb..8e3177b6a 100644
--- a/node_modules/es-abstract/2018/EnumerableOwnPropertyNames.js
+++ b/node_modules/es-abstract/2018/EnumerableOwnPropertyNames.js
@@ -19,7 +19,7 @@ var Type = require('./Type');
// https://262.ecma-international.org/8.0/#sec-enumerableownproperties
-module.exports = function EnumerableOwnProperties(O, kind) {
+module.exports = function EnumerableOwnPropertyNames(O, kind) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
diff --git a/node_modules/es-abstract/2018/FromPropertyDescriptor.js b/node_modules/es-abstract/2018/FromPropertyDescriptor.js
index 9a69a2605..e142ed582 100644
--- a/node_modules/es-abstract/2018/FromPropertyDescriptor.js
+++ b/node_modules/es-abstract/2018/FromPropertyDescriptor.js
@@ -1,36 +1,16 @@
'use strict';
var assertRecord = require('../helpers/assertRecord');
+var fromPropertyDescriptor = require('../helpers/fromPropertyDescriptor');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
module.exports = function FromPropertyDescriptor(Desc) {
- if (typeof Desc === 'undefined') {
- return Desc;
+ if (typeof Desc !== 'undefined') {
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
}
- assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
-
- var obj = {};
- if ('[[Value]]' in Desc) {
- obj.value = Desc['[[Value]]'];
- }
- if ('[[Writable]]' in Desc) {
- obj.writable = Desc['[[Writable]]'];
- }
- if ('[[Get]]' in Desc) {
- obj.get = Desc['[[Get]]'];
- }
- if ('[[Set]]' in Desc) {
- obj.set = Desc['[[Set]]'];
- }
- if ('[[Enumerable]]' in Desc) {
- obj.enumerable = Desc['[[Enumerable]]'];
- }
- if ('[[Configurable]]' in Desc) {
- obj.configurable = Desc['[[Configurable]]'];
- }
- return obj;
+ return fromPropertyDescriptor(Desc);
};
diff --git a/node_modules/es-abstract/2018/Get.js b/node_modules/es-abstract/2018/Get.js
index 681055a2f..297968643 100644
--- a/node_modules/es-abstract/2018/Get.js
+++ b/node_modules/es-abstract/2018/Get.js
@@ -9,12 +9,7 @@ var inspect = require('object-inspect');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
-/**
- * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
- * 1. Assert: Type(O) is Object.
- * 2. Assert: IsPropertyKey(P) is true.
- * 3. Return O.[[Get]](P, O).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
module.exports = function Get(O, P) {
// 7.3.1.1
diff --git a/node_modules/es-abstract/2018/GetGlobalObject.js b/node_modules/es-abstract/2018/GetGlobalObject.js
new file mode 100644
index 000000000..0541ede0c
--- /dev/null
+++ b/node_modules/es-abstract/2018/GetGlobalObject.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var getGlobal = require('globalthis/polyfill');
+
+// https://262.ecma-international.org/6.0/#sec-getglobalobject
+
+module.exports = function GetGlobalObject() {
+ return getGlobal();
+};
diff --git a/node_modules/es-abstract/2018/GetIterator.js b/node_modules/es-abstract/2018/GetIterator.js
index a2d3b16cb..892197a23 100644
--- a/node_modules/es-abstract/2018/GetIterator.js
+++ b/node_modules/es-abstract/2018/GetIterator.js
@@ -20,8 +20,7 @@ module.exports = function GetIterator(obj, method) {
{
AdvanceStringIndex: AdvanceStringIndex,
GetMethod: GetMethod,
- IsArray: IsArray,
- Type: Type
+ IsArray: IsArray
},
obj
);
diff --git a/node_modules/es-abstract/2018/GetMethod.js b/node_modules/es-abstract/2018/GetMethod.js
index 775d3fb95..d3775178e 100644
--- a/node_modules/es-abstract/2018/GetMethod.js
+++ b/node_modules/es-abstract/2018/GetMethod.js
@@ -8,15 +8,9 @@ var GetV = require('./GetV');
var IsCallable = require('./IsCallable');
var IsPropertyKey = require('./IsPropertyKey');
-/**
- * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let func be GetV(O, P).
- * 3. ReturnIfAbrupt(func).
- * 4. If func is either undefined or null, return undefined.
- * 5. If IsCallable(func) is false, throw a TypeError exception.
- * 6. Return func.
- */
+var debug = require('object-inspect');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getmethod
module.exports = function GetMethod(O, P) {
// 7.3.9.1
@@ -34,7 +28,7 @@ module.exports = function GetMethod(O, P) {
// 7.3.9.5
if (!IsCallable(func)) {
- throw new $TypeError(P + 'is not a function');
+ throw new $TypeError(P + ' is not a function: ' + debug(func));
}
// 7.3.9.6
diff --git a/node_modules/es-abstract/2018/GetOwnPropertyKeys.js b/node_modules/es-abstract/2018/GetOwnPropertyKeys.js
index b8f4167f7..40c0b367f 100644
--- a/node_modules/es-abstract/2018/GetOwnPropertyKeys.js
+++ b/node_modules/es-abstract/2018/GetOwnPropertyKeys.js
@@ -6,8 +6,8 @@ var hasSymbols = require('has-symbols')();
var $TypeError = GetIntrinsic('%TypeError%');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
-var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
+var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%', true);
var keys = require('object-keys');
var esType = require('./Type');
diff --git a/node_modules/es-abstract/2018/GetPrototypeFromConstructor.js b/node_modules/es-abstract/2018/GetPrototypeFromConstructor.js
index 5f369cad8..25ee12f35 100644
--- a/node_modules/es-abstract/2018/GetPrototypeFromConstructor.js
+++ b/node_modules/es-abstract/2018/GetPrototypeFromConstructor.js
@@ -4,6 +4,7 @@ var GetIntrinsic = require('get-intrinsic');
var $Function = GetIntrinsic('%Function%');
var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
var Get = require('./Get');
var IsConstructor = require('./IsConstructor');
@@ -20,7 +21,7 @@ module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefa
if (Type(proto) !== 'Object') {
if (!(constructor instanceof $Function)) {
// ignore other realms, for now
- throw new $TypeError('cross-realm constructors not currently supported');
+ throw new $SyntaxError('cross-realm constructors not currently supported');
}
proto = intrinsic;
}
diff --git a/node_modules/es-abstract/2018/GetSubstitution.js b/node_modules/es-abstract/2018/GetSubstitution.js
index a5a7a1bee..96bdcaafe 100644
--- a/node_modules/es-abstract/2018/GetSubstitution.js
+++ b/node_modules/es-abstract/2018/GetSubstitution.js
@@ -5,7 +5,7 @@ var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('call-bind/callBound');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var every = require('../helpers/every');
var $charAt = callBound('String.prototype.charAt');
diff --git a/node_modules/es-abstract/2018/GetV.js b/node_modules/es-abstract/2018/GetV.js
index 2d8cc8246..2dcddb351 100644
--- a/node_modules/es-abstract/2018/GetV.js
+++ b/node_modules/es-abstract/2018/GetV.js
@@ -7,13 +7,7 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var ToObject = require('./ToObject');
-/**
- * 7.3.2 GetV (V, P)
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let O be ToObject(V).
- * 3. ReturnIfAbrupt(O).
- * 4. Return O.[[Get]](P, V).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-getv
module.exports = function GetV(V, P) {
// 7.3.2.1
diff --git a/node_modules/es-abstract/2018/IsArray.js b/node_modules/es-abstract/2018/IsArray.js
index f933cec03..600ffa002 100644
--- a/node_modules/es-abstract/2018/IsArray.js
+++ b/node_modules/es-abstract/2018/IsArray.js
@@ -1,14 +1,4 @@
'use strict';
-var GetIntrinsic = require('get-intrinsic');
-
-var $Array = GetIntrinsic('%Array%');
-
-// eslint-disable-next-line global-require
-var toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');
-
// https://ecma-international.org/ecma-262/6.0/#sec-isarray
-
-module.exports = $Array.isArray || function IsArray(argument) {
- return toStr(argument) === '[object Array]';
-};
+module.exports = require('../helpers/IsArray');
diff --git a/node_modules/es-abstract/2018/IsCompatiblePropertyDescriptor.js b/node_modules/es-abstract/2018/IsCompatiblePropertyDescriptor.js
new file mode 100644
index 000000000..8bdaf3eb4
--- /dev/null
+++ b/node_modules/es-abstract/2018/IsCompatiblePropertyDescriptor.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
+
+// https://262.ecma-international.org/6.0/#sec-iscompatiblepropertydescriptor
+
+module.exports = function IsCompatiblePropertyDescriptor(Extensible, Desc, Current) {
+ return ValidateAndApplyPropertyDescriptor(undefined, undefined, Extensible, Desc, Current);
+};
diff --git a/node_modules/es-abstract/2018/IsDetachedBuffer.js b/node_modules/es-abstract/2018/IsDetachedBuffer.js
new file mode 100644
index 000000000..4b373e9ab
--- /dev/null
+++ b/node_modules/es-abstract/2018/IsDetachedBuffer.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $byteLength = callBound('%ArrayBuffer.prototype.byteLength%', true)
+ || function byteLength(ab) { return ab.byteLength; }; // in node < 0.11, byteLength is an own nonconfigurable property
+
+var isArrayBuffer = require('is-array-buffer');
+
+var availableTypedArrays = require('available-typed-arrays')();
+
+// https://262.ecma-international.org/6.0/#sec-isdetachedbuffer
+
+module.exports = function IsDetachedBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
+ }
+ if ($byteLength(arrayBuffer) === 0) {
+ try {
+ new global[availableTypedArrays[0]](arrayBuffer); // eslint-disable-line no-new
+ } catch (error) {
+ return error.name === 'TypeError';
+ }
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2018/IsExtensible.js b/node_modules/es-abstract/2018/IsExtensible.js
index 9df5b80b1..d6e363840 100644
--- a/node_modules/es-abstract/2018/IsExtensible.js
+++ b/node_modules/es-abstract/2018/IsExtensible.js
@@ -2,13 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $Object = GetIntrinsic('%Object%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $isExtensible = GetIntrinsic('%Object.isExtensible%', true);
var isPrimitive = require('../helpers/isPrimitive');
-var $preventExtensions = $Object.preventExtensions;
-var $isExtensible = $Object.isExtensible;
-
// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o
module.exports = $preventExtensions
diff --git a/node_modules/es-abstract/2018/IsSharedArrayBuffer.js b/node_modules/es-abstract/2018/IsSharedArrayBuffer.js
new file mode 100644
index 000000000..8e96e33f3
--- /dev/null
+++ b/node_modules/es-abstract/2018/IsSharedArrayBuffer.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+// https://262.ecma-international.org/8.0/#sec-issharedarraybuffer
+
+module.exports = function IsSharedArrayBuffer(obj) {
+ if (Type(obj) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ return isSharedArrayBuffer(obj);
+};
diff --git a/node_modules/es-abstract/2018/IteratorClose.js b/node_modules/es-abstract/2018/IteratorClose.js
index dd1118df7..f703ea632 100644
--- a/node_modules/es-abstract/2018/IteratorClose.js
+++ b/node_modules/es-abstract/2018/IteratorClose.js
@@ -5,6 +5,7 @@ var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
var GetMethod = require('./GetMethod');
var IsCallable = require('./IsCallable');
var Type = require('./Type');
@@ -15,10 +16,10 @@ module.exports = function IteratorClose(iterator, completion) {
if (Type(iterator) !== 'Object') {
throw new $TypeError('Assertion failed: Type(iterator) is not Object');
}
- if (!IsCallable(completion)) {
- throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record');
+ if (!IsCallable(completion) && !(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a thunk representing a Completion Record, nor a Completion Record instance');
}
- var completionThunk = completion;
+ var completionThunk = completion instanceof CompletionRecord ? function () { return completion['?'](); } : completion;
var iteratorReturn = GetMethod(iterator, 'return');
diff --git a/node_modules/es-abstract/2018/NormalCompletion.js b/node_modules/es-abstract/2018/NormalCompletion.js
new file mode 100644
index 000000000..1e429dd65
--- /dev/null
+++ b/node_modules/es-abstract/2018/NormalCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/6.0/#sec-normalcompletion
+
+module.exports = function NormalCompletion(value) {
+ return new CompletionRecord('normal', value);
+};
diff --git a/node_modules/es-abstract/2018/NumberToRawBytes.js b/node_modules/es-abstract/2018/NumberToRawBytes.js
new file mode 100644
index 000000000..b26cd22fd
--- /dev/null
+++ b/node_modules/es-abstract/2018/NumberToRawBytes.js
@@ -0,0 +1,198 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $floor = GetIntrinsic('%Math.floor%');
+var $log = GetIntrinsic('%Math.log%');
+var $log2E = GetIntrinsic('%Math.LOG2E%');
+var $log2 = GetIntrinsic('%Math.log2%', true) || function log2(x) {
+ return $log(x) * $log2E;
+};
+var $parseInt = GetIntrinsic('%parseInt%');
+var $pow = GetIntrinsic('%Math.pow%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $reverse = callBound('Array.prototype.reverse');
+var $numberToString = callBound('Number.prototype.toString');
+var $strSlice = callBound('String.prototype.slice');
+
+var abs = require('./abs');
+var hasOwnProperty = require('./HasOwnProperty');
+var ToInt16 = require('./ToInt16');
+var ToInt32 = require('./ToInt32');
+var ToInt8 = require('./ToInt8');
+var ToUint16 = require('./ToUint16');
+var ToUint32 = require('./ToUint32');
+var ToUint8 = require('./ToUint8');
+var ToUint8Clamp = require('./ToUint8Clamp');
+var Type = require('./Type');
+
+var isNaN = require('../helpers/isNaN');
+var isFinite = require('../helpers/isFinite');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/8.0/#table-50
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ Float32: 4,
+ Float64: 8
+};
+
+var TypeToAO = {
+ __proto__: null,
+ Int8: ToInt8,
+ Uint8: ToUint8,
+ Uint8C: ToUint8Clamp,
+ Int16: ToInt16,
+ Uint16: ToUint16,
+ Int32: ToInt32,
+ Uint32: ToUint32
+};
+
+// https://262.ecma-international.org/8.0/#sec-numbertorawbytes
+
+module.exports = function NumberToRawBytes(type, value, isLittleEndian) {
+ if (typeof type !== 'string' || !hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (Type(value) !== 'Number') {
+ throw new $TypeError('Assertion failed: `value` must be a Number');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var rawBytes = [];
+ var exponent;
+
+ if (type === 'Float32') { // step 1
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 192, 127] : [127, 192, 0, 0]; // hardcoded
+ }
+
+ var leastSig;
+
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, leastSig] : [leastSig, 0, 0, 0];
+ }
+
+ if (!isFinite(value)) {
+ leastSig = value < 0 ? 255 : 127;
+ return isLittleEndian ? [0, 0, 128, leastSig] : [leastSig, 128, 0, 0];
+ }
+
+ var sign = value < 0 ? 1 : 0;
+ value = abs(value); // eslint-disable-line no-param-reassign
+
+ exponent = 0;
+ while (value >= 2) {
+ exponent += 1;
+ value /= 2; // eslint-disable-line no-param-reassign
+ }
+
+ while (value < 1) {
+ exponent -= 1;
+ value *= 2; // eslint-disable-line no-param-reassign
+ }
+
+ var mantissa = value - 1;
+ mantissa *= $pow(2, 23);
+ mantissa = $floor(mantissa);
+
+ exponent += 127;
+ exponent = exponent << 23;
+
+ var result = sign << 31;
+ result |= exponent;
+ result |= mantissa;
+
+ var byte0 = result & 255;
+ result = result >> 8;
+ var byte1 = result & 255;
+ result = result >> 8;
+ var byte2 = result & 255;
+ result = result >> 8;
+ var byte3 = result & 255;
+
+ if (isLittleEndian) {
+ return [byte0, byte1, byte2, byte3];
+ }
+ return [byte3, byte2, byte1, byte0];
+ } else if (type === 'Float64') { // step 2
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 0, leastSig] : [leastSig, 0, 0, 0, 0, 0, 0, 0];
+ }
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 248, 127] : [127, 248, 0, 0, 0, 0, 0, 0];
+ }
+ if (!isFinite(value)) {
+ var infBytes = value < 0 ? [0, 0, 0, 0, 0, 0, 240, 255] : [0, 0, 0, 0, 0, 0, 240, 127];
+ return isLittleEndian ? infBytes : $reverse(infBytes);
+ }
+
+ var isNegative = value < 0;
+ if (isNegative) { value = -value; } // eslint-disable-line no-param-reassign
+
+ exponent = $floor($log2(value));
+ var significand = (value / $pow(2, exponent)) - 1;
+
+ var bitString = '';
+ for (var i = 0; i < 52; i++) {
+ significand *= 2;
+ if (significand >= 1) {
+ bitString += '1';
+ significand -= 1;
+ } else {
+ bitString += '0';
+ }
+ }
+
+ exponent += 1023;
+ var exponentBits = $numberToString(exponent, 2);
+ while (exponentBits.length < 11) { exponentBits = '0' + exponentBits; }
+
+ var fullBitString = (isNegative ? '1' : '0') + exponentBits + bitString;
+ while (fullBitString.length < 64) { fullBitString = '0' + fullBitString; }
+
+ for (i = 0; i < 8; i++) {
+ rawBytes[i] = $parseInt($strSlice(fullBitString, i * 8, (i + 1) * 8), 2);
+ }
+
+ return isLittleEndian ? $reverse(rawBytes) : rawBytes;
+ } // step 3
+
+ var n = TypeToSizes[type]; // step 3.a
+
+ var convOp = TypeToAO[type]; // step 3.b
+
+ var intValue = convOp(value); // step 3.c
+
+ /*
+ if (intValue >= 0) { // step 3.d
+ // Let rawBytes be a List containing the n-byte binary encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ } else { // step 3.e
+ // Let rawBytes be a List containing the n-byte binary 2's complement encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ }
+ */
+ if (intValue < 0) {
+ intValue = intValue >>> 0;
+ }
+ for (i = 0; i < n; i++) {
+ rawBytes[isLittleEndian ? i : n - 1 - i] = intValue & 0xff;
+ intValue = intValue >> 8;
+ }
+
+ return rawBytes; // step 4
+};
diff --git a/node_modules/es-abstract/2018/ObjectCreate.js b/node_modules/es-abstract/2018/ObjectCreate.js
index 2851a646d..1f4bb16af 100644
--- a/node_modules/es-abstract/2018/ObjectCreate.js
+++ b/node_modules/es-abstract/2018/ObjectCreate.js
@@ -6,9 +6,14 @@ var $ObjectCreate = GetIntrinsic('%Object.create%', true);
var $TypeError = GetIntrinsic('%TypeError%');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var IsArray = require('./IsArray');
var Type = require('./Type');
-var hasProto = !({ __proto__: null } instanceof Object);
+var forEach = require('../helpers/forEach');
+
+var SLOT = require('internal-slot');
+
+var hasProto = require('has-proto')();
// https://ecma-international.org/ecma-262/6.0/#sec-objectcreate
@@ -16,22 +21,30 @@ module.exports = function ObjectCreate(proto, internalSlotsList) {
if (proto !== null && Type(proto) !== 'Object') {
throw new $TypeError('Assertion failed: `proto` must be null or an object');
}
- var slots = arguments.length < 2 ? [] : internalSlotsList;
- if (slots.length > 0) {
- throw new $SyntaxError('es-abstract does not yet support internal slots');
+ var slots = arguments.length < 2 ? [] : internalSlotsList; // step 1
+ if (arguments.length >= 2 && !IsArray(slots)) {
+ throw new $TypeError('Assertion failed: `internalSlotsList` must be an Array');
}
+ var O;
if ($ObjectCreate) {
- return $ObjectCreate(proto);
- }
- if (hasProto) {
- return { __proto__: proto };
+ O = $ObjectCreate(proto);
+ } else if (hasProto) {
+ O = { __proto__: proto };
+ } else {
+ if (proto === null) {
+ throw new $SyntaxError('native Object.create support is required to create null objects');
+ }
+ var T = function T() {};
+ T.prototype = proto;
+ O = new T();
}
- if (proto === null) {
- throw new $SyntaxError('native Object.create support is required to create null objects');
+ if (slots.length > 0) {
+ forEach(slots, function (slot) {
+ SLOT.set(O, slot, void undefined);
+ });
}
- var T = function T() {};
- T.prototype = proto;
- return new T();
+
+ return O; // step 6
};
diff --git a/node_modules/es-abstract/2018/ObjectDefineProperties.js b/node_modules/es-abstract/2018/ObjectDefineProperties.js
new file mode 100644
index 000000000..f096f1ede
--- /dev/null
+++ b/node_modules/es-abstract/2018/ObjectDefineProperties.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var Get = require('./Get');
+var ToObject = require('./ToObject');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+
+var forEach = require('../helpers/forEach');
+var getOwnPropertyDescriptor = require('gopd');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var $push = callBound('Array.prototype.push');
+
+// https://262.ecma-international.org/6.0/#sec-objectdefineproperties
+module.exports = function ObjectDefineProperties(O, Properties) {
+ var props = ToObject(Properties); // step 1
+ var keys = OwnPropertyKeys(props); // step 2
+ var descriptors = []; // step 3
+
+ forEach(keys, function (nextKey) { // step 4
+ var propDesc = ToPropertyDescriptor(getOwnPropertyDescriptor(props, nextKey)); // step 4.a
+ if (typeof propDesc !== 'undefined' && propDesc['[[Enumerable]]']) { // step 4.b
+ var descObj = Get(props, nextKey); // step 4.b.i
+ var desc = ToPropertyDescriptor(descObj); // step 4.b.ii
+ $push(descriptors, [nextKey, desc]); // step 4.b.iii
+ }
+ });
+
+ forEach(descriptors, function (pair) { // step 5
+ var P = pair[0]; // step 5.a
+ var desc = pair[1]; // step 5.b
+ desc = FromPropertyDescriptor(desc); // TODO: remove this once DefinePropertyOrThrow is fixed
+ DefinePropertyOrThrow(O, P, desc); // step 5.c
+ });
+
+ return O; // step 6
+};
diff --git a/node_modules/es-abstract/2018/OrdinaryDefineOwnProperty.js b/node_modules/es-abstract/2018/OrdinaryDefineOwnProperty.js
index 5d33aa6d6..34f029f7e 100644
--- a/node_modules/es-abstract/2018/OrdinaryDefineOwnProperty.js
+++ b/node_modules/es-abstract/2018/OrdinaryDefineOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
diff --git a/node_modules/es-abstract/2018/OrdinaryGetOwnProperty.js b/node_modules/es-abstract/2018/OrdinaryGetOwnProperty.js
index 3d11e9fad..fd8035acb 100644
--- a/node_modules/es-abstract/2018/OrdinaryGetOwnProperty.js
+++ b/node_modules/es-abstract/2018/OrdinaryGetOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('call-bind/callBound');
diff --git a/node_modules/es-abstract/2018/OrdinarySetPrototypeOf.js b/node_modules/es-abstract/2018/OrdinarySetPrototypeOf.js
index d0ff7a7c2..d2b72306c 100644
--- a/node_modules/es-abstract/2018/OrdinarySetPrototypeOf.js
+++ b/node_modules/es-abstract/2018/OrdinarySetPrototypeOf.js
@@ -16,15 +16,15 @@ module.exports = function OrdinarySetPrototypeOf(O, V) {
throw new $TypeError('Assertion failed: V must be Object or Null');
}
/*
- var extensible = IsExtensible(O);
- var current = OrdinaryGetPrototypeOf(O);
- if (SameValue(V, current)) {
- return true;
- }
- if (!extensible) {
- return false;
- }
- */
+ var extensible = IsExtensible(O);
+ var current = OrdinaryGetPrototypeOf(O);
+ if (SameValue(V, current)) {
+ return true;
+ }
+ if (!extensible) {
+ return false;
+ }
+ */
try {
$setProto(O, V);
} catch (e) {
@@ -32,22 +32,22 @@ module.exports = function OrdinarySetPrototypeOf(O, V) {
}
return OrdinaryGetPrototypeOf(O) === V;
/*
- var p = V;
- var done = false;
- while (!done) {
- if (p === null) {
- done = true;
- } else if (SameValue(p, O)) {
- return false;
- } else {
- if (wat) {
- done = true;
- } else {
- p = p.[[Prototype]];
- }
- }
- }
- O.[[Prototype]] = V;
- return true;
- */
+ var p = V;
+ var done = false;
+ while (!done) {
+ if (p === null) {
+ done = true;
+ } else if (SameValue(p, O)) {
+ return false;
+ } else {
+ if (wat) {
+ done = true;
+ } else {
+ p = p.[[Prototype]];
+ }
+ }
+ }
+ O.[[Prototype]] = V;
+ return true;
+ */
};
diff --git a/node_modules/es-abstract/2018/OrdinaryToPrimitive.js b/node_modules/es-abstract/2018/OrdinaryToPrimitive.js
new file mode 100644
index 000000000..e1dbe1427
--- /dev/null
+++ b/node_modules/es-abstract/2018/OrdinaryToPrimitive.js
@@ -0,0 +1,38 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+var inspect = require('object-inspect');
+
+// https://262.ecma-international.org/8.0/#sec-ordinarytoprimitive
+
+module.exports = function OrdinaryToPrimitive(O, hint) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (/* Type(hint) !== 'String' || */ hint !== 'string' && hint !== 'number') {
+ throw new $TypeError('Assertion failed: `hint` must be "string" or "number"');
+ }
+
+ var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
+
+ for (var i = 0; i < methodNames.length; i += 1) {
+ var name = methodNames[i];
+ var method = Get(O, name);
+ if (IsCallable(method)) {
+ var result = Call(method, O);
+ if (Type(result) !== 'Object') {
+ return result;
+ }
+ }
+ }
+
+ throw new $TypeError('No primitive value for ' + inspect(O));
+};
diff --git a/node_modules/es-abstract/2018/RawBytesToNumber.js b/node_modules/es-abstract/2018/RawBytesToNumber.js
new file mode 100644
index 000000000..5811dae40
--- /dev/null
+++ b/node_modules/es-abstract/2018/RawBytesToNumber.js
@@ -0,0 +1,145 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $pow = GetIntrinsic('%Math.pow%');
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $charAt = callBound('String.prototype.charAt');
+var $reverse = callBound('Array.prototype.reverse');
+var $slice = callBound('Array.prototype.slice');
+
+var hasOwnProperty = require('./HasOwnProperty');
+var IsArray = require('./IsArray');
+var Type = require('./Type');
+
+var every = require('../helpers/every');
+var isByteValue = require('../helpers/isByteValue');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/8.0/#table-50
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ Float32: 4,
+ Float64: 8
+};
+
+// https://262.ecma-international.org/8.0/#sec-rawbytestonumber
+
+module.exports = function RawBytesToNumber(type, rawBytes, isLittleEndian) {
+ if (typeof type !== 'string' || !hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (!IsArray(rawBytes) || !every(rawBytes, isByteValue)) {
+ throw new $TypeError('Assertion failed: `rawBytes` must be an Array of bytes');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var elementSize = TypeToSizes[type]; // step 1
+
+ if (rawBytes.length !== elementSize) {
+ // this assertion is not in the spec, but it'd be an editorial error if it were ever violated
+ throw new $RangeError('Assertion failed: `rawBytes` must have a length of ' + elementSize + ' for type ' + type);
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $slice(rawBytes, 0, elementSize);
+ if (!isLittleEndian) {
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $reverse(rawBytes); // step 2
+ }
+
+ /* eslint no-redeclare: 1 */
+ if (type === 'Float32') { // step 3
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary32 value.
+If value is an IEEE 754-2008 binary32 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = (rawBytes[3] & 0x80) >> 7; // first bit
+ var exponent = ((rawBytes[3] & 0x7F) << 1) // 7 bits from index 3
+ | ((rawBytes[2] & 0x80) >> 7); // 1 bit from index 2
+ var mantissa = ((rawBytes[2] & 0x7F) << 16) // 7 bits from index 2
+ | (rawBytes[1] << 8) // 8 bits from index 1
+ | rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign === 0 ? 0 : -0;
+ }
+ if (exponent === 0xFF && mantissa === 0) {
+ return sign === 0 ? Infinity : -Infinity;
+ }
+ if (exponent === 0xFF && mantissa !== 0) {
+ return NaN;
+ }
+
+ exponent -= 127; // subtract the bias
+
+ // return $pow(-1, sign) * mantissa / $pow(2, 23) * $pow(2, exponent);
+ // return $pow(-1, sign) * (mantissa + 0x1000000) * $pow(2, exponent - 23);
+ return $pow(-1, sign) * (1 + (mantissa / $pow(2, 23))) * $pow(2, exponent);
+ }
+
+ if (type === 'Float64') { // step 4
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary64 value.
+If value is an IEEE 754-2008 binary64 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = rawBytes[7] & 0x80 ? -1 : 1; // first bit
+ var exponent = ((rawBytes[7] & 0x7F) << 4) // 7 bits from index 7
+ | ((rawBytes[6] & 0xF0) >> 4); // 4 bits from index 6
+ var mantissa = ((rawBytes[6] & 0x0F) * 0x1000000000000) // 4 bits from index 6
+ + (rawBytes[5] * 0x10000000000) // 8 bits from index 5
+ + (rawBytes[4] * 0x100000000) // 8 bits from index 4
+ + (rawBytes[3] * 0x1000000) // 8 bits from index 3
+ + (rawBytes[2] * 0x10000) // 8 bits from index 2
+ + (rawBytes[1] * 0x100) // 8 bits from index 1
+ + rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign * 0;
+ }
+ if (exponent === 0x7FF && mantissa !== 0) {
+ return NaN;
+ }
+ if (exponent === 0x7FF && mantissa === 0) {
+ return sign * Infinity;
+ }
+
+ exponent -= 1023; // subtract the bias
+
+ return sign * (mantissa + 0x10000000000000) * $pow(2, exponent - 52);
+ }
+
+ // this is common to both branches
+ var intValue = 0;
+ for (var i = 0; i < rawBytes.length; i++) {
+ intValue |= rawBytes[i] << (8 * i);
+ }
+ /*
+ Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of an unsigned little-endian binary number.
+ */
+
+ if ($charAt(type, 0) !== 'U') { // steps 5-6
+ // Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of a binary little-endian 2's complement number of bit length elementSize × 8.
+ var bitLength = elementSize * 8;
+ if (bitLength < 32) {
+ intValue = (intValue << (32 - bitLength)) >> (32 - bitLength);
+ }
+ }
+
+ return intValue; // step 7
+};
diff --git a/node_modules/es-abstract/2018/Set.js b/node_modules/es-abstract/2018/Set.js
index ea49e813f..097149887 100644
--- a/node_modules/es-abstract/2018/Set.js
+++ b/node_modules/es-abstract/2018/Set.js
@@ -36,12 +36,12 @@ module.exports = function Set(O, P, V, Throw) {
throw new $TypeError('Attempted to assign to readonly property.');
}
return true;
- } else {
- try {
- O[P] = V; // eslint-disable-line no-param-reassign
- return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
- } catch (e) {
- return false;
- }
}
+ try {
+ O[P] = V; // eslint-disable-line no-param-reassign
+ return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
+ } catch (e) {
+ return false;
+ }
+
};
diff --git a/node_modules/es-abstract/2018/SetFunctionName.js b/node_modules/es-abstract/2018/SetFunctionName.js
index f59cb7b9e..03ec2227c 100644
--- a/node_modules/es-abstract/2018/SetFunctionName.js
+++ b/node_modules/es-abstract/2018/SetFunctionName.js
@@ -6,7 +6,7 @@ var has = require('has');
var $TypeError = GetIntrinsic('%TypeError%');
-var getSymbolDescription = require('../helpers/getSymbolDescription');
+var getSymbolDescription = require('get-symbol-description');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
var IsExtensible = require('./IsExtensible');
diff --git a/node_modules/es-abstract/2018/SetIntegrityLevel.js b/node_modules/es-abstract/2018/SetIntegrityLevel.js
index 1ac7d61e2..546f3e74f 100644
--- a/node_modules/es-abstract/2018/SetIntegrityLevel.js
+++ b/node_modules/es-abstract/2018/SetIntegrityLevel.js
@@ -4,9 +4,9 @@ var GetIntrinsic = require('get-intrinsic');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
-var $preventExtensions = GetIntrinsic('%Object.preventExtensions%');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $gOPD = require('gopd');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
var forEach = require('../helpers/forEach');
diff --git a/node_modules/es-abstract/2018/StringCreate.js b/node_modules/es-abstract/2018/StringCreate.js
index da0c0ea06..bd02820f7 100644
--- a/node_modules/es-abstract/2018/StringCreate.js
+++ b/node_modules/es-abstract/2018/StringCreate.js
@@ -20,7 +20,7 @@ module.exports = function StringCreate(value, prototype) {
}
var S = $Object(value);
- if (S !== $StringPrototype) {
+ if (prototype !== $StringPrototype) {
if (setProto) {
setProto(S, prototype);
} else {
diff --git a/node_modules/es-abstract/2018/TestIntegrityLevel.js b/node_modules/es-abstract/2018/TestIntegrityLevel.js
index cf1649c1b..7f95a6e1d 100644
--- a/node_modules/es-abstract/2018/TestIntegrityLevel.js
+++ b/node_modules/es-abstract/2018/TestIntegrityLevel.js
@@ -2,11 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var every = require('../helpers/every');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsExtensible = require('./IsExtensible');
@@ -26,7 +26,7 @@ module.exports = function TestIntegrityLevel(O, level) {
if (status) {
return false;
}
- var theKeys = $gOPN(O);
+ var theKeys = OwnPropertyKeys(O);
return theKeys.length === 0 || every(theKeys, function (k) {
var currentDesc = $gOPD(O, k);
if (typeof currentDesc !== 'undefined') {
diff --git a/node_modules/es-abstract/2018/ThrowCompletion.js b/node_modules/es-abstract/2018/ThrowCompletion.js
new file mode 100644
index 000000000..b7d388a35
--- /dev/null
+++ b/node_modules/es-abstract/2018/ThrowCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/9.0/#sec-throwcompletion
+
+module.exports = function ThrowCompletion(argument) {
+ return new CompletionRecord('throw', argument);
+};
diff --git a/node_modules/es-abstract/2018/ToNumber.js b/node_modules/es-abstract/2018/ToNumber.js
index e776bb2b7..95bdd9ecd 100644
--- a/node_modules/es-abstract/2018/ToNumber.js
+++ b/node_modules/es-abstract/2018/ToNumber.js
@@ -8,7 +8,7 @@ var $RegExp = GetIntrinsic('%RegExp%');
var $parseInteger = GetIntrinsic('%parseInt%');
var callBound = require('call-bind/callBound');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var isPrimitive = require('../helpers/isPrimitive');
var $strSlice = callBound('String.prototype.slice');
@@ -48,12 +48,12 @@ module.exports = function ToNumber(argument) {
return ToNumber($parseInteger($strSlice(value, 2), 8));
} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {
return NaN;
- } else {
- var trimmed = $trim(value);
- if (trimmed !== value) {
- return ToNumber(trimmed);
- }
}
+ var trimmed = $trim(value);
+ if (trimmed !== value) {
+ return ToNumber(trimmed);
+ }
+
}
return $Number(value);
};
diff --git a/node_modules/es-abstract/2018/ValidateAtomicAccess.js b/node_modules/es-abstract/2018/ValidateAtomicAccess.js
new file mode 100644
index 000000000..e1c51c776
--- /dev/null
+++ b/node_modules/es-abstract/2018/ValidateAtomicAccess.js
@@ -0,0 +1,36 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToIndex = require('./ToIndex');
+
+var isTypedArray = require('is-typed-array');
+var typedArrayLength = require('typed-array-length');
+
+// https://262.ecma-international.org/8.0/#sec-validateatomicaccess
+
+module.exports = function ValidateAtomicAccess(typedArray, requestIndex) {
+ if (!isTypedArray(typedArray)) {
+ throw new $TypeError('Assertion failed: `typedArray` must be a TypedArray'); // step 1
+ }
+
+ var accessIndex = ToIndex(requestIndex); // step 2
+
+ var length = typedArrayLength(typedArray); // step 3
+
+ /*
+ // this assertion can never be reached
+ if (!(accessIndex >= 0)) {
+ throw new $TypeError('Assertion failed: accessIndex >= 0'); // step 4
+ }
+ */
+
+ if (accessIndex >= length) {
+ throw new $RangeError('index out of range'); // step 5
+ }
+
+ return accessIndex; // step 6
+};
diff --git a/node_modules/es-abstract/2018/ValidateTypedArray.js b/node_modules/es-abstract/2018/ValidateTypedArray.js
new file mode 100644
index 000000000..83df3a81c
--- /dev/null
+++ b/node_modules/es-abstract/2018/ValidateTypedArray.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var $taSome = callBound('%TypedArray.prototype.some%', true);
+
+var Type = require('./Type');
+
+var isTypedArray = require('is-typed-array');
+
+// https://262.ecma-international.org/6.0/#sec-validatetypedarray
+
+module.exports = function ValidateTypedArray(O) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!isTypedArray(O)) {
+ throw new $TypeError('Assertion failed: O must be a TypedArray');
+ }
+
+ // without `.some` (like in node 0.10), there's no way to check buffer detachment, but also no way to be detached
+ if ($taSome) {
+ $taSome(O, function () { return true; });
+ }
+
+ return O.buffer;
+};
diff --git a/node_modules/es-abstract/2018/max.js b/node_modules/es-abstract/2018/max.js
new file mode 100644
index 000000000..b919d4e83
--- /dev/null
+++ b/node_modules/es-abstract/2018/max.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.max%');
diff --git a/node_modules/es-abstract/2018/min.js b/node_modules/es-abstract/2018/min.js
new file mode 100644
index 000000000..909de4b0e
--- /dev/null
+++ b/node_modules/es-abstract/2018/min.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.min%');
diff --git a/node_modules/es-abstract/2018/thisTimeValue.js b/node_modules/es-abstract/2018/thisTimeValue.js
index 12548fa4f..4687950f1 100644
--- a/node_modules/es-abstract/2018/thisTimeValue.js
+++ b/node_modules/es-abstract/2018/thisTimeValue.js
@@ -1,9 +1,9 @@
'use strict';
-var $DateValueOf = require('call-bind/callBound')('Date.prototype.valueOf');
+var $DateGetTime = require('call-bind/callBound')('Date.prototype.getTime');
// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-date-prototype-object
module.exports = function thisTimeValue(value) {
- return $DateValueOf(value);
+ return $DateGetTime(value);
};
diff --git a/node_modules/es-abstract/2019/AbstractRelationalComparison.js b/node_modules/es-abstract/2019/AbstractRelationalComparison.js
index 0dfed5ffe..7c6472f56 100644
--- a/node_modules/es-abstract/2019/AbstractRelationalComparison.js
+++ b/node_modules/es-abstract/2019/AbstractRelationalComparison.js
@@ -7,15 +7,14 @@ var $TypeError = GetIntrinsic('%TypeError%');
var $isNaN = require('../helpers/isNaN');
var $isFinite = require('../helpers/isFinite');
-var isPrefixOf = require('../helpers/isPrefixOf');
+var IsStringPrefix = require('./IsStringPrefix');
var ToNumber = require('./ToNumber');
var ToPrimitive = require('./ToPrimitive');
var Type = require('./Type');
-// https://262.ecma-international.org/5.1/#sec-11.8.5
+// https://262.ecma-international.org/9.0/#sec-abstract-relational-comparison
-// eslint-disable-next-line max-statements
module.exports = function AbstractRelationalComparison(x, y, LeftFirst) {
if (Type(LeftFirst) !== 'Boolean') {
throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean');
@@ -29,35 +28,34 @@ module.exports = function AbstractRelationalComparison(x, y, LeftFirst) {
py = ToPrimitive(y, $Number);
px = ToPrimitive(x, $Number);
}
- var bothStrings = Type(px) === 'String' && Type(py) === 'String';
- if (!bothStrings) {
- var nx = ToNumber(px);
- var ny = ToNumber(py);
- if ($isNaN(nx) || $isNaN(ny)) {
- return undefined;
- }
- if ($isFinite(nx) && $isFinite(ny) && nx === ny) {
- return false;
- }
- if (nx === Infinity) {
- return false;
- }
- if (ny === Infinity) {
- return true;
- }
- if (ny === -Infinity) {
+ if (Type(px) === 'String' && Type(py) === 'String') {
+ if (IsStringPrefix(py, px)) {
return false;
}
- if (nx === -Infinity) {
+ if (IsStringPrefix(px, py)) {
return true;
}
- return nx < ny; // by now, these are both nonzero, finite, and not equal
+ return px < py; // both strings, neither a prefix of the other. shortcut for steps 3 c-f
+ }
+ var nx = ToNumber(px);
+ var ny = ToNumber(py);
+ if ($isNaN(nx) || $isNaN(ny)) {
+ return undefined;
+ }
+ if ($isFinite(nx) && $isFinite(ny) && nx === ny) {
+ return false;
+ }
+ if (nx === Infinity) {
+ return false;
+ }
+ if (ny === Infinity) {
+ return true;
}
- if (isPrefixOf(py, px)) {
+ if (ny === -Infinity) {
return false;
}
- if (isPrefixOf(px, py)) {
+ if (nx === -Infinity) {
return true;
}
- return px < py; // both strings, neither a prefix of the other. shortcut for steps c-f
+ return nx < ny; // by now, these are both nonzero, finite, and not equal
};
diff --git a/node_modules/es-abstract/2019/ArrayCreate.js b/node_modules/es-abstract/2019/ArrayCreate.js
index 4d20e2e5e..cc890cafb 100644
--- a/node_modules/es-abstract/2019/ArrayCreate.js
+++ b/node_modules/es-abstract/2019/ArrayCreate.js
@@ -9,16 +9,17 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsInteger = require('./IsInteger');
+var hasProto = require('has-proto')();
+
var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || (
- // eslint-disable-next-line no-proto, no-negated-condition
- [].__proto__ !== $ArrayPrototype
- ? null
- : function (O, proto) {
+ hasProto
+ ? function (O, proto) {
O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
return O;
}
+ : null
);
// https://ecma-international.org/ecma-262/6.0/#sec-arraycreate
@@ -42,12 +43,12 @@ module.exports = function ArrayCreate(length) {
A.length = length;
}
/* step 10, the above as a shortcut for the below
- OrdinaryDefineOwnProperty(A, 'length', {
- '[[Configurable]]': false,
- '[[Enumerable]]': false,
- '[[Value]]': length,
- '[[Writable]]': true
- });
- */
+ OrdinaryDefineOwnProperty(A, 'length', {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': true
+ });
+ */
return A;
};
diff --git a/node_modules/es-abstract/2019/AsyncFromSyncIteratorContinuation.js b/node_modules/es-abstract/2019/AsyncFromSyncIteratorContinuation.js
new file mode 100644
index 000000000..c1cc7a111
--- /dev/null
+++ b/node_modules/es-abstract/2019/AsyncFromSyncIteratorContinuation.js
@@ -0,0 +1,45 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Promise = GetIntrinsic('%Promise%', true);
+
+var callBound = require('call-bind/callBound');
+
+var CreateIterResultObject = require('./CreateIterResultObject');
+var IteratorComplete = require('./IteratorComplete');
+var IteratorValue = require('./IteratorValue');
+var PromiseResolve = require('./PromiseResolve');
+var Type = require('./Type');
+
+var $then = callBound('Promise.prototype.then', true);
+
+// https://ecma-international.org/ecma-262/10.0/#sec-asyncfromsynciteratorcontinuation
+
+module.exports = function AsyncFromSyncIteratorContinuation(result) {
+ if (Type(result) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (arguments.length > 1) {
+ throw new $SyntaxError('although AsyncFromSyncIteratorContinuation should take a second argument, it is not used in this implementation');
+ }
+
+ if (!$Promise) {
+ throw new $SyntaxError('This environment does not support Promises.');
+ }
+
+ return new Promise(function (resolve) {
+ var done = IteratorComplete(result); // step 2
+ var value = IteratorValue(result); // step 4
+ var valueWrapper = PromiseResolve($Promise, value); // step 6
+
+ // eslint-disable-next-line no-shadow
+ var onFulfilled = function (value) { // steps 8-9
+ return CreateIterResultObject(value, done); // step 8.a
+ };
+ resolve($then(valueWrapper, onFulfilled)); // step 11
+ }); // step 12
+};
diff --git a/node_modules/es-abstract/2019/AsyncIteratorClose.js b/node_modules/es-abstract/2019/AsyncIteratorClose.js
new file mode 100644
index 000000000..eb72ef938
--- /dev/null
+++ b/node_modules/es-abstract/2019/AsyncIteratorClose.js
@@ -0,0 +1,62 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Promise = GetIntrinsic('%Promise%', true);
+
+var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
+var GetMethod = require('./GetMethod');
+var Type = require('./Type');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var callBound = require('call-bind/callBound');
+
+var $then = callBound('Promise.prototype.then', true);
+
+// https://262.ecma-international.org/9.0/#sec-asynciteratorclose
+
+module.exports = function AsyncIteratorClose(iteratorRecord, completion) {
+ assertRecord(Type, 'Iterator Record', 'iteratorRecord', iteratorRecord); // step 1
+
+ if (!(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a Completion Record instance'); // step 2
+ }
+
+ if (!$then) {
+ throw new $SyntaxError('This environment does not support Promises.');
+ }
+
+ var iterator = iteratorRecord['[[Iterator]]']; // step 3
+
+ return new $Promise(function (resolve) {
+ var ret = GetMethod(iterator, 'return'); // step 4
+
+ if (typeof ret === 'undefined') {
+ resolve(completion); // step 5
+ } else {
+ resolve($then(
+ new $Promise(function (resolve2) {
+ // process.exit(42);
+ resolve2(Call(ret, iterator, [])); // step 6
+ }),
+ function (innerResult) {
+ if (Type(innerResult) !== 'Object') {
+ throw new $TypeError('`innerResult` must be an Object'); // step 10
+ }
+ return completion;
+ },
+ function (e) {
+ if (completion.type() === 'throw') {
+ completion['?'](); // step 8
+ } else {
+ throw e; // step 9
+ }
+ }
+ ));
+ }
+ });
+};
diff --git a/node_modules/es-abstract/2019/CharacterRange.js b/node_modules/es-abstract/2019/CharacterRange.js
new file mode 100644
index 000000000..70e4b5235
--- /dev/null
+++ b/node_modules/es-abstract/2019/CharacterRange.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $charCodeAt = callBound('%String.prototype.charCodeAt%');
+var $push = callBound('%Array.prototype.push%');
+
+module.exports = function CharacterRange(A, B) {
+ if (A.length !== 1 || B.length !== 1) {
+ throw new $TypeError('Assertion failed: CharSets A and B contain exactly one character');
+ }
+
+ var a = A[0];
+ var b = B[0];
+
+ var i = $charCodeAt(a, 0);
+ var j = $charCodeAt(b, 0);
+
+ if (!(i <= j)) {
+ throw new $TypeError('Assertion failed: i is not <= j');
+ }
+
+ var arr = [];
+ for (var k = i; k <= j; k += 1) {
+ $push(arr, $fromCharCode(k));
+ }
+ return arr;
+};
diff --git a/node_modules/es-abstract/2019/CompletionRecord.js b/node_modules/es-abstract/2019/CompletionRecord.js
new file mode 100644
index 000000000..370a5677f
--- /dev/null
+++ b/node_modules/es-abstract/2019/CompletionRecord.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var SLOT = require('internal-slot');
+
+// https://262.ecma-international.org/7.0/#sec-completion-record-specification-type
+
+var CompletionRecord = function CompletionRecord(type, value) {
+ if (!(this instanceof CompletionRecord)) {
+ return new CompletionRecord(type, value);
+ }
+ if (type !== 'normal' && type !== 'break' && type !== 'continue' && type !== 'return' && type !== 'throw') {
+ throw new $SyntaxError('Assertion failed: `type` must be one of "normal", "break", "continue", "return", or "throw"');
+ }
+ SLOT.set(this, '[[Type]]', type);
+ SLOT.set(this, '[[Value]]', value);
+ // [[Target]] slot?
+};
+
+CompletionRecord.prototype.type = function Type() {
+ return SLOT.get(this, '[[Type]]');
+};
+
+CompletionRecord.prototype.value = function Value() {
+ return SLOT.get(this, '[[Value]]');
+};
+
+CompletionRecord.prototype['?'] = function ReturnIfAbrupt() {
+ var type = SLOT.get(this, '[[Type]]');
+ var value = SLOT.get(this, '[[Value]]');
+
+ if (type === 'normal') {
+ return value;
+ }
+ if (type === 'throw') {
+ throw value;
+ }
+ throw new $SyntaxError('Completion Record is not of type "normal" or "throw": other types not supported');
+};
+
+CompletionRecord.prototype['!'] = function assert() {
+ var type = SLOT.get(this, '[[Type]]');
+
+ if (type !== 'normal') {
+ throw new $SyntaxError('Assertion failed: Completion Record is not of type "normal"');
+ }
+ return SLOT.get(this, '[[Value]]');
+};
+
+module.exports = CompletionRecord;
diff --git a/node_modules/es-abstract/2019/CopyDataProperties.js b/node_modules/es-abstract/2019/CopyDataProperties.js
index b8f2802bb..c267c3723 100644
--- a/node_modules/es-abstract/2019/CopyDataProperties.js
+++ b/node_modules/es-abstract/2019/CopyDataProperties.js
@@ -55,8 +55,8 @@ module.exports = function CopyDataProperties(target, source, excludedItems) {
var enumerable = $isEnumerable(fromObj, nextKey) || (
// this is to handle string keys being non-enumerable in older engines
typeof source === 'string'
- && nextKey >= 0
- && IsInteger(ToNumber(nextKey))
+ && nextKey >= 0
+ && IsInteger(ToNumber(nextKey))
);
if (excluded === false && enumerable) {
var propValue = Get(fromObj, nextKey);
diff --git a/node_modules/es-abstract/2019/CreateAsyncFromSyncIterator.js b/node_modules/es-abstract/2019/CreateAsyncFromSyncIterator.js
new file mode 100644
index 000000000..dbdce9736
--- /dev/null
+++ b/node_modules/es-abstract/2019/CreateAsyncFromSyncIterator.js
@@ -0,0 +1,121 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var AsyncFromSyncIteratorContinuation = require('./AsyncFromSyncIteratorContinuation');
+var Call = require('./Call');
+var CreateIterResultObject = require('./CreateIterResultObject');
+var Get = require('./Get');
+var GetMethod = require('./GetMethod');
+var IteratorNext = require('./IteratorNext');
+var ObjectCreate = require('./ObjectCreate');
+var Type = require('./Type');
+
+var SLOT = require('internal-slot');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var $AsyncFromSyncIteratorPrototype = GetIntrinsic('%AsyncFromSyncIteratorPrototype%', true) || {
+ next: function next(value) {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var argsLength = arguments.length;
+
+ return new Promise(function (resolve) { // step 3
+ var syncIteratorRecord = SLOT.get(O, '[[SyncIteratorRecord]]'); // step 4
+ var result;
+ if (argsLength > 0) {
+ result = IteratorNext(syncIteratorRecord['[[Iterator]]'], value); // step 5.a
+ } else { // step 6
+ result = IteratorNext(syncIteratorRecord['[[Iterator]]']);// step 6.a
+ }
+ resolve(AsyncFromSyncIteratorContinuation(result)); // step 8
+ });
+ },
+ 'return': function () {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var valueIsPresent = arguments.length > 0;
+ var value = valueIsPresent ? arguments[0] : void undefined;
+
+ return new Promise(function (resolve, reject) { // step 3
+ var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4
+ var iteratorReturn = GetMethod(syncIterator, 'return'); // step 5
+
+ if (typeof iteratorReturn === 'undefined') { // step 7
+ var iterResult = CreateIterResultObject(value, true); // step 7.a
+ Call(resolve, undefined, [iterResult]); // step 7.b
+ return;
+ }
+ var result;
+ if (valueIsPresent) { // step 8
+ result = Call(iteratorReturn, syncIterator, [value]); // step 8.a
+ } else { // step 9
+ result = Call(iteratorReturn, syncIterator); // step 9.a
+ }
+ if (Type(result) !== 'Object') { // step 11
+ Call(reject, undefined, [new $TypeError('Iterator `return` method returned a non-object value.')]); // step 11.a
+ return;
+ }
+
+ resolve(AsyncFromSyncIteratorContinuation(result)); // step 12
+ });
+ },
+ 'throw': function () {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var valueIsPresent = arguments.length > 0;
+ var value = valueIsPresent ? arguments[0] : void undefined;
+
+ return new Promise(function (resolve, reject) { // step 3
+ var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4
+
+ var throwMethod = GetMethod(syncIterator, 'throw'); // step 5
+
+ if (typeof throwMethod === 'undefined') { // step 7
+ Call(reject, undefined, [value]); // step 7.a
+ return;
+ }
+
+ var result;
+ if (valueIsPresent) { // step 8
+ result = Call(throwMethod, syncIterator, [value]); // step 8.a
+ } else { // step 9
+ result = Call(throwMethod, syncIterator); // step 9.a
+ }
+ if (Type(result) !== 'Object') { // step 11
+ Call(reject, undefined, [new $TypeError('Iterator `throw` method returned a non-object value.')]); // step 11.a
+ return;
+ }
+
+ resolve(AsyncFromSyncIteratorContinuation(result/* , promiseCapability */)); // step 12
+ });
+ }
+};
+
+// https://ecma-international.org/ecma-262/10.0/#sec-createasyncfromsynciterator
+
+module.exports = function CreateAsyncFromSyncIterator(syncIteratorRecord) {
+ assertRecord(Type, 'Iterator Record', 'syncIteratorRecord', syncIteratorRecord);
+
+ // var asyncIterator = ObjectCreate(%AsyncFromSyncIteratorPrototype%, « [[SyncIteratorRecord]] »); // step 1
+ var asyncIterator = ObjectCreate($AsyncFromSyncIteratorPrototype);
+
+ SLOT.set(asyncIterator, '[[SyncIteratorRecord]]', syncIteratorRecord); // step 2
+
+ var nextMethod = Get(asyncIterator, 'next'); // step 3
+
+ return { // steps 3-4
+ '[[Iterator]]': asyncIterator,
+ '[[NextMethod]]': nextMethod,
+ '[[Done]]': false
+ };
+};
diff --git a/node_modules/es-abstract/2019/CreateDataProperty.js b/node_modules/es-abstract/2019/CreateDataProperty.js
index ff5ca3055..02c6cd1f8 100644
--- a/node_modules/es-abstract/2019/CreateDataProperty.js
+++ b/node_modules/es-abstract/2019/CreateDataProperty.js
@@ -25,8 +25,8 @@ module.exports = function CreateDataProperty(O, P, V) {
}
var oldDesc = OrdinaryGetOwnProperty(O, P);
var extensible = !oldDesc || IsExtensible(O);
- var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']);
- if (immutable || !extensible) {
+ var nonConfigurable = oldDesc && !oldDesc['[[Configurable]]'];
+ if (nonConfigurable || !extensible) {
return false;
}
return DefineOwnProperty(
diff --git a/node_modules/es-abstract/2019/DetachArrayBuffer.js b/node_modules/es-abstract/2019/DetachArrayBuffer.js
new file mode 100644
index 000000000..03284729b
--- /dev/null
+++ b/node_modules/es-abstract/2019/DetachArrayBuffer.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isArrayBuffer = require('is-array-buffer');
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+var MessageChannel;
+try {
+ // eslint-disable-next-line global-require
+ MessageChannel = require('worker_threads').MessageChannel;
+} catch (e) { /**/ }
+
+// https://262.ecma-international.org/9.0/#sec-detacharraybuffer
+
+/* globals postMessage */
+
+module.exports = function DetachArrayBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer) || isSharedArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot, and not a Shared Array Buffer');
+ }
+
+ // commented out since there's no way to set or access this key
+ // var key = arguments.length > 1 ? arguments[1] : void undefined;
+
+ // if (!SameValue(arrayBuffer[[ArrayBufferDetachKey]], key)) {
+ // throw new $TypeError('Assertion failed: `key` must be the value of the [[ArrayBufferDetachKey]] internal slot of `arrayBuffer`');
+ // }
+
+ if (typeof structuredClone === 'function') {
+ structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
+ } else if (typeof postMessage === 'function') {
+ postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
+ } else if (MessageChannel) {
+ (new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
+ } else {
+ throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
+ }
+ return null;
+};
diff --git a/node_modules/es-abstract/2019/EnumerableOwnPropertyNames.js b/node_modules/es-abstract/2019/EnumerableOwnPropertyNames.js
index 44171b9eb..8e3177b6a 100644
--- a/node_modules/es-abstract/2019/EnumerableOwnPropertyNames.js
+++ b/node_modules/es-abstract/2019/EnumerableOwnPropertyNames.js
@@ -19,7 +19,7 @@ var Type = require('./Type');
// https://262.ecma-international.org/8.0/#sec-enumerableownproperties
-module.exports = function EnumerableOwnProperties(O, kind) {
+module.exports = function EnumerableOwnPropertyNames(O, kind) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
diff --git a/node_modules/es-abstract/2019/FromPropertyDescriptor.js b/node_modules/es-abstract/2019/FromPropertyDescriptor.js
index 9a69a2605..e142ed582 100644
--- a/node_modules/es-abstract/2019/FromPropertyDescriptor.js
+++ b/node_modules/es-abstract/2019/FromPropertyDescriptor.js
@@ -1,36 +1,16 @@
'use strict';
var assertRecord = require('../helpers/assertRecord');
+var fromPropertyDescriptor = require('../helpers/fromPropertyDescriptor');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
module.exports = function FromPropertyDescriptor(Desc) {
- if (typeof Desc === 'undefined') {
- return Desc;
+ if (typeof Desc !== 'undefined') {
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
}
- assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
-
- var obj = {};
- if ('[[Value]]' in Desc) {
- obj.value = Desc['[[Value]]'];
- }
- if ('[[Writable]]' in Desc) {
- obj.writable = Desc['[[Writable]]'];
- }
- if ('[[Get]]' in Desc) {
- obj.get = Desc['[[Get]]'];
- }
- if ('[[Set]]' in Desc) {
- obj.set = Desc['[[Set]]'];
- }
- if ('[[Enumerable]]' in Desc) {
- obj.enumerable = Desc['[[Enumerable]]'];
- }
- if ('[[Configurable]]' in Desc) {
- obj.configurable = Desc['[[Configurable]]'];
- }
- return obj;
+ return fromPropertyDescriptor(Desc);
};
diff --git a/node_modules/es-abstract/2019/Get.js b/node_modules/es-abstract/2019/Get.js
index 681055a2f..297968643 100644
--- a/node_modules/es-abstract/2019/Get.js
+++ b/node_modules/es-abstract/2019/Get.js
@@ -9,12 +9,7 @@ var inspect = require('object-inspect');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
-/**
- * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
- * 1. Assert: Type(O) is Object.
- * 2. Assert: IsPropertyKey(P) is true.
- * 3. Return O.[[Get]](P, O).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
module.exports = function Get(O, P) {
// 7.3.1.1
diff --git a/node_modules/es-abstract/2019/GetGlobalObject.js b/node_modules/es-abstract/2019/GetGlobalObject.js
new file mode 100644
index 000000000..0541ede0c
--- /dev/null
+++ b/node_modules/es-abstract/2019/GetGlobalObject.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var getGlobal = require('globalthis/polyfill');
+
+// https://262.ecma-international.org/6.0/#sec-getglobalobject
+
+module.exports = function GetGlobalObject() {
+ return getGlobal();
+};
diff --git a/node_modules/es-abstract/2019/GetIterator.js b/node_modules/es-abstract/2019/GetIterator.js
index a2d3b16cb..892197a23 100644
--- a/node_modules/es-abstract/2019/GetIterator.js
+++ b/node_modules/es-abstract/2019/GetIterator.js
@@ -20,8 +20,7 @@ module.exports = function GetIterator(obj, method) {
{
AdvanceStringIndex: AdvanceStringIndex,
GetMethod: GetMethod,
- IsArray: IsArray,
- Type: Type
+ IsArray: IsArray
},
obj
);
diff --git a/node_modules/es-abstract/2019/GetMethod.js b/node_modules/es-abstract/2019/GetMethod.js
index 775d3fb95..d3775178e 100644
--- a/node_modules/es-abstract/2019/GetMethod.js
+++ b/node_modules/es-abstract/2019/GetMethod.js
@@ -8,15 +8,9 @@ var GetV = require('./GetV');
var IsCallable = require('./IsCallable');
var IsPropertyKey = require('./IsPropertyKey');
-/**
- * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let func be GetV(O, P).
- * 3. ReturnIfAbrupt(func).
- * 4. If func is either undefined or null, return undefined.
- * 5. If IsCallable(func) is false, throw a TypeError exception.
- * 6. Return func.
- */
+var debug = require('object-inspect');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getmethod
module.exports = function GetMethod(O, P) {
// 7.3.9.1
@@ -34,7 +28,7 @@ module.exports = function GetMethod(O, P) {
// 7.3.9.5
if (!IsCallable(func)) {
- throw new $TypeError(P + 'is not a function');
+ throw new $TypeError(P + ' is not a function: ' + debug(func));
}
// 7.3.9.6
diff --git a/node_modules/es-abstract/2019/GetOwnPropertyKeys.js b/node_modules/es-abstract/2019/GetOwnPropertyKeys.js
index b8f4167f7..40c0b367f 100644
--- a/node_modules/es-abstract/2019/GetOwnPropertyKeys.js
+++ b/node_modules/es-abstract/2019/GetOwnPropertyKeys.js
@@ -6,8 +6,8 @@ var hasSymbols = require('has-symbols')();
var $TypeError = GetIntrinsic('%TypeError%');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
-var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
+var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%', true);
var keys = require('object-keys');
var esType = require('./Type');
diff --git a/node_modules/es-abstract/2019/GetPrototypeFromConstructor.js b/node_modules/es-abstract/2019/GetPrototypeFromConstructor.js
index 5f369cad8..25ee12f35 100644
--- a/node_modules/es-abstract/2019/GetPrototypeFromConstructor.js
+++ b/node_modules/es-abstract/2019/GetPrototypeFromConstructor.js
@@ -4,6 +4,7 @@ var GetIntrinsic = require('get-intrinsic');
var $Function = GetIntrinsic('%Function%');
var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
var Get = require('./Get');
var IsConstructor = require('./IsConstructor');
@@ -20,7 +21,7 @@ module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefa
if (Type(proto) !== 'Object') {
if (!(constructor instanceof $Function)) {
// ignore other realms, for now
- throw new $TypeError('cross-realm constructors not currently supported');
+ throw new $SyntaxError('cross-realm constructors not currently supported');
}
proto = intrinsic;
}
diff --git a/node_modules/es-abstract/2019/GetSubstitution.js b/node_modules/es-abstract/2019/GetSubstitution.js
index a5a7a1bee..96bdcaafe 100644
--- a/node_modules/es-abstract/2019/GetSubstitution.js
+++ b/node_modules/es-abstract/2019/GetSubstitution.js
@@ -5,7 +5,7 @@ var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('call-bind/callBound');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var every = require('../helpers/every');
var $charAt = callBound('String.prototype.charAt');
diff --git a/node_modules/es-abstract/2019/GetV.js b/node_modules/es-abstract/2019/GetV.js
index 2d8cc8246..2dcddb351 100644
--- a/node_modules/es-abstract/2019/GetV.js
+++ b/node_modules/es-abstract/2019/GetV.js
@@ -7,13 +7,7 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var ToObject = require('./ToObject');
-/**
- * 7.3.2 GetV (V, P)
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let O be ToObject(V).
- * 3. ReturnIfAbrupt(O).
- * 4. Return O.[[Get]](P, V).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-getv
module.exports = function GetV(V, P) {
// 7.3.2.1
diff --git a/node_modules/es-abstract/2019/IsArray.js b/node_modules/es-abstract/2019/IsArray.js
index f933cec03..600ffa002 100644
--- a/node_modules/es-abstract/2019/IsArray.js
+++ b/node_modules/es-abstract/2019/IsArray.js
@@ -1,14 +1,4 @@
'use strict';
-var GetIntrinsic = require('get-intrinsic');
-
-var $Array = GetIntrinsic('%Array%');
-
-// eslint-disable-next-line global-require
-var toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');
-
// https://ecma-international.org/ecma-262/6.0/#sec-isarray
-
-module.exports = $Array.isArray || function IsArray(argument) {
- return toStr(argument) === '[object Array]';
-};
+module.exports = require('../helpers/IsArray');
diff --git a/node_modules/es-abstract/2019/IsCompatiblePropertyDescriptor.js b/node_modules/es-abstract/2019/IsCompatiblePropertyDescriptor.js
new file mode 100644
index 000000000..8bdaf3eb4
--- /dev/null
+++ b/node_modules/es-abstract/2019/IsCompatiblePropertyDescriptor.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
+
+// https://262.ecma-international.org/6.0/#sec-iscompatiblepropertydescriptor
+
+module.exports = function IsCompatiblePropertyDescriptor(Extensible, Desc, Current) {
+ return ValidateAndApplyPropertyDescriptor(undefined, undefined, Extensible, Desc, Current);
+};
diff --git a/node_modules/es-abstract/2019/IsDetachedBuffer.js b/node_modules/es-abstract/2019/IsDetachedBuffer.js
new file mode 100644
index 000000000..4b373e9ab
--- /dev/null
+++ b/node_modules/es-abstract/2019/IsDetachedBuffer.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $byteLength = callBound('%ArrayBuffer.prototype.byteLength%', true)
+ || function byteLength(ab) { return ab.byteLength; }; // in node < 0.11, byteLength is an own nonconfigurable property
+
+var isArrayBuffer = require('is-array-buffer');
+
+var availableTypedArrays = require('available-typed-arrays')();
+
+// https://262.ecma-international.org/6.0/#sec-isdetachedbuffer
+
+module.exports = function IsDetachedBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
+ }
+ if ($byteLength(arrayBuffer) === 0) {
+ try {
+ new global[availableTypedArrays[0]](arrayBuffer); // eslint-disable-line no-new
+ } catch (error) {
+ return error.name === 'TypeError';
+ }
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2019/IsExtensible.js b/node_modules/es-abstract/2019/IsExtensible.js
index 9df5b80b1..d6e363840 100644
--- a/node_modules/es-abstract/2019/IsExtensible.js
+++ b/node_modules/es-abstract/2019/IsExtensible.js
@@ -2,13 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $Object = GetIntrinsic('%Object%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $isExtensible = GetIntrinsic('%Object.isExtensible%', true);
var isPrimitive = require('../helpers/isPrimitive');
-var $preventExtensions = $Object.preventExtensions;
-var $isExtensible = $Object.isExtensible;
-
// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o
module.exports = $preventExtensions
diff --git a/node_modules/es-abstract/2019/IsSharedArrayBuffer.js b/node_modules/es-abstract/2019/IsSharedArrayBuffer.js
new file mode 100644
index 000000000..8e96e33f3
--- /dev/null
+++ b/node_modules/es-abstract/2019/IsSharedArrayBuffer.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+// https://262.ecma-international.org/8.0/#sec-issharedarraybuffer
+
+module.exports = function IsSharedArrayBuffer(obj) {
+ if (Type(obj) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ return isSharedArrayBuffer(obj);
+};
diff --git a/node_modules/es-abstract/2019/IteratorClose.js b/node_modules/es-abstract/2019/IteratorClose.js
index dd1118df7..f703ea632 100644
--- a/node_modules/es-abstract/2019/IteratorClose.js
+++ b/node_modules/es-abstract/2019/IteratorClose.js
@@ -5,6 +5,7 @@ var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
var GetMethod = require('./GetMethod');
var IsCallable = require('./IsCallable');
var Type = require('./Type');
@@ -15,10 +16,10 @@ module.exports = function IteratorClose(iterator, completion) {
if (Type(iterator) !== 'Object') {
throw new $TypeError('Assertion failed: Type(iterator) is not Object');
}
- if (!IsCallable(completion)) {
- throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record');
+ if (!IsCallable(completion) && !(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a thunk representing a Completion Record, nor a Completion Record instance');
}
- var completionThunk = completion;
+ var completionThunk = completion instanceof CompletionRecord ? function () { return completion['?'](); } : completion;
var iteratorReturn = GetMethod(iterator, 'return');
diff --git a/node_modules/es-abstract/2019/NormalCompletion.js b/node_modules/es-abstract/2019/NormalCompletion.js
new file mode 100644
index 000000000..1e429dd65
--- /dev/null
+++ b/node_modules/es-abstract/2019/NormalCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/6.0/#sec-normalcompletion
+
+module.exports = function NormalCompletion(value) {
+ return new CompletionRecord('normal', value);
+};
diff --git a/node_modules/es-abstract/2019/NumberToRawBytes.js b/node_modules/es-abstract/2019/NumberToRawBytes.js
new file mode 100644
index 000000000..b26cd22fd
--- /dev/null
+++ b/node_modules/es-abstract/2019/NumberToRawBytes.js
@@ -0,0 +1,198 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $floor = GetIntrinsic('%Math.floor%');
+var $log = GetIntrinsic('%Math.log%');
+var $log2E = GetIntrinsic('%Math.LOG2E%');
+var $log2 = GetIntrinsic('%Math.log2%', true) || function log2(x) {
+ return $log(x) * $log2E;
+};
+var $parseInt = GetIntrinsic('%parseInt%');
+var $pow = GetIntrinsic('%Math.pow%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $reverse = callBound('Array.prototype.reverse');
+var $numberToString = callBound('Number.prototype.toString');
+var $strSlice = callBound('String.prototype.slice');
+
+var abs = require('./abs');
+var hasOwnProperty = require('./HasOwnProperty');
+var ToInt16 = require('./ToInt16');
+var ToInt32 = require('./ToInt32');
+var ToInt8 = require('./ToInt8');
+var ToUint16 = require('./ToUint16');
+var ToUint32 = require('./ToUint32');
+var ToUint8 = require('./ToUint8');
+var ToUint8Clamp = require('./ToUint8Clamp');
+var Type = require('./Type');
+
+var isNaN = require('../helpers/isNaN');
+var isFinite = require('../helpers/isFinite');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/8.0/#table-50
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ Float32: 4,
+ Float64: 8
+};
+
+var TypeToAO = {
+ __proto__: null,
+ Int8: ToInt8,
+ Uint8: ToUint8,
+ Uint8C: ToUint8Clamp,
+ Int16: ToInt16,
+ Uint16: ToUint16,
+ Int32: ToInt32,
+ Uint32: ToUint32
+};
+
+// https://262.ecma-international.org/8.0/#sec-numbertorawbytes
+
+module.exports = function NumberToRawBytes(type, value, isLittleEndian) {
+ if (typeof type !== 'string' || !hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (Type(value) !== 'Number') {
+ throw new $TypeError('Assertion failed: `value` must be a Number');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var rawBytes = [];
+ var exponent;
+
+ if (type === 'Float32') { // step 1
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 192, 127] : [127, 192, 0, 0]; // hardcoded
+ }
+
+ var leastSig;
+
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, leastSig] : [leastSig, 0, 0, 0];
+ }
+
+ if (!isFinite(value)) {
+ leastSig = value < 0 ? 255 : 127;
+ return isLittleEndian ? [0, 0, 128, leastSig] : [leastSig, 128, 0, 0];
+ }
+
+ var sign = value < 0 ? 1 : 0;
+ value = abs(value); // eslint-disable-line no-param-reassign
+
+ exponent = 0;
+ while (value >= 2) {
+ exponent += 1;
+ value /= 2; // eslint-disable-line no-param-reassign
+ }
+
+ while (value < 1) {
+ exponent -= 1;
+ value *= 2; // eslint-disable-line no-param-reassign
+ }
+
+ var mantissa = value - 1;
+ mantissa *= $pow(2, 23);
+ mantissa = $floor(mantissa);
+
+ exponent += 127;
+ exponent = exponent << 23;
+
+ var result = sign << 31;
+ result |= exponent;
+ result |= mantissa;
+
+ var byte0 = result & 255;
+ result = result >> 8;
+ var byte1 = result & 255;
+ result = result >> 8;
+ var byte2 = result & 255;
+ result = result >> 8;
+ var byte3 = result & 255;
+
+ if (isLittleEndian) {
+ return [byte0, byte1, byte2, byte3];
+ }
+ return [byte3, byte2, byte1, byte0];
+ } else if (type === 'Float64') { // step 2
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 0, leastSig] : [leastSig, 0, 0, 0, 0, 0, 0, 0];
+ }
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 248, 127] : [127, 248, 0, 0, 0, 0, 0, 0];
+ }
+ if (!isFinite(value)) {
+ var infBytes = value < 0 ? [0, 0, 0, 0, 0, 0, 240, 255] : [0, 0, 0, 0, 0, 0, 240, 127];
+ return isLittleEndian ? infBytes : $reverse(infBytes);
+ }
+
+ var isNegative = value < 0;
+ if (isNegative) { value = -value; } // eslint-disable-line no-param-reassign
+
+ exponent = $floor($log2(value));
+ var significand = (value / $pow(2, exponent)) - 1;
+
+ var bitString = '';
+ for (var i = 0; i < 52; i++) {
+ significand *= 2;
+ if (significand >= 1) {
+ bitString += '1';
+ significand -= 1;
+ } else {
+ bitString += '0';
+ }
+ }
+
+ exponent += 1023;
+ var exponentBits = $numberToString(exponent, 2);
+ while (exponentBits.length < 11) { exponentBits = '0' + exponentBits; }
+
+ var fullBitString = (isNegative ? '1' : '0') + exponentBits + bitString;
+ while (fullBitString.length < 64) { fullBitString = '0' + fullBitString; }
+
+ for (i = 0; i < 8; i++) {
+ rawBytes[i] = $parseInt($strSlice(fullBitString, i * 8, (i + 1) * 8), 2);
+ }
+
+ return isLittleEndian ? $reverse(rawBytes) : rawBytes;
+ } // step 3
+
+ var n = TypeToSizes[type]; // step 3.a
+
+ var convOp = TypeToAO[type]; // step 3.b
+
+ var intValue = convOp(value); // step 3.c
+
+ /*
+ if (intValue >= 0) { // step 3.d
+ // Let rawBytes be a List containing the n-byte binary encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ } else { // step 3.e
+ // Let rawBytes be a List containing the n-byte binary 2's complement encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ }
+ */
+ if (intValue < 0) {
+ intValue = intValue >>> 0;
+ }
+ for (i = 0; i < n; i++) {
+ rawBytes[isLittleEndian ? i : n - 1 - i] = intValue & 0xff;
+ intValue = intValue >> 8;
+ }
+
+ return rawBytes; // step 4
+};
diff --git a/node_modules/es-abstract/2019/ObjectCreate.js b/node_modules/es-abstract/2019/ObjectCreate.js
index 2851a646d..1f4bb16af 100644
--- a/node_modules/es-abstract/2019/ObjectCreate.js
+++ b/node_modules/es-abstract/2019/ObjectCreate.js
@@ -6,9 +6,14 @@ var $ObjectCreate = GetIntrinsic('%Object.create%', true);
var $TypeError = GetIntrinsic('%TypeError%');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var IsArray = require('./IsArray');
var Type = require('./Type');
-var hasProto = !({ __proto__: null } instanceof Object);
+var forEach = require('../helpers/forEach');
+
+var SLOT = require('internal-slot');
+
+var hasProto = require('has-proto')();
// https://ecma-international.org/ecma-262/6.0/#sec-objectcreate
@@ -16,22 +21,30 @@ module.exports = function ObjectCreate(proto, internalSlotsList) {
if (proto !== null && Type(proto) !== 'Object') {
throw new $TypeError('Assertion failed: `proto` must be null or an object');
}
- var slots = arguments.length < 2 ? [] : internalSlotsList;
- if (slots.length > 0) {
- throw new $SyntaxError('es-abstract does not yet support internal slots');
+ var slots = arguments.length < 2 ? [] : internalSlotsList; // step 1
+ if (arguments.length >= 2 && !IsArray(slots)) {
+ throw new $TypeError('Assertion failed: `internalSlotsList` must be an Array');
}
+ var O;
if ($ObjectCreate) {
- return $ObjectCreate(proto);
- }
- if (hasProto) {
- return { __proto__: proto };
+ O = $ObjectCreate(proto);
+ } else if (hasProto) {
+ O = { __proto__: proto };
+ } else {
+ if (proto === null) {
+ throw new $SyntaxError('native Object.create support is required to create null objects');
+ }
+ var T = function T() {};
+ T.prototype = proto;
+ O = new T();
}
- if (proto === null) {
- throw new $SyntaxError('native Object.create support is required to create null objects');
+ if (slots.length > 0) {
+ forEach(slots, function (slot) {
+ SLOT.set(O, slot, void undefined);
+ });
}
- var T = function T() {};
- T.prototype = proto;
- return new T();
+
+ return O; // step 6
};
diff --git a/node_modules/es-abstract/2019/ObjectDefineProperties.js b/node_modules/es-abstract/2019/ObjectDefineProperties.js
new file mode 100644
index 000000000..f096f1ede
--- /dev/null
+++ b/node_modules/es-abstract/2019/ObjectDefineProperties.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var Get = require('./Get');
+var ToObject = require('./ToObject');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+
+var forEach = require('../helpers/forEach');
+var getOwnPropertyDescriptor = require('gopd');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var $push = callBound('Array.prototype.push');
+
+// https://262.ecma-international.org/6.0/#sec-objectdefineproperties
+module.exports = function ObjectDefineProperties(O, Properties) {
+ var props = ToObject(Properties); // step 1
+ var keys = OwnPropertyKeys(props); // step 2
+ var descriptors = []; // step 3
+
+ forEach(keys, function (nextKey) { // step 4
+ var propDesc = ToPropertyDescriptor(getOwnPropertyDescriptor(props, nextKey)); // step 4.a
+ if (typeof propDesc !== 'undefined' && propDesc['[[Enumerable]]']) { // step 4.b
+ var descObj = Get(props, nextKey); // step 4.b.i
+ var desc = ToPropertyDescriptor(descObj); // step 4.b.ii
+ $push(descriptors, [nextKey, desc]); // step 4.b.iii
+ }
+ });
+
+ forEach(descriptors, function (pair) { // step 5
+ var P = pair[0]; // step 5.a
+ var desc = pair[1]; // step 5.b
+ desc = FromPropertyDescriptor(desc); // TODO: remove this once DefinePropertyOrThrow is fixed
+ DefinePropertyOrThrow(O, P, desc); // step 5.c
+ });
+
+ return O; // step 6
+};
diff --git a/node_modules/es-abstract/2019/OrdinaryDefineOwnProperty.js b/node_modules/es-abstract/2019/OrdinaryDefineOwnProperty.js
index 5d33aa6d6..34f029f7e 100644
--- a/node_modules/es-abstract/2019/OrdinaryDefineOwnProperty.js
+++ b/node_modules/es-abstract/2019/OrdinaryDefineOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
diff --git a/node_modules/es-abstract/2019/OrdinaryGetOwnProperty.js b/node_modules/es-abstract/2019/OrdinaryGetOwnProperty.js
index 3d11e9fad..fd8035acb 100644
--- a/node_modules/es-abstract/2019/OrdinaryGetOwnProperty.js
+++ b/node_modules/es-abstract/2019/OrdinaryGetOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('call-bind/callBound');
diff --git a/node_modules/es-abstract/2019/OrdinarySetPrototypeOf.js b/node_modules/es-abstract/2019/OrdinarySetPrototypeOf.js
index d0ff7a7c2..d2b72306c 100644
--- a/node_modules/es-abstract/2019/OrdinarySetPrototypeOf.js
+++ b/node_modules/es-abstract/2019/OrdinarySetPrototypeOf.js
@@ -16,15 +16,15 @@ module.exports = function OrdinarySetPrototypeOf(O, V) {
throw new $TypeError('Assertion failed: V must be Object or Null');
}
/*
- var extensible = IsExtensible(O);
- var current = OrdinaryGetPrototypeOf(O);
- if (SameValue(V, current)) {
- return true;
- }
- if (!extensible) {
- return false;
- }
- */
+ var extensible = IsExtensible(O);
+ var current = OrdinaryGetPrototypeOf(O);
+ if (SameValue(V, current)) {
+ return true;
+ }
+ if (!extensible) {
+ return false;
+ }
+ */
try {
$setProto(O, V);
} catch (e) {
@@ -32,22 +32,22 @@ module.exports = function OrdinarySetPrototypeOf(O, V) {
}
return OrdinaryGetPrototypeOf(O) === V;
/*
- var p = V;
- var done = false;
- while (!done) {
- if (p === null) {
- done = true;
- } else if (SameValue(p, O)) {
- return false;
- } else {
- if (wat) {
- done = true;
- } else {
- p = p.[[Prototype]];
- }
- }
- }
- O.[[Prototype]] = V;
- return true;
- */
+ var p = V;
+ var done = false;
+ while (!done) {
+ if (p === null) {
+ done = true;
+ } else if (SameValue(p, O)) {
+ return false;
+ } else {
+ if (wat) {
+ done = true;
+ } else {
+ p = p.[[Prototype]];
+ }
+ }
+ }
+ O.[[Prototype]] = V;
+ return true;
+ */
};
diff --git a/node_modules/es-abstract/2019/OrdinaryToPrimitive.js b/node_modules/es-abstract/2019/OrdinaryToPrimitive.js
new file mode 100644
index 000000000..e1dbe1427
--- /dev/null
+++ b/node_modules/es-abstract/2019/OrdinaryToPrimitive.js
@@ -0,0 +1,38 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+var inspect = require('object-inspect');
+
+// https://262.ecma-international.org/8.0/#sec-ordinarytoprimitive
+
+module.exports = function OrdinaryToPrimitive(O, hint) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (/* Type(hint) !== 'String' || */ hint !== 'string' && hint !== 'number') {
+ throw new $TypeError('Assertion failed: `hint` must be "string" or "number"');
+ }
+
+ var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
+
+ for (var i = 0; i < methodNames.length; i += 1) {
+ var name = methodNames[i];
+ var method = Get(O, name);
+ if (IsCallable(method)) {
+ var result = Call(method, O);
+ if (Type(result) !== 'Object') {
+ return result;
+ }
+ }
+ }
+
+ throw new $TypeError('No primitive value for ' + inspect(O));
+};
diff --git a/node_modules/es-abstract/2019/RawBytesToNumber.js b/node_modules/es-abstract/2019/RawBytesToNumber.js
new file mode 100644
index 000000000..5811dae40
--- /dev/null
+++ b/node_modules/es-abstract/2019/RawBytesToNumber.js
@@ -0,0 +1,145 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $pow = GetIntrinsic('%Math.pow%');
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $charAt = callBound('String.prototype.charAt');
+var $reverse = callBound('Array.prototype.reverse');
+var $slice = callBound('Array.prototype.slice');
+
+var hasOwnProperty = require('./HasOwnProperty');
+var IsArray = require('./IsArray');
+var Type = require('./Type');
+
+var every = require('../helpers/every');
+var isByteValue = require('../helpers/isByteValue');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/8.0/#table-50
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ Float32: 4,
+ Float64: 8
+};
+
+// https://262.ecma-international.org/8.0/#sec-rawbytestonumber
+
+module.exports = function RawBytesToNumber(type, rawBytes, isLittleEndian) {
+ if (typeof type !== 'string' || !hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (!IsArray(rawBytes) || !every(rawBytes, isByteValue)) {
+ throw new $TypeError('Assertion failed: `rawBytes` must be an Array of bytes');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var elementSize = TypeToSizes[type]; // step 1
+
+ if (rawBytes.length !== elementSize) {
+ // this assertion is not in the spec, but it'd be an editorial error if it were ever violated
+ throw new $RangeError('Assertion failed: `rawBytes` must have a length of ' + elementSize + ' for type ' + type);
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $slice(rawBytes, 0, elementSize);
+ if (!isLittleEndian) {
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $reverse(rawBytes); // step 2
+ }
+
+ /* eslint no-redeclare: 1 */
+ if (type === 'Float32') { // step 3
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary32 value.
+If value is an IEEE 754-2008 binary32 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = (rawBytes[3] & 0x80) >> 7; // first bit
+ var exponent = ((rawBytes[3] & 0x7F) << 1) // 7 bits from index 3
+ | ((rawBytes[2] & 0x80) >> 7); // 1 bit from index 2
+ var mantissa = ((rawBytes[2] & 0x7F) << 16) // 7 bits from index 2
+ | (rawBytes[1] << 8) // 8 bits from index 1
+ | rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign === 0 ? 0 : -0;
+ }
+ if (exponent === 0xFF && mantissa === 0) {
+ return sign === 0 ? Infinity : -Infinity;
+ }
+ if (exponent === 0xFF && mantissa !== 0) {
+ return NaN;
+ }
+
+ exponent -= 127; // subtract the bias
+
+ // return $pow(-1, sign) * mantissa / $pow(2, 23) * $pow(2, exponent);
+ // return $pow(-1, sign) * (mantissa + 0x1000000) * $pow(2, exponent - 23);
+ return $pow(-1, sign) * (1 + (mantissa / $pow(2, 23))) * $pow(2, exponent);
+ }
+
+ if (type === 'Float64') { // step 4
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary64 value.
+If value is an IEEE 754-2008 binary64 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = rawBytes[7] & 0x80 ? -1 : 1; // first bit
+ var exponent = ((rawBytes[7] & 0x7F) << 4) // 7 bits from index 7
+ | ((rawBytes[6] & 0xF0) >> 4); // 4 bits from index 6
+ var mantissa = ((rawBytes[6] & 0x0F) * 0x1000000000000) // 4 bits from index 6
+ + (rawBytes[5] * 0x10000000000) // 8 bits from index 5
+ + (rawBytes[4] * 0x100000000) // 8 bits from index 4
+ + (rawBytes[3] * 0x1000000) // 8 bits from index 3
+ + (rawBytes[2] * 0x10000) // 8 bits from index 2
+ + (rawBytes[1] * 0x100) // 8 bits from index 1
+ + rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign * 0;
+ }
+ if (exponent === 0x7FF && mantissa !== 0) {
+ return NaN;
+ }
+ if (exponent === 0x7FF && mantissa === 0) {
+ return sign * Infinity;
+ }
+
+ exponent -= 1023; // subtract the bias
+
+ return sign * (mantissa + 0x10000000000000) * $pow(2, exponent - 52);
+ }
+
+ // this is common to both branches
+ var intValue = 0;
+ for (var i = 0; i < rawBytes.length; i++) {
+ intValue |= rawBytes[i] << (8 * i);
+ }
+ /*
+ Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of an unsigned little-endian binary number.
+ */
+
+ if ($charAt(type, 0) !== 'U') { // steps 5-6
+ // Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of a binary little-endian 2's complement number of bit length elementSize × 8.
+ var bitLength = elementSize * 8;
+ if (bitLength < 32) {
+ intValue = (intValue << (32 - bitLength)) >> (32 - bitLength);
+ }
+ }
+
+ return intValue; // step 7
+};
diff --git a/node_modules/es-abstract/2019/Set.js b/node_modules/es-abstract/2019/Set.js
index ea49e813f..097149887 100644
--- a/node_modules/es-abstract/2019/Set.js
+++ b/node_modules/es-abstract/2019/Set.js
@@ -36,12 +36,12 @@ module.exports = function Set(O, P, V, Throw) {
throw new $TypeError('Attempted to assign to readonly property.');
}
return true;
- } else {
- try {
- O[P] = V; // eslint-disable-line no-param-reassign
- return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
- } catch (e) {
- return false;
- }
}
+ try {
+ O[P] = V; // eslint-disable-line no-param-reassign
+ return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
+ } catch (e) {
+ return false;
+ }
+
};
diff --git a/node_modules/es-abstract/2019/SetFunctionName.js b/node_modules/es-abstract/2019/SetFunctionName.js
index f59cb7b9e..03ec2227c 100644
--- a/node_modules/es-abstract/2019/SetFunctionName.js
+++ b/node_modules/es-abstract/2019/SetFunctionName.js
@@ -6,7 +6,7 @@ var has = require('has');
var $TypeError = GetIntrinsic('%TypeError%');
-var getSymbolDescription = require('../helpers/getSymbolDescription');
+var getSymbolDescription = require('get-symbol-description');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
var IsExtensible = require('./IsExtensible');
diff --git a/node_modules/es-abstract/2019/SetIntegrityLevel.js b/node_modules/es-abstract/2019/SetIntegrityLevel.js
index 1ac7d61e2..546f3e74f 100644
--- a/node_modules/es-abstract/2019/SetIntegrityLevel.js
+++ b/node_modules/es-abstract/2019/SetIntegrityLevel.js
@@ -4,9 +4,9 @@ var GetIntrinsic = require('get-intrinsic');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
-var $preventExtensions = GetIntrinsic('%Object.preventExtensions%');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $gOPD = require('gopd');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
var forEach = require('../helpers/forEach');
diff --git a/node_modules/es-abstract/2019/StringCreate.js b/node_modules/es-abstract/2019/StringCreate.js
index da0c0ea06..bd02820f7 100644
--- a/node_modules/es-abstract/2019/StringCreate.js
+++ b/node_modules/es-abstract/2019/StringCreate.js
@@ -20,7 +20,7 @@ module.exports = function StringCreate(value, prototype) {
}
var S = $Object(value);
- if (S !== $StringPrototype) {
+ if (prototype !== $StringPrototype) {
if (setProto) {
setProto(S, prototype);
} else {
diff --git a/node_modules/es-abstract/2019/TestIntegrityLevel.js b/node_modules/es-abstract/2019/TestIntegrityLevel.js
index cf1649c1b..7f95a6e1d 100644
--- a/node_modules/es-abstract/2019/TestIntegrityLevel.js
+++ b/node_modules/es-abstract/2019/TestIntegrityLevel.js
@@ -2,11 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var every = require('../helpers/every');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsExtensible = require('./IsExtensible');
@@ -26,7 +26,7 @@ module.exports = function TestIntegrityLevel(O, level) {
if (status) {
return false;
}
- var theKeys = $gOPN(O);
+ var theKeys = OwnPropertyKeys(O);
return theKeys.length === 0 || every(theKeys, function (k) {
var currentDesc = $gOPD(O, k);
if (typeof currentDesc !== 'undefined') {
diff --git a/node_modules/es-abstract/2019/ThrowCompletion.js b/node_modules/es-abstract/2019/ThrowCompletion.js
new file mode 100644
index 000000000..b7d388a35
--- /dev/null
+++ b/node_modules/es-abstract/2019/ThrowCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/9.0/#sec-throwcompletion
+
+module.exports = function ThrowCompletion(argument) {
+ return new CompletionRecord('throw', argument);
+};
diff --git a/node_modules/es-abstract/2019/ToNumber.js b/node_modules/es-abstract/2019/ToNumber.js
index e776bb2b7..95bdd9ecd 100644
--- a/node_modules/es-abstract/2019/ToNumber.js
+++ b/node_modules/es-abstract/2019/ToNumber.js
@@ -8,7 +8,7 @@ var $RegExp = GetIntrinsic('%RegExp%');
var $parseInteger = GetIntrinsic('%parseInt%');
var callBound = require('call-bind/callBound');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var isPrimitive = require('../helpers/isPrimitive');
var $strSlice = callBound('String.prototype.slice');
@@ -48,12 +48,12 @@ module.exports = function ToNumber(argument) {
return ToNumber($parseInteger($strSlice(value, 2), 8));
} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {
return NaN;
- } else {
- var trimmed = $trim(value);
- if (trimmed !== value) {
- return ToNumber(trimmed);
- }
}
+ var trimmed = $trim(value);
+ if (trimmed !== value) {
+ return ToNumber(trimmed);
+ }
+
}
return $Number(value);
};
diff --git a/node_modules/es-abstract/2019/ValidateAtomicAccess.js b/node_modules/es-abstract/2019/ValidateAtomicAccess.js
new file mode 100644
index 000000000..e1c51c776
--- /dev/null
+++ b/node_modules/es-abstract/2019/ValidateAtomicAccess.js
@@ -0,0 +1,36 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToIndex = require('./ToIndex');
+
+var isTypedArray = require('is-typed-array');
+var typedArrayLength = require('typed-array-length');
+
+// https://262.ecma-international.org/8.0/#sec-validateatomicaccess
+
+module.exports = function ValidateAtomicAccess(typedArray, requestIndex) {
+ if (!isTypedArray(typedArray)) {
+ throw new $TypeError('Assertion failed: `typedArray` must be a TypedArray'); // step 1
+ }
+
+ var accessIndex = ToIndex(requestIndex); // step 2
+
+ var length = typedArrayLength(typedArray); // step 3
+
+ /*
+ // this assertion can never be reached
+ if (!(accessIndex >= 0)) {
+ throw new $TypeError('Assertion failed: accessIndex >= 0'); // step 4
+ }
+ */
+
+ if (accessIndex >= length) {
+ throw new $RangeError('index out of range'); // step 5
+ }
+
+ return accessIndex; // step 6
+};
diff --git a/node_modules/es-abstract/2019/ValidateTypedArray.js b/node_modules/es-abstract/2019/ValidateTypedArray.js
new file mode 100644
index 000000000..83df3a81c
--- /dev/null
+++ b/node_modules/es-abstract/2019/ValidateTypedArray.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var $taSome = callBound('%TypedArray.prototype.some%', true);
+
+var Type = require('./Type');
+
+var isTypedArray = require('is-typed-array');
+
+// https://262.ecma-international.org/6.0/#sec-validatetypedarray
+
+module.exports = function ValidateTypedArray(O) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!isTypedArray(O)) {
+ throw new $TypeError('Assertion failed: O must be a TypedArray');
+ }
+
+ // without `.some` (like in node 0.10), there's no way to check buffer detachment, but also no way to be detached
+ if ($taSome) {
+ $taSome(O, function () { return true; });
+ }
+
+ return O.buffer;
+};
diff --git a/node_modules/es-abstract/2019/max.js b/node_modules/es-abstract/2019/max.js
new file mode 100644
index 000000000..b919d4e83
--- /dev/null
+++ b/node_modules/es-abstract/2019/max.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.max%');
diff --git a/node_modules/es-abstract/2019/min.js b/node_modules/es-abstract/2019/min.js
new file mode 100644
index 000000000..909de4b0e
--- /dev/null
+++ b/node_modules/es-abstract/2019/min.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.min%');
diff --git a/node_modules/es-abstract/2020/AbstractEqualityComparison.js b/node_modules/es-abstract/2020/AbstractEqualityComparison.js
index c776194c1..83b294967 100644
--- a/node_modules/es-abstract/2020/AbstractEqualityComparison.js
+++ b/node_modules/es-abstract/2020/AbstractEqualityComparison.js
@@ -1,16 +1,20 @@
'use strict';
+var StrictEqualityComparison = require('./StrictEqualityComparison');
+var StringToBigInt = require('./StringToBigInt');
var ToNumber = require('./ToNumber');
var ToPrimitive = require('./ToPrimitive');
var Type = require('./Type');
-// https://ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison
+var isNaN = require('../helpers/isNaN');
+
+// https://ecma-international.org/ecma-262/11.0/#sec-abstract-equality-comparison
module.exports = function AbstractEqualityComparison(x, y) {
var xType = Type(x);
var yType = Type(y);
if (xType === yType) {
- return x === y; // ES6+ specified this shortcut anyways.
+ return StrictEqualityComparison(x, y);
}
if (x == null && y == null) {
return true;
@@ -21,17 +25,33 @@ module.exports = function AbstractEqualityComparison(x, y) {
if (xType === 'String' && yType === 'Number') {
return AbstractEqualityComparison(ToNumber(x), y);
}
+ if (xType === 'BigInt' && yType === 'String') {
+ var n = StringToBigInt(y);
+ if (isNaN(n)) {
+ return false;
+ }
+ return AbstractEqualityComparison(x, n);
+ }
+ if (xType === 'String' && yType === 'BigInt') {
+ return AbstractEqualityComparison(y, x);
+ }
if (xType === 'Boolean') {
return AbstractEqualityComparison(ToNumber(x), y);
}
if (yType === 'Boolean') {
return AbstractEqualityComparison(x, ToNumber(y));
}
- if ((xType === 'String' || xType === 'Number' || xType === 'Symbol') && yType === 'Object') {
+ if ((xType === 'String' || xType === 'Number' || xType === 'BigInt' || xType === 'Symbol') && yType === 'Object') {
return AbstractEqualityComparison(x, ToPrimitive(y));
}
- if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'Symbol')) {
+ if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'BigInt' || yType === 'Symbol')) {
return AbstractEqualityComparison(ToPrimitive(x), y);
}
+ if ((xType === 'BigInt' && yType === 'Number') || (xType === 'Number' && yType === 'BigInt')) {
+ if (isNaN(x) || isNaN(y) || x === Infinity || y === Infinity || x === -Infinity || y === -Infinity) {
+ return false;
+ }
+ return x == y; // eslint-disable-line eqeqeq
+ }
return false;
};
diff --git a/node_modules/es-abstract/2020/AbstractRelationalComparison.js b/node_modules/es-abstract/2020/AbstractRelationalComparison.js
index 0dfed5ffe..9076d71e2 100644
--- a/node_modules/es-abstract/2020/AbstractRelationalComparison.js
+++ b/node_modules/es-abstract/2020/AbstractRelationalComparison.js
@@ -6,16 +6,19 @@ var $Number = GetIntrinsic('%Number%');
var $TypeError = GetIntrinsic('%TypeError%');
var $isNaN = require('../helpers/isNaN');
-var $isFinite = require('../helpers/isFinite');
-var isPrefixOf = require('../helpers/isPrefixOf');
-var ToNumber = require('./ToNumber');
+var IsStringPrefix = require('./IsStringPrefix');
+var StringToBigInt = require('./StringToBigInt');
+var ToNumeric = require('./ToNumeric');
var ToPrimitive = require('./ToPrimitive');
var Type = require('./Type');
-// https://262.ecma-international.org/5.1/#sec-11.8.5
+var BigIntLessThan = require('./BigInt/lessThan');
+var NumberLessThan = require('./Number/lessThan');
-// eslint-disable-next-line max-statements
+// https://262.ecma-international.org/9.0/#sec-abstract-relational-comparison
+
+// eslint-disable-next-line max-statements, max-lines-per-function
module.exports = function AbstractRelationalComparison(x, y, LeftFirst) {
if (Type(LeftFirst) !== 'Boolean') {
throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean');
@@ -29,35 +32,51 @@ module.exports = function AbstractRelationalComparison(x, y, LeftFirst) {
py = ToPrimitive(y, $Number);
px = ToPrimitive(x, $Number);
}
- var bothStrings = Type(px) === 'String' && Type(py) === 'String';
- if (!bothStrings) {
- var nx = ToNumber(px);
- var ny = ToNumber(py);
- if ($isNaN(nx) || $isNaN(ny)) {
- return undefined;
- }
- if ($isFinite(nx) && $isFinite(ny) && nx === ny) {
- return false;
- }
- if (nx === Infinity) {
+ if (Type(px) === 'String' && Type(py) === 'String') {
+ if (IsStringPrefix(py, px)) {
return false;
}
- if (ny === Infinity) {
+ if (IsStringPrefix(px, py)) {
return true;
}
- if (ny === -Infinity) {
- return false;
+ return px < py; // both strings, neither a prefix of the other. shortcut for steps 3 c-f
+ }
+
+ var pxType = Type(px);
+ var pyType = Type(py);
+ var nx;
+ var ny;
+ if (pxType === 'BigInt' && pyType === 'String') {
+ ny = StringToBigInt(py);
+ if ($isNaN(ny)) {
+ return void undefined;
}
- if (nx === -Infinity) {
- return true;
+ return BigIntLessThan(px, ny);
+ }
+ if (pxType === 'String' && pyType === 'BigInt') {
+ nx = StringToBigInt(px);
+ if ($isNaN(nx)) {
+ return void undefined;
}
- return nx < ny; // by now, these are both nonzero, finite, and not equal
+ return BigIntLessThan(nx, py);
}
- if (isPrefixOf(py, px)) {
- return false;
+
+ nx = ToNumeric(px);
+ ny = ToNumeric(py);
+ var nxType = Type(nx);
+ if (nxType === Type(ny)) {
+ return nxType === 'Number' ? NumberLessThan(nx, ny) : BigIntLessThan(nx, ny);
+ }
+
+ if ($isNaN(nx) || $isNaN(ny)) {
+ return void undefined;
}
- if (isPrefixOf(px, py)) {
+ if (nx === -Infinity || ny === Infinity) {
return true;
}
- return px < py; // both strings, neither a prefix of the other. shortcut for steps c-f
+ if (nx === Infinity || ny === -Infinity) {
+ return false;
+ }
+
+ return nx < ny; // by now, these are both nonzero, finite, and not equal
};
diff --git a/node_modules/es-abstract/2020/ArrayCreate.js b/node_modules/es-abstract/2020/ArrayCreate.js
index 4d20e2e5e..cc890cafb 100644
--- a/node_modules/es-abstract/2020/ArrayCreate.js
+++ b/node_modules/es-abstract/2020/ArrayCreate.js
@@ -9,16 +9,17 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsInteger = require('./IsInteger');
+var hasProto = require('has-proto')();
+
var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || (
- // eslint-disable-next-line no-proto, no-negated-condition
- [].__proto__ !== $ArrayPrototype
- ? null
- : function (O, proto) {
+ hasProto
+ ? function (O, proto) {
O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
return O;
}
+ : null
);
// https://ecma-international.org/ecma-262/6.0/#sec-arraycreate
@@ -42,12 +43,12 @@ module.exports = function ArrayCreate(length) {
A.length = length;
}
/* step 10, the above as a shortcut for the below
- OrdinaryDefineOwnProperty(A, 'length', {
- '[[Configurable]]': false,
- '[[Enumerable]]': false,
- '[[Value]]': length,
- '[[Writable]]': true
- });
- */
+ OrdinaryDefineOwnProperty(A, 'length', {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': true
+ });
+ */
return A;
};
diff --git a/node_modules/es-abstract/2020/AsyncFromSyncIteratorContinuation.js b/node_modules/es-abstract/2020/AsyncFromSyncIteratorContinuation.js
new file mode 100644
index 000000000..c1cc7a111
--- /dev/null
+++ b/node_modules/es-abstract/2020/AsyncFromSyncIteratorContinuation.js
@@ -0,0 +1,45 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Promise = GetIntrinsic('%Promise%', true);
+
+var callBound = require('call-bind/callBound');
+
+var CreateIterResultObject = require('./CreateIterResultObject');
+var IteratorComplete = require('./IteratorComplete');
+var IteratorValue = require('./IteratorValue');
+var PromiseResolve = require('./PromiseResolve');
+var Type = require('./Type');
+
+var $then = callBound('Promise.prototype.then', true);
+
+// https://ecma-international.org/ecma-262/10.0/#sec-asyncfromsynciteratorcontinuation
+
+module.exports = function AsyncFromSyncIteratorContinuation(result) {
+ if (Type(result) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (arguments.length > 1) {
+ throw new $SyntaxError('although AsyncFromSyncIteratorContinuation should take a second argument, it is not used in this implementation');
+ }
+
+ if (!$Promise) {
+ throw new $SyntaxError('This environment does not support Promises.');
+ }
+
+ return new Promise(function (resolve) {
+ var done = IteratorComplete(result); // step 2
+ var value = IteratorValue(result); // step 4
+ var valueWrapper = PromiseResolve($Promise, value); // step 6
+
+ // eslint-disable-next-line no-shadow
+ var onFulfilled = function (value) { // steps 8-9
+ return CreateIterResultObject(value, done); // step 8.a
+ };
+ resolve($then(valueWrapper, onFulfilled)); // step 11
+ }); // step 12
+};
diff --git a/node_modules/es-abstract/2020/AsyncIteratorClose.js b/node_modules/es-abstract/2020/AsyncIteratorClose.js
new file mode 100644
index 000000000..eb72ef938
--- /dev/null
+++ b/node_modules/es-abstract/2020/AsyncIteratorClose.js
@@ -0,0 +1,62 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Promise = GetIntrinsic('%Promise%', true);
+
+var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
+var GetMethod = require('./GetMethod');
+var Type = require('./Type');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var callBound = require('call-bind/callBound');
+
+var $then = callBound('Promise.prototype.then', true);
+
+// https://262.ecma-international.org/9.0/#sec-asynciteratorclose
+
+module.exports = function AsyncIteratorClose(iteratorRecord, completion) {
+ assertRecord(Type, 'Iterator Record', 'iteratorRecord', iteratorRecord); // step 1
+
+ if (!(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a Completion Record instance'); // step 2
+ }
+
+ if (!$then) {
+ throw new $SyntaxError('This environment does not support Promises.');
+ }
+
+ var iterator = iteratorRecord['[[Iterator]]']; // step 3
+
+ return new $Promise(function (resolve) {
+ var ret = GetMethod(iterator, 'return'); // step 4
+
+ if (typeof ret === 'undefined') {
+ resolve(completion); // step 5
+ } else {
+ resolve($then(
+ new $Promise(function (resolve2) {
+ // process.exit(42);
+ resolve2(Call(ret, iterator, [])); // step 6
+ }),
+ function (innerResult) {
+ if (Type(innerResult) !== 'Object') {
+ throw new $TypeError('`innerResult` must be an Object'); // step 10
+ }
+ return completion;
+ },
+ function (e) {
+ if (completion.type() === 'throw') {
+ completion['?'](); // step 8
+ } else {
+ throw e; // step 9
+ }
+ }
+ ));
+ }
+ });
+};
diff --git a/node_modules/es-abstract/2020/BigIntBitwiseOp.js b/node_modules/es-abstract/2020/BigIntBitwiseOp.js
index 1af4cad88..0b1c03a91 100644
--- a/node_modules/es-abstract/2020/BigIntBitwiseOp.js
+++ b/node_modules/es-abstract/2020/BigIntBitwiseOp.js
@@ -61,6 +61,6 @@ module.exports = function BigIntBitwiseOp(op, x, y) {
if (tmp !== 0) {
result -= $pow(2, shift);
}
- return result;
- */
+ return result;
+ */
};
diff --git a/node_modules/es-abstract/2020/CharacterRange.js b/node_modules/es-abstract/2020/CharacterRange.js
new file mode 100644
index 000000000..70e4b5235
--- /dev/null
+++ b/node_modules/es-abstract/2020/CharacterRange.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $charCodeAt = callBound('%String.prototype.charCodeAt%');
+var $push = callBound('%Array.prototype.push%');
+
+module.exports = function CharacterRange(A, B) {
+ if (A.length !== 1 || B.length !== 1) {
+ throw new $TypeError('Assertion failed: CharSets A and B contain exactly one character');
+ }
+
+ var a = A[0];
+ var b = B[0];
+
+ var i = $charCodeAt(a, 0);
+ var j = $charCodeAt(b, 0);
+
+ if (!(i <= j)) {
+ throw new $TypeError('Assertion failed: i is not <= j');
+ }
+
+ var arr = [];
+ for (var k = i; k <= j; k += 1) {
+ $push(arr, $fromCharCode(k));
+ }
+ return arr;
+};
diff --git a/node_modules/es-abstract/2020/CompletionRecord.js b/node_modules/es-abstract/2020/CompletionRecord.js
new file mode 100644
index 000000000..370a5677f
--- /dev/null
+++ b/node_modules/es-abstract/2020/CompletionRecord.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var SLOT = require('internal-slot');
+
+// https://262.ecma-international.org/7.0/#sec-completion-record-specification-type
+
+var CompletionRecord = function CompletionRecord(type, value) {
+ if (!(this instanceof CompletionRecord)) {
+ return new CompletionRecord(type, value);
+ }
+ if (type !== 'normal' && type !== 'break' && type !== 'continue' && type !== 'return' && type !== 'throw') {
+ throw new $SyntaxError('Assertion failed: `type` must be one of "normal", "break", "continue", "return", or "throw"');
+ }
+ SLOT.set(this, '[[Type]]', type);
+ SLOT.set(this, '[[Value]]', value);
+ // [[Target]] slot?
+};
+
+CompletionRecord.prototype.type = function Type() {
+ return SLOT.get(this, '[[Type]]');
+};
+
+CompletionRecord.prototype.value = function Value() {
+ return SLOT.get(this, '[[Value]]');
+};
+
+CompletionRecord.prototype['?'] = function ReturnIfAbrupt() {
+ var type = SLOT.get(this, '[[Type]]');
+ var value = SLOT.get(this, '[[Value]]');
+
+ if (type === 'normal') {
+ return value;
+ }
+ if (type === 'throw') {
+ throw value;
+ }
+ throw new $SyntaxError('Completion Record is not of type "normal" or "throw": other types not supported');
+};
+
+CompletionRecord.prototype['!'] = function assert() {
+ var type = SLOT.get(this, '[[Type]]');
+
+ if (type !== 'normal') {
+ throw new $SyntaxError('Assertion failed: Completion Record is not of type "normal"');
+ }
+ return SLOT.get(this, '[[Value]]');
+};
+
+module.exports = CompletionRecord;
diff --git a/node_modules/es-abstract/2020/CopyDataProperties.js b/node_modules/es-abstract/2020/CopyDataProperties.js
index 7bd7ddaed..47a426c0c 100644
--- a/node_modules/es-abstract/2020/CopyDataProperties.js
+++ b/node_modules/es-abstract/2020/CopyDataProperties.js
@@ -51,8 +51,8 @@ module.exports = function CopyDataProperties(target, source, excludedItems) {
var enumerable = $isEnumerable(from, nextKey) || (
// this is to handle string keys being non-enumerable in older engines
typeof source === 'string'
- && nextKey >= 0
- && IsInteger(ToNumber(nextKey))
+ && nextKey >= 0
+ && IsInteger(ToNumber(nextKey))
);
if (excluded === false && enumerable) {
var propValue = Get(from, nextKey);
diff --git a/node_modules/es-abstract/2020/CreateAsyncFromSyncIterator.js b/node_modules/es-abstract/2020/CreateAsyncFromSyncIterator.js
new file mode 100644
index 000000000..693321d51
--- /dev/null
+++ b/node_modules/es-abstract/2020/CreateAsyncFromSyncIterator.js
@@ -0,0 +1,121 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var AsyncFromSyncIteratorContinuation = require('./AsyncFromSyncIteratorContinuation');
+var Call = require('./Call');
+var CreateIterResultObject = require('./CreateIterResultObject');
+var Get = require('./Get');
+var GetMethod = require('./GetMethod');
+var IteratorNext = require('./IteratorNext');
+var OrdinaryObjectCreate = require('./OrdinaryObjectCreate');
+var Type = require('./Type');
+
+var SLOT = require('internal-slot');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var $AsyncFromSyncIteratorPrototype = GetIntrinsic('%AsyncFromSyncIteratorPrototype%', true) || {
+ next: function next(value) {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var argsLength = arguments.length;
+
+ return new Promise(function (resolve) { // step 3
+ var syncIteratorRecord = SLOT.get(O, '[[SyncIteratorRecord]]'); // step 4
+ var result;
+ if (argsLength > 0) {
+ result = IteratorNext(syncIteratorRecord['[[Iterator]]'], value); // step 5.a
+ } else { // step 6
+ result = IteratorNext(syncIteratorRecord['[[Iterator]]']);// step 6.a
+ }
+ resolve(AsyncFromSyncIteratorContinuation(result)); // step 8
+ });
+ },
+ 'return': function () {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var valueIsPresent = arguments.length > 0;
+ var value = valueIsPresent ? arguments[0] : void undefined;
+
+ return new Promise(function (resolve, reject) { // step 3
+ var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4
+ var iteratorReturn = GetMethod(syncIterator, 'return'); // step 5
+
+ if (typeof iteratorReturn === 'undefined') { // step 7
+ var iterResult = CreateIterResultObject(value, true); // step 7.a
+ Call(resolve, undefined, [iterResult]); // step 7.b
+ return;
+ }
+ var result;
+ if (valueIsPresent) { // step 8
+ result = Call(iteratorReturn, syncIterator, [value]); // step 8.a
+ } else { // step 9
+ result = Call(iteratorReturn, syncIterator); // step 9.a
+ }
+ if (Type(result) !== 'Object') { // step 11
+ Call(reject, undefined, [new $TypeError('Iterator `return` method returned a non-object value.')]); // step 11.a
+ return;
+ }
+
+ resolve(AsyncFromSyncIteratorContinuation(result)); // step 12
+ });
+ },
+ 'throw': function () {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var valueIsPresent = arguments.length > 0;
+ var value = valueIsPresent ? arguments[0] : void undefined;
+
+ return new Promise(function (resolve, reject) { // step 3
+ var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4
+
+ var throwMethod = GetMethod(syncIterator, 'throw'); // step 5
+
+ if (typeof throwMethod === 'undefined') { // step 7
+ Call(reject, undefined, [value]); // step 7.a
+ return;
+ }
+
+ var result;
+ if (valueIsPresent) { // step 8
+ result = Call(throwMethod, syncIterator, [value]); // step 8.a
+ } else { // step 9
+ result = Call(throwMethod, syncIterator); // step 9.a
+ }
+ if (Type(result) !== 'Object') { // step 11
+ Call(reject, undefined, [new $TypeError('Iterator `throw` method returned a non-object value.')]); // step 11.a
+ return;
+ }
+
+ resolve(AsyncFromSyncIteratorContinuation(result/* , promiseCapability */)); // step 12
+ });
+ }
+};
+
+// https://ecma-international.org/ecma-262/11.0/#sec-createasyncfromsynciterator
+
+module.exports = function CreateAsyncFromSyncIterator(syncIteratorRecord) {
+ assertRecord(Type, 'Iterator Record', 'syncIteratorRecord', syncIteratorRecord);
+
+ // var asyncIterator = OrdinaryObjectCreate(%AsyncFromSyncIteratorPrototype%, « [[SyncIteratorRecord]] »); // step 1
+ var asyncIterator = OrdinaryObjectCreate($AsyncFromSyncIteratorPrototype);
+
+ SLOT.set(asyncIterator, '[[SyncIteratorRecord]]', syncIteratorRecord); // step 2
+
+ var nextMethod = Get(asyncIterator, 'next'); // step 3
+
+ return { // steps 3-4
+ '[[Iterator]]': asyncIterator,
+ '[[NextMethod]]': nextMethod,
+ '[[Done]]': false
+ };
+};
diff --git a/node_modules/es-abstract/2020/CreateDataProperty.js b/node_modules/es-abstract/2020/CreateDataProperty.js
index ff5ca3055..02c6cd1f8 100644
--- a/node_modules/es-abstract/2020/CreateDataProperty.js
+++ b/node_modules/es-abstract/2020/CreateDataProperty.js
@@ -25,8 +25,8 @@ module.exports = function CreateDataProperty(O, P, V) {
}
var oldDesc = OrdinaryGetOwnProperty(O, P);
var extensible = !oldDesc || IsExtensible(O);
- var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']);
- if (immutable || !extensible) {
+ var nonConfigurable = oldDesc && !oldDesc['[[Configurable]]'];
+ if (nonConfigurable || !extensible) {
return false;
}
return DefineOwnProperty(
diff --git a/node_modules/es-abstract/2020/CreateListFromArrayLike.js b/node_modules/es-abstract/2020/CreateListFromArrayLike.js
index 3e9f5f403..40293127d 100644
--- a/node_modules/es-abstract/2020/CreateListFromArrayLike.js
+++ b/node_modules/es-abstract/2020/CreateListFromArrayLike.js
@@ -19,7 +19,7 @@ var Type = require('./Type');
module.exports = function CreateListFromArrayLike(obj) {
var elementTypes = arguments.length > 1
? arguments[1]
- : ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'Object'];
+ : ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'BigInt', 'Object'];
if (Type(obj) !== 'Object') {
throw new $TypeError('Assertion failed: `obj` must be an Object');
diff --git a/node_modules/es-abstract/2020/CreateRegExpStringIterator.js b/node_modules/es-abstract/2020/CreateRegExpStringIterator.js
new file mode 100644
index 000000000..cdfae5621
--- /dev/null
+++ b/node_modules/es-abstract/2020/CreateRegExpStringIterator.js
@@ -0,0 +1,100 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var hasSymbols = require('has-symbols')();
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var IteratorPrototype = GetIntrinsic('%IteratorPrototype%', true);
+
+var AdvanceStringIndex = require('./AdvanceStringIndex');
+var CreateIterResultObject = require('./CreateIterResultObject');
+var CreateMethodProperty = require('./CreateMethodProperty');
+var Get = require('./Get');
+var OrdinaryObjectCreate = require('./OrdinaryObjectCreate');
+var RegExpExec = require('./RegExpExec');
+var Set = require('./Set');
+var ToLength = require('./ToLength');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+var SLOT = require('internal-slot');
+var setToStringTag = require('es-set-tostringtag');
+
+var RegExpStringIterator = function RegExpStringIterator(R, S, global, fullUnicode) {
+ if (Type(S) !== 'String') {
+ throw new $TypeError('`S` must be a string');
+ }
+ if (Type(global) !== 'Boolean') {
+ throw new $TypeError('`global` must be a boolean');
+ }
+ if (Type(fullUnicode) !== 'Boolean') {
+ throw new $TypeError('`fullUnicode` must be a boolean');
+ }
+ SLOT.set(this, '[[IteratingRegExp]]', R);
+ SLOT.set(this, '[[IteratedString]]', S);
+ SLOT.set(this, '[[Global]]', global);
+ SLOT.set(this, '[[Unicode]]', fullUnicode);
+ SLOT.set(this, '[[Done]]', false);
+};
+
+if (IteratorPrototype) {
+ RegExpStringIterator.prototype = OrdinaryObjectCreate(IteratorPrototype);
+}
+
+var RegExpStringIteratorNext = function next() {
+ var O = this; // eslint-disable-line no-invalid-this
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('receiver must be an object');
+ }
+ if (
+ !(O instanceof RegExpStringIterator)
+ || !SLOT.has(O, '[[IteratingRegExp]]')
+ || !SLOT.has(O, '[[IteratedString]]')
+ || !SLOT.has(O, '[[Global]]')
+ || !SLOT.has(O, '[[Unicode]]')
+ || !SLOT.has(O, '[[Done]]')
+ ) {
+ throw new $TypeError('"this" value must be a RegExpStringIterator instance');
+ }
+ if (SLOT.get(O, '[[Done]]')) {
+ return CreateIterResultObject(undefined, true);
+ }
+ var R = SLOT.get(O, '[[IteratingRegExp]]');
+ var S = SLOT.get(O, '[[IteratedString]]');
+ var global = SLOT.get(O, '[[Global]]');
+ var fullUnicode = SLOT.get(O, '[[Unicode]]');
+ var match = RegExpExec(R, S);
+ if (match === null) {
+ SLOT.set(O, '[[Done]]', true);
+ return CreateIterResultObject(undefined, true);
+ }
+ if (global) {
+ var matchStr = ToString(Get(match, '0'));
+ if (matchStr === '') {
+ var thisIndex = ToLength(Get(R, 'lastIndex'));
+ var nextIndex = AdvanceStringIndex(S, thisIndex, fullUnicode);
+ Set(R, 'lastIndex', nextIndex, true);
+ }
+ return CreateIterResultObject(match, false);
+ }
+ SLOT.set(O, '[[Done]]', true);
+ return CreateIterResultObject(match, false);
+};
+CreateMethodProperty(RegExpStringIterator.prototype, 'next', RegExpStringIteratorNext);
+
+if (hasSymbols) {
+ setToStringTag(RegExpStringIterator.prototype, 'RegExp String Iterator');
+
+ if (Symbol.iterator && typeof RegExpStringIterator.prototype[Symbol.iterator] !== 'function') {
+ var iteratorFn = function SymbolIterator() {
+ return this;
+ };
+ CreateMethodProperty(RegExpStringIterator.prototype, Symbol.iterator, iteratorFn);
+ }
+}
+
+// https://262.ecma-international.org/11.0/#sec-createregexpstringiterator
+module.exports = function CreateRegExpStringIterator(R, S, global, fullUnicode) {
+ // assert R.global === global && R.unicode === fullUnicode?
+ return new RegExpStringIterator(R, S, global, fullUnicode);
+};
diff --git a/node_modules/es-abstract/2020/DetachArrayBuffer.js b/node_modules/es-abstract/2020/DetachArrayBuffer.js
new file mode 100644
index 000000000..03284729b
--- /dev/null
+++ b/node_modules/es-abstract/2020/DetachArrayBuffer.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isArrayBuffer = require('is-array-buffer');
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+var MessageChannel;
+try {
+ // eslint-disable-next-line global-require
+ MessageChannel = require('worker_threads').MessageChannel;
+} catch (e) { /**/ }
+
+// https://262.ecma-international.org/9.0/#sec-detacharraybuffer
+
+/* globals postMessage */
+
+module.exports = function DetachArrayBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer) || isSharedArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot, and not a Shared Array Buffer');
+ }
+
+ // commented out since there's no way to set or access this key
+ // var key = arguments.length > 1 ? arguments[1] : void undefined;
+
+ // if (!SameValue(arrayBuffer[[ArrayBufferDetachKey]], key)) {
+ // throw new $TypeError('Assertion failed: `key` must be the value of the [[ArrayBufferDetachKey]] internal slot of `arrayBuffer`');
+ // }
+
+ if (typeof structuredClone === 'function') {
+ structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
+ } else if (typeof postMessage === 'function') {
+ postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
+ } else if (MessageChannel) {
+ (new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
+ } else {
+ throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
+ }
+ return null;
+};
diff --git a/node_modules/es-abstract/2020/EnumerableOwnPropertyNames.js b/node_modules/es-abstract/2020/EnumerableOwnPropertyNames.js
index 44171b9eb..8e3177b6a 100644
--- a/node_modules/es-abstract/2020/EnumerableOwnPropertyNames.js
+++ b/node_modules/es-abstract/2020/EnumerableOwnPropertyNames.js
@@ -19,7 +19,7 @@ var Type = require('./Type');
// https://262.ecma-international.org/8.0/#sec-enumerableownproperties
-module.exports = function EnumerableOwnProperties(O, kind) {
+module.exports = function EnumerableOwnPropertyNames(O, kind) {
if (Type(O) !== 'Object') {
throw new $TypeError('Assertion failed: Type(O) is not Object');
}
diff --git a/node_modules/es-abstract/2020/FromPropertyDescriptor.js b/node_modules/es-abstract/2020/FromPropertyDescriptor.js
index 9a69a2605..e142ed582 100644
--- a/node_modules/es-abstract/2020/FromPropertyDescriptor.js
+++ b/node_modules/es-abstract/2020/FromPropertyDescriptor.js
@@ -1,36 +1,16 @@
'use strict';
var assertRecord = require('../helpers/assertRecord');
+var fromPropertyDescriptor = require('../helpers/fromPropertyDescriptor');
var Type = require('./Type');
// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
module.exports = function FromPropertyDescriptor(Desc) {
- if (typeof Desc === 'undefined') {
- return Desc;
+ if (typeof Desc !== 'undefined') {
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
}
- assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
-
- var obj = {};
- if ('[[Value]]' in Desc) {
- obj.value = Desc['[[Value]]'];
- }
- if ('[[Writable]]' in Desc) {
- obj.writable = Desc['[[Writable]]'];
- }
- if ('[[Get]]' in Desc) {
- obj.get = Desc['[[Get]]'];
- }
- if ('[[Set]]' in Desc) {
- obj.set = Desc['[[Set]]'];
- }
- if ('[[Enumerable]]' in Desc) {
- obj.enumerable = Desc['[[Enumerable]]'];
- }
- if ('[[Configurable]]' in Desc) {
- obj.configurable = Desc['[[Configurable]]'];
- }
- return obj;
+ return fromPropertyDescriptor(Desc);
};
diff --git a/node_modules/es-abstract/2020/Get.js b/node_modules/es-abstract/2020/Get.js
index 681055a2f..297968643 100644
--- a/node_modules/es-abstract/2020/Get.js
+++ b/node_modules/es-abstract/2020/Get.js
@@ -9,12 +9,7 @@ var inspect = require('object-inspect');
var IsPropertyKey = require('./IsPropertyKey');
var Type = require('./Type');
-/**
- * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
- * 1. Assert: Type(O) is Object.
- * 2. Assert: IsPropertyKey(P) is true.
- * 3. Return O.[[Get]](P, O).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
module.exports = function Get(O, P) {
// 7.3.1.1
diff --git a/node_modules/es-abstract/2020/GetGlobalObject.js b/node_modules/es-abstract/2020/GetGlobalObject.js
new file mode 100644
index 000000000..0541ede0c
--- /dev/null
+++ b/node_modules/es-abstract/2020/GetGlobalObject.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var getGlobal = require('globalthis/polyfill');
+
+// https://262.ecma-international.org/6.0/#sec-getglobalobject
+
+module.exports = function GetGlobalObject() {
+ return getGlobal();
+};
diff --git a/node_modules/es-abstract/2020/GetIterator.js b/node_modules/es-abstract/2020/GetIterator.js
index 0e74c1736..51439e448 100644
--- a/node_modules/es-abstract/2020/GetIterator.js
+++ b/node_modules/es-abstract/2020/GetIterator.js
@@ -3,6 +3,7 @@
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $asyncIterator = GetIntrinsic('%Symbol.asyncIterator%', true);
var inspect = require('object-inspect');
@@ -32,15 +33,14 @@ module.exports = function GetIterator(obj, hint, method) {
actualMethod = GetMethod(obj, $asyncIterator);
}
if (actualMethod === undefined) {
- throw new $TypeError("async from sync iterators aren't currently supported");
+ throw new $SyntaxError("async from sync iterators aren't currently supported");
}
} else {
actualMethod = getIteratorMethod(
{
AdvanceStringIndex: AdvanceStringIndex,
GetMethod: GetMethod,
- IsArray: IsArray,
- Type: Type
+ IsArray: IsArray
},
obj
);
diff --git a/node_modules/es-abstract/2020/GetMethod.js b/node_modules/es-abstract/2020/GetMethod.js
index 775d3fb95..d3775178e 100644
--- a/node_modules/es-abstract/2020/GetMethod.js
+++ b/node_modules/es-abstract/2020/GetMethod.js
@@ -8,15 +8,9 @@ var GetV = require('./GetV');
var IsCallable = require('./IsCallable');
var IsPropertyKey = require('./IsPropertyKey');
-/**
- * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let func be GetV(O, P).
- * 3. ReturnIfAbrupt(func).
- * 4. If func is either undefined or null, return undefined.
- * 5. If IsCallable(func) is false, throw a TypeError exception.
- * 6. Return func.
- */
+var debug = require('object-inspect');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getmethod
module.exports = function GetMethod(O, P) {
// 7.3.9.1
@@ -34,7 +28,7 @@ module.exports = function GetMethod(O, P) {
// 7.3.9.5
if (!IsCallable(func)) {
- throw new $TypeError(P + 'is not a function');
+ throw new $TypeError(P + ' is not a function: ' + debug(func));
}
// 7.3.9.6
diff --git a/node_modules/es-abstract/2020/GetOwnPropertyKeys.js b/node_modules/es-abstract/2020/GetOwnPropertyKeys.js
index b8f4167f7..40c0b367f 100644
--- a/node_modules/es-abstract/2020/GetOwnPropertyKeys.js
+++ b/node_modules/es-abstract/2020/GetOwnPropertyKeys.js
@@ -6,8 +6,8 @@ var hasSymbols = require('has-symbols')();
var $TypeError = GetIntrinsic('%TypeError%');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
-var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
+var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%', true);
var keys = require('object-keys');
var esType = require('./Type');
diff --git a/node_modules/es-abstract/2020/GetPrototypeFromConstructor.js b/node_modules/es-abstract/2020/GetPrototypeFromConstructor.js
index 5f369cad8..25ee12f35 100644
--- a/node_modules/es-abstract/2020/GetPrototypeFromConstructor.js
+++ b/node_modules/es-abstract/2020/GetPrototypeFromConstructor.js
@@ -4,6 +4,7 @@ var GetIntrinsic = require('get-intrinsic');
var $Function = GetIntrinsic('%Function%');
var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
var Get = require('./Get');
var IsConstructor = require('./IsConstructor');
@@ -20,7 +21,7 @@ module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefa
if (Type(proto) !== 'Object') {
if (!(constructor instanceof $Function)) {
// ignore other realms, for now
- throw new $TypeError('cross-realm constructors not currently supported');
+ throw new $SyntaxError('cross-realm constructors not currently supported');
}
proto = intrinsic;
}
diff --git a/node_modules/es-abstract/2020/GetSubstitution.js b/node_modules/es-abstract/2020/GetSubstitution.js
index a5a7a1bee..96bdcaafe 100644
--- a/node_modules/es-abstract/2020/GetSubstitution.js
+++ b/node_modules/es-abstract/2020/GetSubstitution.js
@@ -5,7 +5,7 @@ var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('call-bind/callBound');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var every = require('../helpers/every');
var $charAt = callBound('String.prototype.charAt');
diff --git a/node_modules/es-abstract/2020/GetV.js b/node_modules/es-abstract/2020/GetV.js
index 2d8cc8246..2dcddb351 100644
--- a/node_modules/es-abstract/2020/GetV.js
+++ b/node_modules/es-abstract/2020/GetV.js
@@ -7,13 +7,7 @@ var $TypeError = GetIntrinsic('%TypeError%');
var IsPropertyKey = require('./IsPropertyKey');
var ToObject = require('./ToObject');
-/**
- * 7.3.2 GetV (V, P)
- * 1. Assert: IsPropertyKey(P) is true.
- * 2. Let O be ToObject(V).
- * 3. ReturnIfAbrupt(O).
- * 4. Return O.[[Get]](P, V).
- */
+// https://ecma-international.org/ecma-262/6.0/#sec-getv
module.exports = function GetV(V, P) {
// 7.3.2.1
diff --git a/node_modules/es-abstract/2020/IsArray.js b/node_modules/es-abstract/2020/IsArray.js
index f933cec03..600ffa002 100644
--- a/node_modules/es-abstract/2020/IsArray.js
+++ b/node_modules/es-abstract/2020/IsArray.js
@@ -1,14 +1,4 @@
'use strict';
-var GetIntrinsic = require('get-intrinsic');
-
-var $Array = GetIntrinsic('%Array%');
-
-// eslint-disable-next-line global-require
-var toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');
-
// https://ecma-international.org/ecma-262/6.0/#sec-isarray
-
-module.exports = $Array.isArray || function IsArray(argument) {
- return toStr(argument) === '[object Array]';
-};
+module.exports = require('../helpers/IsArray');
diff --git a/node_modules/es-abstract/2020/IsCompatiblePropertyDescriptor.js b/node_modules/es-abstract/2020/IsCompatiblePropertyDescriptor.js
new file mode 100644
index 000000000..8bdaf3eb4
--- /dev/null
+++ b/node_modules/es-abstract/2020/IsCompatiblePropertyDescriptor.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
+
+// https://262.ecma-international.org/6.0/#sec-iscompatiblepropertydescriptor
+
+module.exports = function IsCompatiblePropertyDescriptor(Extensible, Desc, Current) {
+ return ValidateAndApplyPropertyDescriptor(undefined, undefined, Extensible, Desc, Current);
+};
diff --git a/node_modules/es-abstract/2020/IsDetachedBuffer.js b/node_modules/es-abstract/2020/IsDetachedBuffer.js
new file mode 100644
index 000000000..4b373e9ab
--- /dev/null
+++ b/node_modules/es-abstract/2020/IsDetachedBuffer.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $byteLength = callBound('%ArrayBuffer.prototype.byteLength%', true)
+ || function byteLength(ab) { return ab.byteLength; }; // in node < 0.11, byteLength is an own nonconfigurable property
+
+var isArrayBuffer = require('is-array-buffer');
+
+var availableTypedArrays = require('available-typed-arrays')();
+
+// https://262.ecma-international.org/6.0/#sec-isdetachedbuffer
+
+module.exports = function IsDetachedBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
+ }
+ if ($byteLength(arrayBuffer) === 0) {
+ try {
+ new global[availableTypedArrays[0]](arrayBuffer); // eslint-disable-line no-new
+ } catch (error) {
+ return error.name === 'TypeError';
+ }
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2020/IsExtensible.js b/node_modules/es-abstract/2020/IsExtensible.js
index 9df5b80b1..d6e363840 100644
--- a/node_modules/es-abstract/2020/IsExtensible.js
+++ b/node_modules/es-abstract/2020/IsExtensible.js
@@ -2,13 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $Object = GetIntrinsic('%Object%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $isExtensible = GetIntrinsic('%Object.isExtensible%', true);
var isPrimitive = require('../helpers/isPrimitive');
-var $preventExtensions = $Object.preventExtensions;
-var $isExtensible = $Object.isExtensible;
-
// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o
module.exports = $preventExtensions
diff --git a/node_modules/es-abstract/2020/IsSharedArrayBuffer.js b/node_modules/es-abstract/2020/IsSharedArrayBuffer.js
new file mode 100644
index 000000000..8e96e33f3
--- /dev/null
+++ b/node_modules/es-abstract/2020/IsSharedArrayBuffer.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+// https://262.ecma-international.org/8.0/#sec-issharedarraybuffer
+
+module.exports = function IsSharedArrayBuffer(obj) {
+ if (Type(obj) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ return isSharedArrayBuffer(obj);
+};
diff --git a/node_modules/es-abstract/2020/IsUnclampedIntegerElementType.js b/node_modules/es-abstract/2020/IsUnclampedIntegerElementType.js
index 15237b1f2..4e3a38425 100644
--- a/node_modules/es-abstract/2020/IsUnclampedIntegerElementType.js
+++ b/node_modules/es-abstract/2020/IsUnclampedIntegerElementType.js
@@ -4,9 +4,9 @@
module.exports = function IsUnclampedIntegerElementType(type) {
return type === 'Int8'
- || type === 'Uint8'
- || type === 'Int16'
- || type === 'Uint16'
- || type === 'Int32'
- || type === 'Uint32';
+ || type === 'Uint8'
+ || type === 'Int16'
+ || type === 'Uint16'
+ || type === 'Int32'
+ || type === 'Uint32';
};
diff --git a/node_modules/es-abstract/2020/IsUnsignedElementType.js b/node_modules/es-abstract/2020/IsUnsignedElementType.js
index 5eb1e7c45..b1ff194d7 100644
--- a/node_modules/es-abstract/2020/IsUnsignedElementType.js
+++ b/node_modules/es-abstract/2020/IsUnsignedElementType.js
@@ -4,8 +4,8 @@
module.exports = function IsUnsignedElementType(type) {
return type === 'Uint8'
- || type === 'Uint8C'
- || type === 'Uint16'
- || type === 'Uint32'
- || type === 'BigUint64';
+ || type === 'Uint8C'
+ || type === 'Uint16'
+ || type === 'Uint32'
+ || type === 'BigUint64';
};
diff --git a/node_modules/es-abstract/2020/IteratorClose.js b/node_modules/es-abstract/2020/IteratorClose.js
index dd1118df7..f703ea632 100644
--- a/node_modules/es-abstract/2020/IteratorClose.js
+++ b/node_modules/es-abstract/2020/IteratorClose.js
@@ -5,6 +5,7 @@ var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
var GetMethod = require('./GetMethod');
var IsCallable = require('./IsCallable');
var Type = require('./Type');
@@ -15,10 +16,10 @@ module.exports = function IteratorClose(iterator, completion) {
if (Type(iterator) !== 'Object') {
throw new $TypeError('Assertion failed: Type(iterator) is not Object');
}
- if (!IsCallable(completion)) {
- throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record');
+ if (!IsCallable(completion) && !(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a thunk representing a Completion Record, nor a Completion Record instance');
}
- var completionThunk = completion;
+ var completionThunk = completion instanceof CompletionRecord ? function () { return completion['?'](); } : completion;
var iteratorReturn = GetMethod(iterator, 'return');
diff --git a/node_modules/es-abstract/2020/NormalCompletion.js b/node_modules/es-abstract/2020/NormalCompletion.js
new file mode 100644
index 000000000..1e429dd65
--- /dev/null
+++ b/node_modules/es-abstract/2020/NormalCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/6.0/#sec-normalcompletion
+
+module.exports = function NormalCompletion(value) {
+ return new CompletionRecord('normal', value);
+};
diff --git a/node_modules/es-abstract/2020/Number/exponentiate.js b/node_modules/es-abstract/2020/Number/exponentiate.js
index bafa7b11f..256865103 100644
--- a/node_modules/es-abstract/2020/Number/exponentiate.js
+++ b/node_modules/es-abstract/2020/Number/exponentiate.js
@@ -72,6 +72,6 @@ module.exports = function NumberExponentiate(base, exponent) {
}
if (base < 0 && isFinite(base) && isFinite(exponent) && !IsInteger(exponent)) {
return NaN;
- }
- */
+ }
+ */
};
diff --git a/node_modules/es-abstract/2020/NumberToBigInt.js b/node_modules/es-abstract/2020/NumberToBigInt.js
index a186988c1..84649847c 100644
--- a/node_modules/es-abstract/2020/NumberToBigInt.js
+++ b/node_modules/es-abstract/2020/NumberToBigInt.js
@@ -4,6 +4,7 @@ var GetIntrinsic = require('get-intrinsic');
var $BigInt = GetIntrinsic('%BigInt%', true);
var $RangeError = GetIntrinsic('%RangeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
var IsInteger = require('./IsInteger');
@@ -18,5 +19,8 @@ module.exports = function NumberToBigInt(number) {
if (!IsInteger(number)) {
throw new $RangeError('The number ' + number + ' cannot be converted to a BigInt because it is not an integer');
}
+ if (!$BigInt) {
+ throw new $SyntaxError('BigInts are not supported in this environment');
+ }
return $BigInt(number);
};
diff --git a/node_modules/es-abstract/2020/NumericToRawBytes.js b/node_modules/es-abstract/2020/NumericToRawBytes.js
new file mode 100644
index 000000000..91549fb99
--- /dev/null
+++ b/node_modules/es-abstract/2020/NumericToRawBytes.js
@@ -0,0 +1,209 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $floor = GetIntrinsic('%Math.floor%');
+var $log = GetIntrinsic('%Math.log%');
+var $log2E = GetIntrinsic('%Math.LOG2E%');
+var $log2 = GetIntrinsic('%Math.log2%', true) || function log2(x) {
+ return $log(x) * $log2E;
+};
+var $parseInt = GetIntrinsic('%parseInt%');
+var $pow = GetIntrinsic('%Math.pow%');
+var $Number = GetIntrinsic('%Number%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $BigInt = GetIntrinsic('%BigInt%', true);
+
+var callBound = require('call-bind/callBound');
+
+var $reverse = callBound('Array.prototype.reverse');
+var $numberToString = callBound('Number.prototype.toString');
+var $strSlice = callBound('String.prototype.slice');
+
+var abs = require('./abs');
+var hasOwnProperty = require('./HasOwnProperty');
+var ToBigInt64 = require('./ToBigInt64');
+var ToBigUint64 = require('./ToBigUint64');
+var ToInt16 = require('./ToInt16');
+var ToInt32 = require('./ToInt32');
+var ToInt8 = require('./ToInt8');
+var ToUint16 = require('./ToUint16');
+var ToUint32 = require('./ToUint32');
+var ToUint8 = require('./ToUint8');
+var ToUint8Clamp = require('./ToUint8Clamp');
+var Type = require('./Type');
+
+var isNaN = require('../helpers/isNaN');
+var isFinite = require('../helpers/isFinite');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/11.0/#table-the-typedarray-constructors
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ BigInt64: 8,
+ BigUint64: 8,
+ Float32: 4,
+ Float64: 8
+};
+
+var TypeToAO = {
+ __proto__: null,
+ Int8: ToInt8,
+ Uint8: ToUint8,
+ Uint8C: ToUint8Clamp,
+ Int16: ToInt16,
+ Uint16: ToUint16,
+ Int32: ToInt32,
+ Uint32: ToUint32,
+ BigInt64: ToBigInt64,
+ BigUint64: ToBigUint64
+};
+
+// https://262.ecma-international.org/11.0/#sec-numerictorawbytes
+
+module.exports = function NumericToRawBytes(type, value, isLittleEndian) {
+ if (typeof type !== 'string' || !hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (Type(value) !== 'Number' && Type(value) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `value` must be a Number or a BigInt');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var rawBytes = [];
+ var exponent;
+
+ if (type === 'Float32') { // step 1
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 192, 127] : [127, 192, 0, 0]; // hardcoded
+ }
+
+ var leastSig;
+
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, leastSig] : [leastSig, 0, 0, 0];
+ }
+
+ if (!isFinite(value)) {
+ leastSig = value < 0 ? 255 : 127;
+ return isLittleEndian ? [0, 0, 128, leastSig] : [leastSig, 128, 0, 0];
+ }
+
+ var sign = value < 0 ? 1 : 0;
+ value = abs(value); // eslint-disable-line no-param-reassign
+
+ exponent = 0;
+ while (value >= 2) {
+ exponent += 1;
+ value /= 2; // eslint-disable-line no-param-reassign
+ }
+
+ while (value < 1) {
+ exponent -= 1;
+ value *= 2; // eslint-disable-line no-param-reassign
+ }
+
+ var mantissa = value - 1;
+ mantissa *= $pow(2, 23);
+ mantissa = $floor(mantissa);
+
+ exponent += 127;
+ exponent = exponent << 23;
+
+ var result = sign << 31;
+ result |= exponent;
+ result |= mantissa;
+
+ var byte0 = result & 255;
+ result = result >> 8;
+ var byte1 = result & 255;
+ result = result >> 8;
+ var byte2 = result & 255;
+ result = result >> 8;
+ var byte3 = result & 255;
+
+ if (isLittleEndian) {
+ return [byte0, byte1, byte2, byte3];
+ }
+ return [byte3, byte2, byte1, byte0];
+ } else if (type === 'Float64') { // step 2
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 0, leastSig] : [leastSig, 0, 0, 0, 0, 0, 0, 0];
+ }
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 248, 127] : [127, 248, 0, 0, 0, 0, 0, 0];
+ }
+ if (!isFinite(value)) {
+ var infBytes = value < 0 ? [0, 0, 0, 0, 0, 0, 240, 255] : [0, 0, 0, 0, 0, 0, 240, 127];
+ return isLittleEndian ? infBytes : $reverse(infBytes);
+ }
+
+ var isNegative = value < 0;
+ if (isNegative) { value = -value; } // eslint-disable-line no-param-reassign
+
+ exponent = $floor($log2(value));
+ var significand = (value / $pow(2, exponent)) - 1;
+
+ var bitString = '';
+ for (var i = 0; i < 52; i++) {
+ significand *= 2;
+ if (significand >= 1) {
+ bitString += '1';
+ significand -= 1;
+ } else {
+ bitString += '0';
+ }
+ }
+
+ exponent += 1023;
+ var exponentBits = $numberToString(exponent, 2);
+ while (exponentBits.length < 11) { exponentBits = '0' + exponentBits; }
+
+ var fullBitString = (isNegative ? '1' : '0') + exponentBits + bitString;
+ while (fullBitString.length < 64) { fullBitString = '0' + fullBitString; }
+
+ for (i = 0; i < 8; i++) {
+ rawBytes[i] = $parseInt($strSlice(fullBitString, i * 8, (i + 1) * 8), 2);
+ }
+
+ return isLittleEndian ? $reverse(rawBytes) : rawBytes;
+ } // step 3
+
+ var n = TypeToSizes[type]; // step 3.a
+
+ var convOp = TypeToAO[type]; // step 3.b
+
+ var intValue = convOp(value); // step 3.c
+
+ var isBigInt = type === 'BigInt64' || type === 'BigUint64';
+ /*
+ if (intValue >= 0) { // step 3.d
+ // Let rawBytes be a List containing the n-byte binary encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ } else { // step 3.e
+ // Let rawBytes be a List containing the n-byte binary 2's complement encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ }
+ */
+ if (intValue < 0) {
+ intValue = intValue >>> 0;
+ }
+ var OxFF = isBigInt ? $BigInt(0xFF) : 0xFF;
+ var eight = isBigInt ? $BigInt(8) : 8;
+ for (i = 0; i < n; i++) {
+ rawBytes[isLittleEndian ? i : n - 1 - i] = $Number(intValue & OxFF);
+ intValue = intValue >> eight;
+ }
+
+ return rawBytes; // step 4
+};
diff --git a/node_modules/es-abstract/2020/ObjectDefineProperties.js b/node_modules/es-abstract/2020/ObjectDefineProperties.js
new file mode 100644
index 000000000..f096f1ede
--- /dev/null
+++ b/node_modules/es-abstract/2020/ObjectDefineProperties.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var Get = require('./Get');
+var ToObject = require('./ToObject');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+
+var forEach = require('../helpers/forEach');
+var getOwnPropertyDescriptor = require('gopd');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var $push = callBound('Array.prototype.push');
+
+// https://262.ecma-international.org/6.0/#sec-objectdefineproperties
+module.exports = function ObjectDefineProperties(O, Properties) {
+ var props = ToObject(Properties); // step 1
+ var keys = OwnPropertyKeys(props); // step 2
+ var descriptors = []; // step 3
+
+ forEach(keys, function (nextKey) { // step 4
+ var propDesc = ToPropertyDescriptor(getOwnPropertyDescriptor(props, nextKey)); // step 4.a
+ if (typeof propDesc !== 'undefined' && propDesc['[[Enumerable]]']) { // step 4.b
+ var descObj = Get(props, nextKey); // step 4.b.i
+ var desc = ToPropertyDescriptor(descObj); // step 4.b.ii
+ $push(descriptors, [nextKey, desc]); // step 4.b.iii
+ }
+ });
+
+ forEach(descriptors, function (pair) { // step 5
+ var P = pair[0]; // step 5.a
+ var desc = pair[1]; // step 5.b
+ desc = FromPropertyDescriptor(desc); // TODO: remove this once DefinePropertyOrThrow is fixed
+ DefinePropertyOrThrow(O, P, desc); // step 5.c
+ });
+
+ return O; // step 6
+};
diff --git a/node_modules/es-abstract/2020/OrdinaryDefineOwnProperty.js b/node_modules/es-abstract/2020/OrdinaryDefineOwnProperty.js
index 5d33aa6d6..34f029f7e 100644
--- a/node_modules/es-abstract/2020/OrdinaryDefineOwnProperty.js
+++ b/node_modules/es-abstract/2020/OrdinaryDefineOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
diff --git a/node_modules/es-abstract/2020/OrdinaryGetOwnProperty.js b/node_modules/es-abstract/2020/OrdinaryGetOwnProperty.js
index 3d11e9fad..fd8035acb 100644
--- a/node_modules/es-abstract/2020/OrdinaryGetOwnProperty.js
+++ b/node_modules/es-abstract/2020/OrdinaryGetOwnProperty.js
@@ -2,7 +2,7 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var callBound = require('call-bind/callBound');
diff --git a/node_modules/es-abstract/2020/OrdinaryObjectCreate.js b/node_modules/es-abstract/2020/OrdinaryObjectCreate.js
index 34810cd11..140534083 100644
--- a/node_modules/es-abstract/2020/OrdinaryObjectCreate.js
+++ b/node_modules/es-abstract/2020/OrdinaryObjectCreate.js
@@ -9,9 +9,13 @@ var $SyntaxError = GetIntrinsic('%SyntaxError%');
var IsArray = require('./IsArray');
var Type = require('./Type');
-var hasProto = !({ __proto__: null } instanceof Object);
+var forEach = require('../helpers/forEach');
-// https://262.ecma-international.org/6.0/#sec-objectcreate
+var SLOT = require('internal-slot');
+
+var hasProto = require('has-proto')();
+
+// https://262.ecma-international.org/11.0/#sec-objectcreate
module.exports = function OrdinaryObjectCreate(proto) {
if (proto !== null && Type(proto) !== 'Object') {
@@ -21,26 +25,32 @@ module.exports = function OrdinaryObjectCreate(proto) {
if (!IsArray(additionalInternalSlotsList)) {
throw new $TypeError('Assertion failed: `additionalInternalSlotsList` must be an Array');
}
- // var internalSlotsList = ['[[Prototype]]', '[[Extensible]]'];
- if (additionalInternalSlotsList.length > 0) {
- throw new $SyntaxError('es-abstract does not yet support internal slots');
- // internalSlotsList.push(...additionalInternalSlotsList);
- }
- // var O = MakeBasicObject(internalSlotsList);
- // setProto(O, proto);
- // return O;
+ // var internalSlotsList = ['[[Prototype]]', '[[Extensible]]']; // step 1
+ // internalSlotsList.push(...additionalInternalSlotsList); // step 2
+ // var O = MakeBasicObject(internalSlotsList); // step 3
+ // setProto(O, proto); // step 4
+ // return O; // step 5
+
+ var O;
if ($ObjectCreate) {
- return $ObjectCreate(proto);
- }
- if (hasProto) {
- return { __proto__: proto };
+ O = $ObjectCreate(proto);
+ } else if (hasProto) {
+ O = { __proto__: proto };
+ } else {
+ if (proto === null) {
+ throw new $SyntaxError('native Object.create support is required to create null objects');
+ }
+ var T = function T() {};
+ T.prototype = proto;
+ O = new T();
}
- if (proto === null) {
- throw new $SyntaxError('native Object.create support is required to create null objects');
+ if (additionalInternalSlotsList.length > 0) {
+ forEach(additionalInternalSlotsList, function (slot) {
+ SLOT.set(O, slot, void undefined);
+ });
}
- var T = function T() {};
- T.prototype = proto;
- return new T();
+
+ return O;
};
diff --git a/node_modules/es-abstract/2020/OrdinarySetPrototypeOf.js b/node_modules/es-abstract/2020/OrdinarySetPrototypeOf.js
index d0ff7a7c2..d2b72306c 100644
--- a/node_modules/es-abstract/2020/OrdinarySetPrototypeOf.js
+++ b/node_modules/es-abstract/2020/OrdinarySetPrototypeOf.js
@@ -16,15 +16,15 @@ module.exports = function OrdinarySetPrototypeOf(O, V) {
throw new $TypeError('Assertion failed: V must be Object or Null');
}
/*
- var extensible = IsExtensible(O);
- var current = OrdinaryGetPrototypeOf(O);
- if (SameValue(V, current)) {
- return true;
- }
- if (!extensible) {
- return false;
- }
- */
+ var extensible = IsExtensible(O);
+ var current = OrdinaryGetPrototypeOf(O);
+ if (SameValue(V, current)) {
+ return true;
+ }
+ if (!extensible) {
+ return false;
+ }
+ */
try {
$setProto(O, V);
} catch (e) {
@@ -32,22 +32,22 @@ module.exports = function OrdinarySetPrototypeOf(O, V) {
}
return OrdinaryGetPrototypeOf(O) === V;
/*
- var p = V;
- var done = false;
- while (!done) {
- if (p === null) {
- done = true;
- } else if (SameValue(p, O)) {
- return false;
- } else {
- if (wat) {
- done = true;
- } else {
- p = p.[[Prototype]];
- }
- }
- }
- O.[[Prototype]] = V;
- return true;
- */
+ var p = V;
+ var done = false;
+ while (!done) {
+ if (p === null) {
+ done = true;
+ } else if (SameValue(p, O)) {
+ return false;
+ } else {
+ if (wat) {
+ done = true;
+ } else {
+ p = p.[[Prototype]];
+ }
+ }
+ }
+ O.[[Prototype]] = V;
+ return true;
+ */
};
diff --git a/node_modules/es-abstract/2020/OrdinaryToPrimitive.js b/node_modules/es-abstract/2020/OrdinaryToPrimitive.js
new file mode 100644
index 000000000..e1dbe1427
--- /dev/null
+++ b/node_modules/es-abstract/2020/OrdinaryToPrimitive.js
@@ -0,0 +1,38 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+var inspect = require('object-inspect');
+
+// https://262.ecma-international.org/8.0/#sec-ordinarytoprimitive
+
+module.exports = function OrdinaryToPrimitive(O, hint) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (/* Type(hint) !== 'String' || */ hint !== 'string' && hint !== 'number') {
+ throw new $TypeError('Assertion failed: `hint` must be "string" or "number"');
+ }
+
+ var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
+
+ for (var i = 0; i < methodNames.length; i += 1) {
+ var name = methodNames[i];
+ var method = Get(O, name);
+ if (IsCallable(method)) {
+ var result = Call(method, O);
+ if (Type(result) !== 'Object') {
+ return result;
+ }
+ }
+ }
+
+ throw new $TypeError('No primitive value for ' + inspect(O));
+};
diff --git a/node_modules/es-abstract/2020/RawBytesToNumeric.js b/node_modules/es-abstract/2020/RawBytesToNumeric.js
new file mode 100644
index 000000000..c253b5d70
--- /dev/null
+++ b/node_modules/es-abstract/2020/RawBytesToNumeric.js
@@ -0,0 +1,156 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $pow = GetIntrinsic('%Math.pow%');
+var $RangeError = GetIntrinsic('%RangeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $BigInt = GetIntrinsic('%BigInt%', true);
+
+var hasOwnProperty = require('./HasOwnProperty');
+var IsArray = require('./IsArray');
+var IsBigIntElementType = require('./IsBigIntElementType');
+var IsUnsignedElementType = require('./IsUnsignedElementType');
+var Type = require('./Type');
+
+var every = require('../helpers/every');
+var isByteValue = require('../helpers/isByteValue');
+
+var $reverse = callBound('Array.prototype.reverse');
+var $slice = callBound('Array.prototype.slice');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/11.0/#table-the-typedarray-constructors
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ BigInt64: 8,
+ BigUint64: 8,
+ Float32: 4,
+ Float64: 8
+};
+
+// https://262.ecma-international.org/11.0/#sec-rawbytestonumeric
+
+module.exports = function RawBytesToNumeric(type, rawBytes, isLittleEndian) {
+ if (!hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (!IsArray(rawBytes) || !every(rawBytes, isByteValue)) {
+ throw new $TypeError('Assertion failed: `rawBytes` must be an Array of bytes');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var elementSize = TypeToSizes[type]; // step 1
+
+ if (rawBytes.length !== elementSize) {
+ // this assertion is not in the spec, but it'd be an editorial error if it were ever violated
+ throw new $RangeError('Assertion failed: `rawBytes` must have a length of ' + elementSize + ' for type ' + type);
+ }
+
+ var isBigInt = IsBigIntElementType(type);
+ if (isBigInt && !$BigInt) {
+ throw new $SyntaxError('this environment does not support BigInts');
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $slice(rawBytes, 0, elementSize);
+ if (!isLittleEndian) {
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $reverse(rawBytes); // step 2
+ }
+
+ /* eslint no-redeclare: 1 */
+ if (type === 'Float32') { // step 3
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary32 value.
+If value is an IEEE 754-2008 binary32 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = (rawBytes[3] & 0x80) >> 7; // first bit
+ var exponent = ((rawBytes[3] & 0x7F) << 1) // 7 bits from index 3
+ | ((rawBytes[2] & 0x80) >> 7); // 1 bit from index 2
+ var mantissa = ((rawBytes[2] & 0x7F) << 16) // 7 bits from index 2
+ | (rawBytes[1] << 8) // 8 bits from index 1
+ | rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign === 0 ? 0 : -0;
+ }
+ if (exponent === 0xFF && mantissa === 0) {
+ return sign === 0 ? Infinity : -Infinity;
+ }
+ if (exponent === 0xFF && mantissa !== 0) {
+ return NaN;
+ }
+
+ exponent -= 127; // subtract the bias
+
+ // return $pow(-1, sign) * mantissa / $pow(2, 23) * $pow(2, exponent);
+ // return $pow(-1, sign) * (mantissa + 0x1000000) * $pow(2, exponent - 23);
+ return $pow(-1, sign) * (1 + (mantissa / $pow(2, 23))) * $pow(2, exponent);
+ }
+
+ if (type === 'Float64') { // step 4
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary64 value.
+If value is an IEEE 754-2008 binary64 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = rawBytes[7] & 0x80 ? -1 : 1; // first bit
+ var exponent = ((rawBytes[7] & 0x7F) << 4) // 7 bits from index 7
+ | ((rawBytes[6] & 0xF0) >> 4); // 4 bits from index 6
+ var mantissa = ((rawBytes[6] & 0x0F) * 0x1000000000000) // 4 bits from index 6
+ + (rawBytes[5] * 0x10000000000) // 8 bits from index 5
+ + (rawBytes[4] * 0x100000000) // 8 bits from index 4
+ + (rawBytes[3] * 0x1000000) // 8 bits from index 3
+ + (rawBytes[2] * 0x10000) // 8 bits from index 2
+ + (rawBytes[1] * 0x100) // 8 bits from index 1
+ + rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign * 0;
+ }
+ if (exponent === 0x7FF && mantissa !== 0) {
+ return NaN;
+ }
+ if (exponent === 0x7FF && mantissa === 0) {
+ return sign * Infinity;
+ }
+
+ exponent -= 1023; // subtract the bias
+
+ return sign * (mantissa + 0x10000000000000) * $pow(2, exponent - 52);
+ }
+
+ // this is common to both branches
+ var intValue = isBigInt ? $BigInt(0) : 0;
+ for (var i = 0; i < rawBytes.length; i++) {
+ intValue |= isBigInt ? $BigInt(rawBytes[i]) << $BigInt(8 * i) : rawBytes[i] << (8 * i);
+ }
+ /*
+ Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of an unsigned little-endian binary number.
+ */
+
+ if (!IsUnsignedElementType(type)) { // steps 5-6
+ // Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of a binary little-endian 2's complement number of bit length elementSize × 8.
+ var bitLength = elementSize * 8;
+ if (bitLength < 32) {
+ var x = isBigInt ? $BigInt(32 - bitLength) : 32 - bitLength;
+ intValue = (intValue << x) >> x;
+ }
+ }
+
+ return intValue; // step 7
+};
diff --git a/node_modules/es-abstract/2020/SameValueNonNumeric.js b/node_modules/es-abstract/2020/SameValueNonNumeric.js
index f7ef12c01..04f6cbfbe 100644
--- a/node_modules/es-abstract/2020/SameValueNonNumeric.js
+++ b/node_modules/es-abstract/2020/SameValueNonNumeric.js
@@ -11,7 +11,7 @@ var Type = require('./Type');
module.exports = function SameValueNonNumeric(x, y) {
var xType = Type(x);
- if (xType === 'Number' || xType === 'Bigint') {
+ if (xType === 'Number' || xType === 'BigInt') {
throw new $TypeError('Assertion failed: SameValueNonNumeric does not accept Number or BigInt values');
}
if (xType !== Type(y)) {
diff --git a/node_modules/es-abstract/2020/Set.js b/node_modules/es-abstract/2020/Set.js
index ea49e813f..097149887 100644
--- a/node_modules/es-abstract/2020/Set.js
+++ b/node_modules/es-abstract/2020/Set.js
@@ -36,12 +36,12 @@ module.exports = function Set(O, P, V, Throw) {
throw new $TypeError('Attempted to assign to readonly property.');
}
return true;
- } else {
- try {
- O[P] = V; // eslint-disable-line no-param-reassign
- return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
- } catch (e) {
- return false;
- }
}
+ try {
+ O[P] = V; // eslint-disable-line no-param-reassign
+ return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
+ } catch (e) {
+ return false;
+ }
+
};
diff --git a/node_modules/es-abstract/2020/SetFunctionName.js b/node_modules/es-abstract/2020/SetFunctionName.js
index f59cb7b9e..03ec2227c 100644
--- a/node_modules/es-abstract/2020/SetFunctionName.js
+++ b/node_modules/es-abstract/2020/SetFunctionName.js
@@ -6,7 +6,7 @@ var has = require('has');
var $TypeError = GetIntrinsic('%TypeError%');
-var getSymbolDescription = require('../helpers/getSymbolDescription');
+var getSymbolDescription = require('get-symbol-description');
var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
var IsExtensible = require('./IsExtensible');
diff --git a/node_modules/es-abstract/2020/SetIntegrityLevel.js b/node_modules/es-abstract/2020/SetIntegrityLevel.js
index 1ac7d61e2..546f3e74f 100644
--- a/node_modules/es-abstract/2020/SetIntegrityLevel.js
+++ b/node_modules/es-abstract/2020/SetIntegrityLevel.js
@@ -4,9 +4,9 @@ var GetIntrinsic = require('get-intrinsic');
var $SyntaxError = GetIntrinsic('%SyntaxError%');
var $TypeError = GetIntrinsic('%TypeError%');
-var $preventExtensions = GetIntrinsic('%Object.preventExtensions%');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $gOPD = require('gopd');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
var forEach = require('../helpers/forEach');
diff --git a/node_modules/es-abstract/2020/StringCreate.js b/node_modules/es-abstract/2020/StringCreate.js
index da0c0ea06..bd02820f7 100644
--- a/node_modules/es-abstract/2020/StringCreate.js
+++ b/node_modules/es-abstract/2020/StringCreate.js
@@ -20,7 +20,7 @@ module.exports = function StringCreate(value, prototype) {
}
var S = $Object(value);
- if (S !== $StringPrototype) {
+ if (prototype !== $StringPrototype) {
if (setProto) {
setProto(S, prototype);
} else {
diff --git a/node_modules/es-abstract/2020/StringToBigInt.js b/node_modules/es-abstract/2020/StringToBigInt.js
new file mode 100644
index 000000000..0bc3cec01
--- /dev/null
+++ b/node_modules/es-abstract/2020/StringToBigInt.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+// https://262.ecma-international.org/11.0/#sec-stringtobigint
+
+module.exports = function StringToBigInt(argument) {
+ if (typeof argument !== 'string') {
+ throw new $TypeError('`argument` must be a string');
+ }
+ if (!$BigInt) {
+ throw new $SyntaxError('BigInts are not supported in this environment');
+ }
+ try {
+ return $BigInt(argument);
+ } catch (e) {
+ return NaN;
+ }
+};
diff --git a/node_modules/es-abstract/2020/TestIntegrityLevel.js b/node_modules/es-abstract/2020/TestIntegrityLevel.js
index cf1649c1b..7f95a6e1d 100644
--- a/node_modules/es-abstract/2020/TestIntegrityLevel.js
+++ b/node_modules/es-abstract/2020/TestIntegrityLevel.js
@@ -2,11 +2,11 @@
var GetIntrinsic = require('get-intrinsic');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');
+var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');
var every = require('../helpers/every');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
var IsDataDescriptor = require('./IsDataDescriptor');
var IsExtensible = require('./IsExtensible');
@@ -26,7 +26,7 @@ module.exports = function TestIntegrityLevel(O, level) {
if (status) {
return false;
}
- var theKeys = $gOPN(O);
+ var theKeys = OwnPropertyKeys(O);
return theKeys.length === 0 || every(theKeys, function (k) {
var currentDesc = $gOPD(O, k);
if (typeof currentDesc !== 'undefined') {
diff --git a/node_modules/es-abstract/2020/ThrowCompletion.js b/node_modules/es-abstract/2020/ThrowCompletion.js
new file mode 100644
index 000000000..b7d388a35
--- /dev/null
+++ b/node_modules/es-abstract/2020/ThrowCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/9.0/#sec-throwcompletion
+
+module.exports = function ThrowCompletion(argument) {
+ return new CompletionRecord('throw', argument);
+};
diff --git a/node_modules/es-abstract/2020/ToBigInt.js b/node_modules/es-abstract/2020/ToBigInt.js
new file mode 100644
index 000000000..aa24d7b71
--- /dev/null
+++ b/node_modules/es-abstract/2020/ToBigInt.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $asIntN = GetIntrinsic('%BigInt.asIntN%', true);
+var $Number = GetIntrinsic('%Number%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var ToPrimitive = require('./ToPrimitive');
+
+// https://262.ecma-international.org/11.0/#sec-tobigint
+
+module.exports = function ToBigInt(argument) {
+ if (!$BigInt) {
+ throw new $SyntaxError('BigInts are not supported in this environment');
+ }
+
+ var prim = ToPrimitive(argument, $Number);
+
+ if (typeof prim === 'number') {
+ return $asIntN(0, prim);
+ }
+ return $BigInt(prim);
+};
diff --git a/node_modules/es-abstract/2020/ToBigInt64.js b/node_modules/es-abstract/2020/ToBigInt64.js
new file mode 100644
index 000000000..65c1c55d9
--- /dev/null
+++ b/node_modules/es-abstract/2020/ToBigInt64.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $pow = GetIntrinsic('%Math.pow%');
+
+var ToBigInt = require('./ToBigInt');
+var BigIntRemainder = require('./BigInt/remainder');
+
+var modBigInt = require('../helpers/modBigInt');
+
+// BigInt(2**63), but node v10.4-v10.8 have a bug where you can't `BigInt(x)` anything larger than MAX_SAFE_INTEGER
+var twoSixtyThree = $BigInt && (BigInt($pow(2, 32)) * BigInt($pow(2, 31)));
+
+// BigInt(2**64), but node v10.4-v10.8 have a bug where you can't `BigInt(x)` anything larger than MAX_SAFE_INTEGER
+var twoSixtyFour = $BigInt && (BigInt($pow(2, 32)) * BigInt($pow(2, 32)));
+
+// https://262.ecma-international.org/11.0/#sec-tobigint64
+
+module.exports = function ToBigInt64(argument) {
+ var n = ToBigInt(argument);
+ var int64bit = modBigInt(BigIntRemainder, n, twoSixtyFour);
+ return int64bit >= twoSixtyThree ? int64bit - twoSixtyFour : int64bit;
+};
diff --git a/node_modules/es-abstract/2020/ToBigUint64.js b/node_modules/es-abstract/2020/ToBigUint64.js
new file mode 100644
index 000000000..ff68236a8
--- /dev/null
+++ b/node_modules/es-abstract/2020/ToBigUint64.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $pow = GetIntrinsic('%Math.pow%');
+
+var ToBigInt = require('./ToBigInt');
+var BigIntRemainder = require('./BigInt/remainder');
+
+var modBigInt = require('../helpers/modBigInt');
+
+// BigInt(2**64), but node v10.4-v10.8 have a bug where you can't `BigInt(x)` anything larger than MAX_SAFE_INTEGER
+var twoSixtyFour = $BigInt && (BigInt($pow(2, 32)) * BigInt($pow(2, 32)));
+
+// https://262.ecma-international.org/11.0/#sec-tobiguint64
+
+module.exports = function ToBigUint64(argument) {
+ var n = ToBigInt(argument);
+ var int64bit = modBigInt(BigIntRemainder, n, twoSixtyFour);
+ return int64bit;
+};
diff --git a/node_modules/es-abstract/2020/ToNumber.js b/node_modules/es-abstract/2020/ToNumber.js
index fcddeb66f..c9e29f2c4 100644
--- a/node_modules/es-abstract/2020/ToNumber.js
+++ b/node_modules/es-abstract/2020/ToNumber.js
@@ -8,7 +8,7 @@ var $RegExp = GetIntrinsic('%RegExp%');
var $parseInteger = GetIntrinsic('%parseInt%');
var callBound = require('call-bind/callBound');
-var regexTester = require('../helpers/regexTester');
+var regexTester = require('safe-regex-test');
var isPrimitive = require('../helpers/isPrimitive');
var $strSlice = callBound('String.prototype.slice');
@@ -51,12 +51,12 @@ module.exports = function ToNumber(argument) {
return ToNumber($parseInteger($strSlice(value, 2), 8));
} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {
return NaN;
- } else {
- var trimmed = $trim(value);
- if (trimmed !== value) {
- return ToNumber(trimmed);
- }
}
+ var trimmed = $trim(value);
+ if (trimmed !== value) {
+ return ToNumber(trimmed);
+ }
+
}
return $Number(value);
};
diff --git a/node_modules/es-abstract/2020/ValidateAtomicAccess.js b/node_modules/es-abstract/2020/ValidateAtomicAccess.js
new file mode 100644
index 000000000..e1c51c776
--- /dev/null
+++ b/node_modules/es-abstract/2020/ValidateAtomicAccess.js
@@ -0,0 +1,36 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToIndex = require('./ToIndex');
+
+var isTypedArray = require('is-typed-array');
+var typedArrayLength = require('typed-array-length');
+
+// https://262.ecma-international.org/8.0/#sec-validateatomicaccess
+
+module.exports = function ValidateAtomicAccess(typedArray, requestIndex) {
+ if (!isTypedArray(typedArray)) {
+ throw new $TypeError('Assertion failed: `typedArray` must be a TypedArray'); // step 1
+ }
+
+ var accessIndex = ToIndex(requestIndex); // step 2
+
+ var length = typedArrayLength(typedArray); // step 3
+
+ /*
+ // this assertion can never be reached
+ if (!(accessIndex >= 0)) {
+ throw new $TypeError('Assertion failed: accessIndex >= 0'); // step 4
+ }
+ */
+
+ if (accessIndex >= length) {
+ throw new $RangeError('index out of range'); // step 5
+ }
+
+ return accessIndex; // step 6
+};
diff --git a/node_modules/es-abstract/2020/ValidateTypedArray.js b/node_modules/es-abstract/2020/ValidateTypedArray.js
new file mode 100644
index 000000000..83df3a81c
--- /dev/null
+++ b/node_modules/es-abstract/2020/ValidateTypedArray.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var $taSome = callBound('%TypedArray.prototype.some%', true);
+
+var Type = require('./Type');
+
+var isTypedArray = require('is-typed-array');
+
+// https://262.ecma-international.org/6.0/#sec-validatetypedarray
+
+module.exports = function ValidateTypedArray(O) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!isTypedArray(O)) {
+ throw new $TypeError('Assertion failed: O must be a TypedArray');
+ }
+
+ // without `.some` (like in node 0.10), there's no way to check buffer detachment, but also no way to be detached
+ if ($taSome) {
+ $taSome(O, function () { return true; });
+ }
+
+ return O.buffer;
+};
diff --git a/node_modules/es-abstract/2020/floor.js b/node_modules/es-abstract/2020/floor.js
index 8439df064..625548e93 100644
--- a/node_modules/es-abstract/2020/floor.js
+++ b/node_modules/es-abstract/2020/floor.js
@@ -1,11 +1,16 @@
'use strict';
+var Type = require('./Type');
+
// var modulo = require('./modulo');
var $floor = Math.floor;
-// http://262.ecma-international.org/5.1/#sec-5.2
+// http://262.ecma-international.org/11.0/#eqn-floor
module.exports = function floor(x) {
// return x - modulo(x, 1);
+ if (Type(x) === 'BigInt') {
+ return x;
+ }
return $floor(x);
};
diff --git a/node_modules/es-abstract/2020/max.js b/node_modules/es-abstract/2020/max.js
new file mode 100644
index 000000000..b919d4e83
--- /dev/null
+++ b/node_modules/es-abstract/2020/max.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.max%');
diff --git a/node_modules/es-abstract/2020/min.js b/node_modules/es-abstract/2020/min.js
new file mode 100644
index 000000000..909de4b0e
--- /dev/null
+++ b/node_modules/es-abstract/2020/min.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.min%');
diff --git a/node_modules/es-abstract/2021/AbstractEqualityComparison.js b/node_modules/es-abstract/2021/AbstractEqualityComparison.js
new file mode 100644
index 000000000..83b294967
--- /dev/null
+++ b/node_modules/es-abstract/2021/AbstractEqualityComparison.js
@@ -0,0 +1,57 @@
+'use strict';
+
+var StrictEqualityComparison = require('./StrictEqualityComparison');
+var StringToBigInt = require('./StringToBigInt');
+var ToNumber = require('./ToNumber');
+var ToPrimitive = require('./ToPrimitive');
+var Type = require('./Type');
+
+var isNaN = require('../helpers/isNaN');
+
+// https://ecma-international.org/ecma-262/11.0/#sec-abstract-equality-comparison
+
+module.exports = function AbstractEqualityComparison(x, y) {
+ var xType = Type(x);
+ var yType = Type(y);
+ if (xType === yType) {
+ return StrictEqualityComparison(x, y);
+ }
+ if (x == null && y == null) {
+ return true;
+ }
+ if (xType === 'Number' && yType === 'String') {
+ return AbstractEqualityComparison(x, ToNumber(y));
+ }
+ if (xType === 'String' && yType === 'Number') {
+ return AbstractEqualityComparison(ToNumber(x), y);
+ }
+ if (xType === 'BigInt' && yType === 'String') {
+ var n = StringToBigInt(y);
+ if (isNaN(n)) {
+ return false;
+ }
+ return AbstractEqualityComparison(x, n);
+ }
+ if (xType === 'String' && yType === 'BigInt') {
+ return AbstractEqualityComparison(y, x);
+ }
+ if (xType === 'Boolean') {
+ return AbstractEqualityComparison(ToNumber(x), y);
+ }
+ if (yType === 'Boolean') {
+ return AbstractEqualityComparison(x, ToNumber(y));
+ }
+ if ((xType === 'String' || xType === 'Number' || xType === 'BigInt' || xType === 'Symbol') && yType === 'Object') {
+ return AbstractEqualityComparison(x, ToPrimitive(y));
+ }
+ if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'BigInt' || yType === 'Symbol')) {
+ return AbstractEqualityComparison(ToPrimitive(x), y);
+ }
+ if ((xType === 'BigInt' && yType === 'Number') || (xType === 'Number' && yType === 'BigInt')) {
+ if (isNaN(x) || isNaN(y) || x === Infinity || y === Infinity || x === -Infinity || y === -Infinity) {
+ return false;
+ }
+ return x == y; // eslint-disable-line eqeqeq
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2021/AbstractRelationalComparison.js b/node_modules/es-abstract/2021/AbstractRelationalComparison.js
new file mode 100644
index 000000000..9076d71e2
--- /dev/null
+++ b/node_modules/es-abstract/2021/AbstractRelationalComparison.js
@@ -0,0 +1,82 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Number = GetIntrinsic('%Number%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $isNaN = require('../helpers/isNaN');
+
+var IsStringPrefix = require('./IsStringPrefix');
+var StringToBigInt = require('./StringToBigInt');
+var ToNumeric = require('./ToNumeric');
+var ToPrimitive = require('./ToPrimitive');
+var Type = require('./Type');
+
+var BigIntLessThan = require('./BigInt/lessThan');
+var NumberLessThan = require('./Number/lessThan');
+
+// https://262.ecma-international.org/9.0/#sec-abstract-relational-comparison
+
+// eslint-disable-next-line max-statements, max-lines-per-function
+module.exports = function AbstractRelationalComparison(x, y, LeftFirst) {
+ if (Type(LeftFirst) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean');
+ }
+ var px;
+ var py;
+ if (LeftFirst) {
+ px = ToPrimitive(x, $Number);
+ py = ToPrimitive(y, $Number);
+ } else {
+ py = ToPrimitive(y, $Number);
+ px = ToPrimitive(x, $Number);
+ }
+ if (Type(px) === 'String' && Type(py) === 'String') {
+ if (IsStringPrefix(py, px)) {
+ return false;
+ }
+ if (IsStringPrefix(px, py)) {
+ return true;
+ }
+ return px < py; // both strings, neither a prefix of the other. shortcut for steps 3 c-f
+ }
+
+ var pxType = Type(px);
+ var pyType = Type(py);
+ var nx;
+ var ny;
+ if (pxType === 'BigInt' && pyType === 'String') {
+ ny = StringToBigInt(py);
+ if ($isNaN(ny)) {
+ return void undefined;
+ }
+ return BigIntLessThan(px, ny);
+ }
+ if (pxType === 'String' && pyType === 'BigInt') {
+ nx = StringToBigInt(px);
+ if ($isNaN(nx)) {
+ return void undefined;
+ }
+ return BigIntLessThan(nx, py);
+ }
+
+ nx = ToNumeric(px);
+ ny = ToNumeric(py);
+ var nxType = Type(nx);
+ if (nxType === Type(ny)) {
+ return nxType === 'Number' ? NumberLessThan(nx, ny) : BigIntLessThan(nx, ny);
+ }
+
+ if ($isNaN(nx) || $isNaN(ny)) {
+ return void undefined;
+ }
+ if (nx === -Infinity || ny === Infinity) {
+ return true;
+ }
+ if (nx === Infinity || ny === -Infinity) {
+ return false;
+ }
+
+ return nx < ny; // by now, these are both nonzero, finite, and not equal
+};
diff --git a/node_modules/es-abstract/2021/AddEntriesFromIterable.js b/node_modules/es-abstract/2021/AddEntriesFromIterable.js
new file mode 100644
index 000000000..a0a5e71bd
--- /dev/null
+++ b/node_modules/es-abstract/2021/AddEntriesFromIterable.js
@@ -0,0 +1,52 @@
+'use strict';
+
+var inspect = require('object-inspect');
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var Get = require('./Get');
+var GetIterator = require('./GetIterator');
+var IsCallable = require('./IsCallable');
+var IteratorClose = require('./IteratorClose');
+var IteratorStep = require('./IteratorStep');
+var IteratorValue = require('./IteratorValue');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/10.0//#sec-add-entries-from-iterable
+
+module.exports = function AddEntriesFromIterable(target, iterable, adder) {
+ if (!IsCallable(adder)) {
+ throw new $TypeError('Assertion failed: `adder` is not callable');
+ }
+ if (iterable == null) {
+ throw new $TypeError('Assertion failed: `iterable` is present, and not nullish');
+ }
+ var iteratorRecord = GetIterator(iterable);
+ while (true) { // eslint-disable-line no-constant-condition
+ var next = IteratorStep(iteratorRecord);
+ if (!next) {
+ return target;
+ }
+ var nextItem = IteratorValue(next);
+ if (Type(nextItem) !== 'Object') {
+ var error = new $TypeError('iterator next must return an Object, got ' + inspect(nextItem));
+ return IteratorClose(
+ iteratorRecord,
+ function () { throw error; } // eslint-disable-line no-loop-func
+ );
+ }
+ try {
+ var k = Get(nextItem, '0');
+ var v = Get(nextItem, '1');
+ Call(adder, target, [k, v]);
+ } catch (e) {
+ return IteratorClose(
+ iteratorRecord,
+ function () { throw e; }
+ );
+ }
+ }
+};
diff --git a/node_modules/es-abstract/2021/AddToKeptObjects.js b/node_modules/es-abstract/2021/AddToKeptObjects.js
new file mode 100644
index 000000000..c3088d999
--- /dev/null
+++ b/node_modules/es-abstract/2021/AddToKeptObjects.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+var SLOT = require('internal-slot');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ClearKeptObjects = require('./ClearKeptObjects');
+var Type = require('./Type');
+
+var $push = callBound('Array.prototype.push');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-addtokeptobjects
+
+module.exports = function AddToKeptObjects(object) {
+ if (Type(object) !== 'Object') {
+ throw new $TypeError('Assertion failed: `object` must be an Object');
+ }
+ $push(SLOT.get(ClearKeptObjects, '[[es-abstract internal: KeptAlive]]'), object);
+};
diff --git a/node_modules/es-abstract/2021/AdvanceStringIndex.js b/node_modules/es-abstract/2021/AdvanceStringIndex.js
new file mode 100644
index 000000000..eeae53125
--- /dev/null
+++ b/node_modules/es-abstract/2021/AdvanceStringIndex.js
@@ -0,0 +1,34 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var CodePointAt = require('./CodePointAt');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-advancestringindex
+
+module.exports = function AdvanceStringIndex(S, index, unicode) {
+ if (Type(S) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a String');
+ }
+ if (!IsIntegralNumber(index) || index < 0 || index > MAX_SAFE_INTEGER) {
+ throw new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53');
+ }
+ if (Type(unicode) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `unicode` must be a Boolean');
+ }
+ if (!unicode) {
+ return index + 1;
+ }
+ var length = S.length;
+ if ((index + 1) >= length) {
+ return index + 1;
+ }
+ var cp = CodePointAt(S, index);
+ return index + cp['[[CodeUnitCount]]'];
+};
diff --git a/node_modules/es-abstract/2021/ApplyStringOrNumericBinaryOperator.js b/node_modules/es-abstract/2021/ApplyStringOrNumericBinaryOperator.js
new file mode 100644
index 000000000..824a10543
--- /dev/null
+++ b/node_modules/es-abstract/2021/ApplyStringOrNumericBinaryOperator.js
@@ -0,0 +1,80 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var HasOwnProperty = require('./HasOwnProperty');
+var ToNumeric = require('./ToNumeric');
+var ToPrimitive = require('./ToPrimitive');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+var NumberAdd = require('./Number/add');
+var NumberBitwiseAND = require('./Number/bitwiseAND');
+var NumberBitwiseOR = require('./Number/bitwiseOR');
+var NumberBitwiseXOR = require('./Number/bitwiseXOR');
+var NumberDivide = require('./Number/divide');
+var NumberExponentiate = require('./Number/exponentiate');
+var NumberLeftShift = require('./Number/leftShift');
+var NumberMultiply = require('./Number/multiply');
+var NumberRemainder = require('./Number/remainder');
+var NumberSignedRightShift = require('./Number/signedRightShift');
+var NumberSubtract = require('./Number/subtract');
+var NumberUnsignedRightShift = require('./Number/unsignedRightShift');
+var BigIntAdd = require('./BigInt/add');
+var BigIntBitwiseAND = require('./BigInt/bitwiseAND');
+var BigIntBitwiseOR = require('./BigInt/bitwiseOR');
+var BigIntBitwiseXOR = require('./BigInt/bitwiseXOR');
+var BigIntDivide = require('./BigInt/divide');
+var BigIntExponentiate = require('./BigInt/exponentiate');
+var BigIntLeftShift = require('./BigInt/leftShift');
+var BigIntMultiply = require('./BigInt/multiply');
+var BigIntRemainder = require('./BigInt/remainder');
+var BigIntSignedRightShift = require('./BigInt/signedRightShift');
+var BigIntSubtract = require('./BigInt/subtract');
+var BigIntUnsignedRightShift = require('./BigInt/unsignedRightShift');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-applystringornumericbinaryoperator
+
+// https://ecma-international.org/ecma-262/12.0/#step-applystringornumericbinaryoperator-operations-table
+var table = {
+ '**': [NumberExponentiate, BigIntExponentiate],
+ '*': [NumberMultiply, BigIntMultiply],
+ '/': [NumberDivide, BigIntDivide],
+ '%': [NumberRemainder, BigIntRemainder],
+ '+': [NumberAdd, BigIntAdd],
+ '-': [NumberSubtract, BigIntSubtract],
+ '<<': [NumberLeftShift, BigIntLeftShift],
+ '>>': [NumberSignedRightShift, BigIntSignedRightShift],
+ '>>>': [NumberUnsignedRightShift, BigIntUnsignedRightShift],
+ '&': [NumberBitwiseAND, BigIntBitwiseAND],
+ '^': [NumberBitwiseXOR, BigIntBitwiseXOR],
+ '|': [NumberBitwiseOR, BigIntBitwiseOR]
+};
+
+module.exports = function ApplyStringOrNumericBinaryOperator(lval, opText, rval) {
+ if (Type(opText) !== 'String' || !HasOwnProperty(table, opText)) {
+ throw new $TypeError('Assertion failed: `opText` must be a valid operation string');
+ }
+ if (opText === '+') {
+ var lprim = ToPrimitive(lval);
+ var rprim = ToPrimitive(rval);
+ if (Type(lprim) === 'String' || Type(rprim) === 'String') {
+ var lstr = ToString(lprim);
+ var rstr = ToString(rprim);
+ return lstr + rstr;
+ }
+ /* eslint no-param-reassign: 1 */
+ lval = lprim;
+ rval = rprim;
+ }
+ var lnum = ToNumeric(lval);
+ var rnum = ToNumeric(rval);
+ var T = Type(lnum);
+ if (T !== Type(rnum)) {
+ throw new $TypeError('types of ' + lnum + ' and ' + rnum + ' differ');
+ }
+ var Operation = table[opText][T === 'BigInt' ? 1 : 0];
+ return Operation(lnum, rnum);
+};
diff --git a/node_modules/es-abstract/2021/ArrayCreate.js b/node_modules/es-abstract/2021/ArrayCreate.js
new file mode 100644
index 000000000..e138d2db9
--- /dev/null
+++ b/node_modules/es-abstract/2021/ArrayCreate.js
@@ -0,0 +1,54 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $ArrayPrototype = GetIntrinsic('%Array.prototype%');
+var $RangeError = GetIntrinsic('%RangeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+
+var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
+
+var hasProto = require('has-proto')();
+
+var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || (
+ hasProto
+ ? function (O, proto) {
+ O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
+ return O;
+ }
+ : null
+);
+
+// https://www.ecma-international.org/ecma-262/12.0/#sec-arraycreate
+
+module.exports = function ArrayCreate(length) {
+ if (!IsIntegralNumber(length) || length < 0) {
+ throw new $TypeError('Assertion failed: `length` must be an integer Number >= 0');
+ }
+ if (length > MAX_ARRAY_LENGTH) {
+ throw new $RangeError('length is greater than (2**32 - 1)');
+ }
+ var proto = arguments.length > 1 ? arguments[1] : $ArrayPrototype;
+ var A = []; // steps 3, 5
+ if (proto !== $ArrayPrototype) { // step 4
+ if (!$setProto) {
+ throw new $SyntaxError('ArrayCreate: a `proto` argument that is not `Array.prototype` is not supported in an environment that does not support setting the [[Prototype]]');
+ }
+ $setProto(A, proto);
+ }
+ if (length !== 0) { // bypasses the need for step 6
+ A.length = length;
+ }
+ /* step 6, the above as a shortcut for the below
+ OrdinaryDefineOwnProperty(A, 'length', {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': true
+ });
+ */
+ return A;
+};
diff --git a/node_modules/es-abstract/2021/ArraySetLength.js b/node_modules/es-abstract/2021/ArraySetLength.js
new file mode 100644
index 000000000..08db9c2e9
--- /dev/null
+++ b/node_modules/es-abstract/2021/ArraySetLength.js
@@ -0,0 +1,85 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var assign = require('object.assign');
+
+var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
+
+var IsArray = require('./IsArray');
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var OrdinaryDefineOwnProperty = require('./OrdinaryDefineOwnProperty');
+var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty');
+var ToNumber = require('./ToNumber');
+var ToString = require('./ToString');
+var ToUint32 = require('./ToUint32');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-arraysetlength
+
+// eslint-disable-next-line max-statements, max-lines-per-function
+module.exports = function ArraySetLength(A, Desc) {
+ if (!IsArray(A)) {
+ throw new $TypeError('Assertion failed: A must be an Array');
+ }
+ if (!isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, Desc)) {
+ throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
+ }
+ if (!('[[Value]]' in Desc)) {
+ return OrdinaryDefineOwnProperty(A, 'length', Desc);
+ }
+ var newLenDesc = assign({}, Desc);
+ var newLen = ToUint32(Desc['[[Value]]']);
+ var numberLen = ToNumber(Desc['[[Value]]']);
+ if (newLen !== numberLen) {
+ throw new $RangeError('Invalid array length');
+ }
+ newLenDesc['[[Value]]'] = newLen;
+ var oldLenDesc = OrdinaryGetOwnProperty(A, 'length');
+ if (!IsDataDescriptor(oldLenDesc)) {
+ throw new $TypeError('Assertion failed: an array had a non-data descriptor on `length`');
+ }
+ var oldLen = oldLenDesc['[[Value]]'];
+ if (newLen >= oldLen) {
+ return OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
+ }
+ if (!oldLenDesc['[[Writable]]']) {
+ return false;
+ }
+ var newWritable;
+ if (!('[[Writable]]' in newLenDesc) || newLenDesc['[[Writable]]']) {
+ newWritable = true;
+ } else {
+ newWritable = false;
+ newLenDesc['[[Writable]]'] = true;
+ }
+ var succeeded = OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
+ if (!succeeded) {
+ return false;
+ }
+ while (newLen < oldLen) {
+ oldLen -= 1;
+ // eslint-disable-next-line no-param-reassign
+ var deleteSucceeded = delete A[ToString(oldLen)];
+ if (!deleteSucceeded) {
+ newLenDesc['[[Value]]'] = oldLen + 1;
+ if (!newWritable) {
+ newLenDesc['[[Writable]]'] = false;
+ OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
+ return false;
+ }
+ }
+ }
+ if (!newWritable) {
+ return OrdinaryDefineOwnProperty(A, 'length', { '[[Writable]]': false });
+ }
+ return true;
+};
diff --git a/node_modules/es-abstract/2021/ArraySpeciesCreate.js b/node_modules/es-abstract/2021/ArraySpeciesCreate.js
new file mode 100644
index 000000000..d908fa351
--- /dev/null
+++ b/node_modules/es-abstract/2021/ArraySpeciesCreate.js
@@ -0,0 +1,48 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $species = GetIntrinsic('%Symbol.species%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ArrayCreate = require('./ArrayCreate');
+var Get = require('./Get');
+var IsArray = require('./IsArray');
+var IsConstructor = require('./IsConstructor');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-arrayspeciescreate
+
+module.exports = function ArraySpeciesCreate(originalArray, length) {
+ if (!IsIntegralNumber(length) || length < 0) {
+ throw new $TypeError('Assertion failed: length must be an integer >= 0');
+ }
+
+ var isArray = IsArray(originalArray);
+ if (!isArray) {
+ return ArrayCreate(length);
+ }
+
+ var C = Get(originalArray, 'constructor');
+ // TODO: figure out how to make a cross-realm normal Array, a same-realm Array
+ // if (IsConstructor(C)) {
+ // if C is another realm's Array, C = undefined
+ // Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ?
+ // }
+ if ($species && Type(C) === 'Object') {
+ C = Get(C, $species);
+ if (C === null) {
+ C = void 0;
+ }
+ }
+
+ if (typeof C === 'undefined') {
+ return ArrayCreate(length);
+ }
+ if (!IsConstructor(C)) {
+ throw new $TypeError('C must be a constructor');
+ }
+ return new C(length); // Construct(C, length);
+};
+
diff --git a/node_modules/es-abstract/2021/AsyncFromSyncIteratorContinuation.js b/node_modules/es-abstract/2021/AsyncFromSyncIteratorContinuation.js
new file mode 100644
index 000000000..c1cc7a111
--- /dev/null
+++ b/node_modules/es-abstract/2021/AsyncFromSyncIteratorContinuation.js
@@ -0,0 +1,45 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Promise = GetIntrinsic('%Promise%', true);
+
+var callBound = require('call-bind/callBound');
+
+var CreateIterResultObject = require('./CreateIterResultObject');
+var IteratorComplete = require('./IteratorComplete');
+var IteratorValue = require('./IteratorValue');
+var PromiseResolve = require('./PromiseResolve');
+var Type = require('./Type');
+
+var $then = callBound('Promise.prototype.then', true);
+
+// https://ecma-international.org/ecma-262/10.0/#sec-asyncfromsynciteratorcontinuation
+
+module.exports = function AsyncFromSyncIteratorContinuation(result) {
+ if (Type(result) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (arguments.length > 1) {
+ throw new $SyntaxError('although AsyncFromSyncIteratorContinuation should take a second argument, it is not used in this implementation');
+ }
+
+ if (!$Promise) {
+ throw new $SyntaxError('This environment does not support Promises.');
+ }
+
+ return new Promise(function (resolve) {
+ var done = IteratorComplete(result); // step 2
+ var value = IteratorValue(result); // step 4
+ var valueWrapper = PromiseResolve($Promise, value); // step 6
+
+ // eslint-disable-next-line no-shadow
+ var onFulfilled = function (value) { // steps 8-9
+ return CreateIterResultObject(value, done); // step 8.a
+ };
+ resolve($then(valueWrapper, onFulfilled)); // step 11
+ }); // step 12
+};
diff --git a/node_modules/es-abstract/2021/AsyncIteratorClose.js b/node_modules/es-abstract/2021/AsyncIteratorClose.js
new file mode 100644
index 000000000..1ae42c0c5
--- /dev/null
+++ b/node_modules/es-abstract/2021/AsyncIteratorClose.js
@@ -0,0 +1,68 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Promise = GetIntrinsic('%Promise%', true);
+
+var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
+var GetMethod = require('./GetMethod');
+var Type = require('./Type');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var callBound = require('call-bind/callBound');
+
+var $then = callBound('Promise.prototype.then', true);
+
+// https://262.ecma-international.org/12.0/#sec-asynciteratorclose
+
+module.exports = function AsyncIteratorClose(iteratorRecord, completion) {
+ assertRecord(Type, 'Iterator Record', 'iteratorRecord', iteratorRecord); // step 1
+
+ if (!(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a Completion Record instance'); // step 2
+ }
+
+ if (!$then) {
+ throw new $SyntaxError('This environment does not support Promises.');
+ }
+
+ var iterator = iteratorRecord['[[Iterator]]']; // step 3
+
+ return $then(
+ $then(
+ $then(
+ new $Promise(function (resolve) {
+ resolve(GetMethod(iterator, 'return')); // step 4
+ // resolve(Call(ret, iterator, [])); // step 6
+ }),
+ function (returnV) { // step 5.a
+ if (typeof returnV === 'undefined') {
+ return completion; // step 5.b
+ }
+ return Call(returnV, iterator); // step 5.c, 5.d.
+ }
+ ),
+ null,
+ function (e) {
+ if (completion.type() === 'throw') {
+ completion['?'](); // step 6
+ } else {
+ throw e; // step 7
+ }
+ }
+ ),
+ function (innerResult) { // step 8
+ if (completion.type() === 'throw') {
+ completion['?'](); // step 6
+ }
+ if (Type(innerResult) !== 'Object') {
+ throw new $TypeError('`innerResult` must be an Object'); // step 10
+ }
+ return completion;
+ }
+ );
+};
diff --git a/node_modules/es-abstract/2021/BigInt/add.js b/node_modules/es-abstract/2021/BigInt/add.js
new file mode 100644
index 000000000..22b5db4b3
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/add.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-add
+
+module.exports = function BigIntAdd(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ // shortcut for the actual spec mechanics
+ return x + y;
+};
diff --git a/node_modules/es-abstract/2021/BigInt/bitwiseAND.js b/node_modules/es-abstract/2021/BigInt/bitwiseAND.js
new file mode 100644
index 000000000..83cd2c3ca
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/bitwiseAND.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var BigIntBitwiseOp = require('../BigIntBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseAND
+
+module.exports = function BigIntBitwiseAND(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+ return BigIntBitwiseOp('&', x, y);
+};
diff --git a/node_modules/es-abstract/2021/BigInt/bitwiseNOT.js b/node_modules/es-abstract/2021/BigInt/bitwiseNOT.js
new file mode 100644
index 000000000..9a444dfea
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/bitwiseNOT.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseNOT
+
+module.exports = function BigIntBitwiseNOT(x) {
+ if (Type(x) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` argument must be a BigInt');
+ }
+ return -x - $BigInt(1);
+};
diff --git a/node_modules/es-abstract/2021/BigInt/bitwiseOR.js b/node_modules/es-abstract/2021/BigInt/bitwiseOR.js
new file mode 100644
index 000000000..3c1b57193
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/bitwiseOR.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var BigIntBitwiseOp = require('../BigIntBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseOR
+
+module.exports = function BigIntBitwiseOR(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+ return BigIntBitwiseOp('|', x, y);
+};
diff --git a/node_modules/es-abstract/2021/BigInt/bitwiseXOR.js b/node_modules/es-abstract/2021/BigInt/bitwiseXOR.js
new file mode 100644
index 000000000..45f8217ef
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/bitwiseXOR.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var BigIntBitwiseOp = require('../BigIntBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseXOR
+
+module.exports = function BigIntBitwiseXOR(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+ return BigIntBitwiseOp('^', x, y);
+};
diff --git a/node_modules/es-abstract/2021/BigInt/divide.js b/node_modules/es-abstract/2021/BigInt/divide.js
new file mode 100644
index 000000000..5706e7d72
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/divide.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-divide
+
+module.exports = function BigIntDivide(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+ if (y === $BigInt(0)) {
+ throw new $RangeError('Division by zero');
+ }
+ // shortcut for the actual spec mechanics
+ return x / y;
+};
diff --git a/node_modules/es-abstract/2021/BigInt/equal.js b/node_modules/es-abstract/2021/BigInt/equal.js
new file mode 100644
index 000000000..a28826d67
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/equal.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-equal
+
+module.exports = function BigIntEqual(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+ // shortcut for the actual spec mechanics
+ return x === y;
+};
diff --git a/node_modules/es-abstract/2021/BigInt/exponentiate.js b/node_modules/es-abstract/2021/BigInt/exponentiate.js
new file mode 100644
index 000000000..2365838c2
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/exponentiate.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-exponentiate
+
+module.exports = function BigIntExponentiate(base, exponent) {
+ if (Type(base) !== 'BigInt' || Type(exponent) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `base` and `exponent` arguments must be BigInts');
+ }
+ if (exponent < $BigInt(0)) {
+ throw new $RangeError('Exponent must be positive');
+ }
+ if (/* base === $BigInt(0) && */ exponent === $BigInt(0)) {
+ return $BigInt(1);
+ }
+
+ var square = base;
+ var remaining = exponent;
+ while (remaining > $BigInt(0)) {
+ square += exponent;
+ --remaining; // eslint-disable-line no-plusplus
+ }
+ return square;
+};
diff --git a/node_modules/es-abstract/2021/BigInt/index.js b/node_modules/es-abstract/2021/BigInt/index.js
new file mode 100644
index 000000000..63ec52da6
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/index.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var add = require('./add');
+var bitwiseAND = require('./bitwiseAND');
+var bitwiseNOT = require('./bitwiseNOT');
+var bitwiseOR = require('./bitwiseOR');
+var bitwiseXOR = require('./bitwiseXOR');
+var divide = require('./divide');
+var equal = require('./equal');
+var exponentiate = require('./exponentiate');
+var leftShift = require('./leftShift');
+var lessThan = require('./lessThan');
+var multiply = require('./multiply');
+var remainder = require('./remainder');
+var sameValue = require('./sameValue');
+var sameValueZero = require('./sameValueZero');
+var signedRightShift = require('./signedRightShift');
+var subtract = require('./subtract');
+var toString = require('./toString');
+var unaryMinus = require('./unaryMinus');
+var unsignedRightShift = require('./unsignedRightShift');
+
+module.exports = {
+ add: add,
+ bitwiseAND: bitwiseAND,
+ bitwiseNOT: bitwiseNOT,
+ bitwiseOR: bitwiseOR,
+ bitwiseXOR: bitwiseXOR,
+ divide: divide,
+ equal: equal,
+ exponentiate: exponentiate,
+ leftShift: leftShift,
+ lessThan: lessThan,
+ multiply: multiply,
+ remainder: remainder,
+ sameValue: sameValue,
+ sameValueZero: sameValueZero,
+ signedRightShift: signedRightShift,
+ subtract: subtract,
+ toString: toString,
+ unaryMinus: unaryMinus,
+ unsignedRightShift: unsignedRightShift
+};
diff --git a/node_modules/es-abstract/2021/BigInt/leftShift.js b/node_modules/es-abstract/2021/BigInt/leftShift.js
new file mode 100644
index 000000000..d2a570223
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/leftShift.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-leftShift
+
+module.exports = function BigIntLeftShift(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ // shortcut for the actual spec mechanics
+ return x << y;
+};
diff --git a/node_modules/es-abstract/2021/BigInt/lessThan.js b/node_modules/es-abstract/2021/BigInt/lessThan.js
new file mode 100644
index 000000000..0b3cd6ba0
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/lessThan.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-lessThan
+
+module.exports = function BigIntLessThan(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ // shortcut for the actual spec mechanics
+ return x < y;
+};
diff --git a/node_modules/es-abstract/2021/BigInt/multiply.js b/node_modules/es-abstract/2021/BigInt/multiply.js
new file mode 100644
index 000000000..6e5d56c83
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/multiply.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-multiply
+
+module.exports = function BigIntMultiply(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ // shortcut for the actual spec mechanics
+ return x * y;
+};
diff --git a/node_modules/es-abstract/2021/BigInt/remainder.js b/node_modules/es-abstract/2021/BigInt/remainder.js
new file mode 100644
index 000000000..d2dc678ca
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/remainder.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+var zero = $BigInt && $BigInt(0);
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-remainder
+
+module.exports = function BigIntRemainder(n, d) {
+ if (Type(n) !== 'BigInt' || Type(d) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `n` and `d` arguments must be BigInts');
+ }
+
+ if (d === zero) {
+ throw new $RangeError('Division by zero');
+ }
+
+ if (n === zero) {
+ return zero;
+ }
+
+ // shortcut for the actual spec mechanics
+ return n % d;
+};
diff --git a/node_modules/es-abstract/2021/BigInt/sameValue.js b/node_modules/es-abstract/2021/BigInt/sameValue.js
new file mode 100644
index 000000000..63ff06393
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/sameValue.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+var BigIntEqual = require('./equal');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-sameValue
+
+module.exports = function BigIntSameValue(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ return BigIntEqual(x, y);
+};
diff --git a/node_modules/es-abstract/2021/BigInt/sameValueZero.js b/node_modules/es-abstract/2021/BigInt/sameValueZero.js
new file mode 100644
index 000000000..39f262c6d
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/sameValueZero.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+var BigIntEqual = require('./equal');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-sameValueZero
+
+module.exports = function BigIntSameValueZero(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ return BigIntEqual(x, y);
+};
diff --git a/node_modules/es-abstract/2021/BigInt/signedRightShift.js b/node_modules/es-abstract/2021/BigInt/signedRightShift.js
new file mode 100644
index 000000000..f63c642f0
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/signedRightShift.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+var BigIntLeftShift = require('./leftShift');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-signedRightShift
+
+module.exports = function BigIntSignedRightShift(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ return BigIntLeftShift(x, -y);
+};
diff --git a/node_modules/es-abstract/2021/BigInt/subtract.js b/node_modules/es-abstract/2021/BigInt/subtract.js
new file mode 100644
index 000000000..0490784f6
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/subtract.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-subtract
+
+module.exports = function BigIntSubtract(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ // shortcut for the actual spec mechanics
+ return x - y;
+};
diff --git a/node_modules/es-abstract/2021/BigInt/toString.js b/node_modules/es-abstract/2021/BigInt/toString.js
new file mode 100644
index 000000000..858d95545
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/toString.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $String = GetIntrinsic('%String%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-tostring
+
+module.exports = function BigIntToString(x) {
+ if (Type(x) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` must be a BigInt');
+ }
+
+ return $String(x);
+};
diff --git a/node_modules/es-abstract/2021/BigInt/unaryMinus.js b/node_modules/es-abstract/2021/BigInt/unaryMinus.js
new file mode 100644
index 000000000..ee0f7ef19
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/unaryMinus.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+var zero = $BigInt && $BigInt(0);
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-unaryMinus
+
+module.exports = function BigIntUnaryMinus(x) {
+ if (Type(x) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` argument must be a BigInt');
+ }
+
+ if (x === zero) {
+ return zero;
+ }
+
+ return -x;
+};
diff --git a/node_modules/es-abstract/2021/BigInt/unsignedRightShift.js b/node_modules/es-abstract/2021/BigInt/unsignedRightShift.js
new file mode 100644
index 000000000..7ad94f7a8
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigInt/unsignedRightShift.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-unsignedRightShift
+
+module.exports = function BigIntUnsignedRightShift(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ throw new $TypeError('BigInts have no unsigned right shift, use >> instead');
+};
diff --git a/node_modules/es-abstract/2021/BigIntBitwiseOp.js b/node_modules/es-abstract/2021/BigIntBitwiseOp.js
new file mode 100644
index 000000000..0b1c03a91
--- /dev/null
+++ b/node_modules/es-abstract/2021/BigIntBitwiseOp.js
@@ -0,0 +1,66 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+// var $BigInt = GetIntrinsic('%BigInt%', true);
+// var $pow = GetIntrinsic('%Math.pow%');
+
+// var BinaryAnd = require('./BinaryAnd');
+// var BinaryOr = require('./BinaryOr');
+// var BinaryXor = require('./BinaryXor');
+var Type = require('./Type');
+// var modulo = require('./modulo');
+
+// var zero = $BigInt && $BigInt(0);
+// var negOne = $BigInt && $BigInt(-1);
+// var two = $BigInt && $BigInt(2);
+
+// https://262.ecma-international.org/11.0/#sec-bigintbitwiseop
+
+module.exports = function BigIntBitwiseOp(op, x, y) {
+ if (op !== '&' && op !== '|' && op !== '^') {
+ throw new $TypeError('Assertion failed: `op` must be `&`, `|`, or `^`');
+ }
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('`x` and `y` must be BigInts');
+ }
+
+ if (op === '&') {
+ return x & y;
+ }
+ if (op === '|') {
+ return x | y;
+ }
+ return x ^ y;
+ /*
+ var result = zero;
+ var shift = 0;
+ while (x !== zero && x !== negOne && y !== zero && y !== negOne) {
+ var xDigit = modulo(x, two);
+ var yDigit = modulo(y, two);
+ if (op === '&') {
+ result += $pow(2, shift) * BinaryAnd(xDigit, yDigit);
+ } else if (op === '|') {
+ result += $pow(2, shift) * BinaryOr(xDigit, yDigit);
+ } else if (op === '^') {
+ result += $pow(2, shift) * BinaryXor(xDigit, yDigit);
+ }
+ shift += 1;
+ x = (x - xDigit) / two;
+ y = (y - yDigit) / two;
+ }
+ var tmp;
+ if (op === '&') {
+ tmp = BinaryAnd(modulo(x, two), modulo(y, two));
+ } else if (op === '|') {
+ tmp = BinaryAnd(modulo(x, two), modulo(y, two));
+ } else {
+ tmp = BinaryXor(modulo(x, two), modulo(y, two));
+ }
+ if (tmp !== 0) {
+ result -= $pow(2, shift);
+ }
+ return result;
+ */
+};
diff --git a/node_modules/es-abstract/2021/BinaryAnd.js b/node_modules/es-abstract/2021/BinaryAnd.js
new file mode 100644
index 000000000..c617f388d
--- /dev/null
+++ b/node_modules/es-abstract/2021/BinaryAnd.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+// https://262.ecma-international.org/11.0/#sec-binaryand
+
+module.exports = function BinaryAnd(x, y) {
+ if ((x !== 0 && x !== 1) || (y !== 0 && y !== 1)) {
+ throw new $TypeError('Assertion failed: `x` and `y` must be either 0 or 1');
+ }
+ return x & y;
+};
diff --git a/node_modules/es-abstract/2021/BinaryOr.js b/node_modules/es-abstract/2021/BinaryOr.js
new file mode 100644
index 000000000..6de0955f1
--- /dev/null
+++ b/node_modules/es-abstract/2021/BinaryOr.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+// https://262.ecma-international.org/11.0/#sec-binaryor
+
+module.exports = function BinaryOr(x, y) {
+ if ((x !== 0 && x !== 1) || (y !== 0 && y !== 1)) {
+ throw new $TypeError('Assertion failed: `x` and `y` must be either 0 or 1');
+ }
+ return x | y;
+};
diff --git a/node_modules/es-abstract/2021/BinaryXor.js b/node_modules/es-abstract/2021/BinaryXor.js
new file mode 100644
index 000000000..189d7d846
--- /dev/null
+++ b/node_modules/es-abstract/2021/BinaryXor.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+// https://262.ecma-international.org/11.0/#sec-binaryxor
+
+module.exports = function BinaryXor(x, y) {
+ if ((x !== 0 && x !== 1) || (y !== 0 && y !== 1)) {
+ throw new $TypeError('Assertion failed: `x` and `y` must be either 0 or 1');
+ }
+ return x ^ y;
+};
diff --git a/node_modules/es-abstract/2021/ByteListBitwiseOp.js b/node_modules/es-abstract/2021/ByteListBitwiseOp.js
new file mode 100644
index 000000000..4e3c1f10b
--- /dev/null
+++ b/node_modules/es-abstract/2021/ByteListBitwiseOp.js
@@ -0,0 +1,44 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $push = callBound('Array.prototype.push');
+
+var IsArray = require('./IsArray');
+
+var isByteValue = require('../helpers/isByteValue');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-bytelistbitwiseop
+
+module.exports = function ByteListBitwiseOp(op, xBytes, yBytes) {
+ if (op !== '&' && op !== '^' && op !== '|') {
+ throw new $TypeError('Assertion failed: `op` must be `&`, `^`, or `|`');
+ }
+ if (!IsArray(xBytes) || !IsArray(yBytes) || xBytes.length !== yBytes.length) {
+ throw new $TypeError('Assertion failed: `xBytes` and `yBytes` must be same-length sequences of byte values (an integer 0-255, inclusive)');
+ }
+
+ var result = [];
+
+ for (var i = 0; i < xBytes.length; i += 1) {
+ var xByte = xBytes[i];
+ var yByte = yBytes[i];
+ if (!isByteValue(xByte) || !isByteValue(yByte)) {
+ throw new $TypeError('Assertion failed: `xBytes` and `yBytes` must be same-length sequences of byte values (an integer 0-255, inclusive)');
+ }
+ var resultByte;
+ if (op === '&') {
+ resultByte = xByte & yByte;
+ } else if (op === '^') {
+ resultByte = xByte ^ yByte;
+ } else {
+ resultByte = xByte | yByte;
+ }
+ $push(result, resultByte);
+ }
+
+ return result;
+};
diff --git a/node_modules/es-abstract/2021/ByteListEqual.js b/node_modules/es-abstract/2021/ByteListEqual.js
new file mode 100644
index 000000000..adc2378e7
--- /dev/null
+++ b/node_modules/es-abstract/2021/ByteListEqual.js
@@ -0,0 +1,33 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsArray = require('./IsArray');
+
+var isByteValue = require('../helpers/isByteValue');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-bytelistequal
+
+module.exports = function ByteListEqual(xBytes, yBytes) {
+ if (!IsArray(xBytes) || !IsArray(yBytes)) {
+ throw new $TypeError('Assertion failed: `xBytes` and `yBytes` must be sequences of byte values (an integer 0-255, inclusive)');
+ }
+
+ if (xBytes.length !== yBytes.length) {
+ return false;
+ }
+
+ for (var i = 0; i < xBytes.length; i += 1) {
+ var xByte = xBytes[i];
+ var yByte = yBytes[i];
+ if (!isByteValue(xByte) || !isByteValue(yByte)) {
+ throw new $TypeError('Assertion failed: `xBytes` and `yBytes` must be sequences of byte values (an integer 0-255, inclusive)');
+ }
+ if (xByte !== yByte) {
+ return false;
+ }
+ }
+ return true;
+};
diff --git a/node_modules/es-abstract/2021/Call.js b/node_modules/es-abstract/2021/Call.js
new file mode 100644
index 000000000..4b238c691
--- /dev/null
+++ b/node_modules/es-abstract/2021/Call.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsArray = require('./IsArray');
+
+var $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('%Function.prototype.apply%');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-call
+
+module.exports = function Call(F, V) {
+ var argumentsList = arguments.length > 2 ? arguments[2] : [];
+ if (!IsArray(argumentsList)) {
+ throw new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');
+ }
+ return $apply(F, V, argumentsList);
+};
diff --git a/node_modules/es-abstract/2021/CanonicalNumericIndexString.js b/node_modules/es-abstract/2021/CanonicalNumericIndexString.js
new file mode 100644
index 000000000..feb878c03
--- /dev/null
+++ b/node_modules/es-abstract/2021/CanonicalNumericIndexString.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var SameValue = require('./SameValue');
+var ToNumber = require('./ToNumber');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring
+
+module.exports = function CanonicalNumericIndexString(argument) {
+ if (Type(argument) !== 'String') {
+ throw new $TypeError('Assertion failed: `argument` must be a String');
+ }
+ if (argument === '-0') { return -0; }
+ var n = ToNumber(argument);
+ if (SameValue(ToString(n), argument)) { return n; }
+ return void 0;
+};
diff --git a/node_modules/es-abstract/2021/CharacterRange.js b/node_modules/es-abstract/2021/CharacterRange.js
new file mode 100644
index 000000000..70e4b5235
--- /dev/null
+++ b/node_modules/es-abstract/2021/CharacterRange.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $charCodeAt = callBound('%String.prototype.charCodeAt%');
+var $push = callBound('%Array.prototype.push%');
+
+module.exports = function CharacterRange(A, B) {
+ if (A.length !== 1 || B.length !== 1) {
+ throw new $TypeError('Assertion failed: CharSets A and B contain exactly one character');
+ }
+
+ var a = A[0];
+ var b = B[0];
+
+ var i = $charCodeAt(a, 0);
+ var j = $charCodeAt(b, 0);
+
+ if (!(i <= j)) {
+ throw new $TypeError('Assertion failed: i is not <= j');
+ }
+
+ var arr = [];
+ for (var k = i; k <= j; k += 1) {
+ $push(arr, $fromCharCode(k));
+ }
+ return arr;
+};
diff --git a/node_modules/es-abstract/2021/ClearKeptObjects.js b/node_modules/es-abstract/2021/ClearKeptObjects.js
new file mode 100644
index 000000000..9397f5966
--- /dev/null
+++ b/node_modules/es-abstract/2021/ClearKeptObjects.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var SLOT = require('internal-slot');
+var keptObjects = [];
+
+// https://ecma-international.org/ecma-262/12.0/#sec-clear-kept-objects
+
+module.exports = function ClearKeptObjects() {
+ keptObjects.length = 0;
+};
+
+SLOT.set(module.exports, '[[es-abstract internal: KeptAlive]]', keptObjects);
diff --git a/node_modules/es-abstract/2021/CodePointAt.js b/node_modules/es-abstract/2021/CodePointAt.js
new file mode 100644
index 000000000..7a9ac1be7
--- /dev/null
+++ b/node_modules/es-abstract/2021/CodePointAt.js
@@ -0,0 +1,58 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var callBound = require('call-bind/callBound');
+var isLeadingSurrogate = require('../helpers/isLeadingSurrogate');
+var isTrailingSurrogate = require('../helpers/isTrailingSurrogate');
+
+var Type = require('./Type');
+var UTF16SurrogatePairToCodePoint = require('./UTF16SurrogatePairToCodePoint');
+
+var $charAt = callBound('String.prototype.charAt');
+var $charCodeAt = callBound('String.prototype.charCodeAt');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-codepointat
+
+module.exports = function CodePointAt(string, position) {
+ if (Type(string) !== 'String') {
+ throw new $TypeError('Assertion failed: `string` must be a String');
+ }
+ var size = string.length;
+ if (position < 0 || position >= size) {
+ throw new $TypeError('Assertion failed: `position` must be >= 0, and < the length of `string`');
+ }
+ var first = $charCodeAt(string, position);
+ var cp = $charAt(string, position);
+ var firstIsLeading = isLeadingSurrogate(first);
+ var firstIsTrailing = isTrailingSurrogate(first);
+ if (!firstIsLeading && !firstIsTrailing) {
+ return {
+ '[[CodePoint]]': cp,
+ '[[CodeUnitCount]]': 1,
+ '[[IsUnpairedSurrogate]]': false
+ };
+ }
+ if (firstIsTrailing || (position + 1 === size)) {
+ return {
+ '[[CodePoint]]': cp,
+ '[[CodeUnitCount]]': 1,
+ '[[IsUnpairedSurrogate]]': true
+ };
+ }
+ var second = $charCodeAt(string, position + 1);
+ if (!isTrailingSurrogate(second)) {
+ return {
+ '[[CodePoint]]': cp,
+ '[[CodeUnitCount]]': 1,
+ '[[IsUnpairedSurrogate]]': true
+ };
+ }
+
+ return {
+ '[[CodePoint]]': UTF16SurrogatePairToCodePoint(first, second),
+ '[[CodeUnitCount]]': 2,
+ '[[IsUnpairedSurrogate]]': false
+ };
+};
diff --git a/node_modules/es-abstract/2021/CodePointsToString.js b/node_modules/es-abstract/2021/CodePointsToString.js
new file mode 100644
index 000000000..403126cd2
--- /dev/null
+++ b/node_modules/es-abstract/2021/CodePointsToString.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var UTF16EncodeCodePoint = require('./UTF16EncodeCodePoint');
+var IsArray = require('./IsArray');
+
+var forEach = require('../helpers/forEach');
+var isCodePoint = require('../helpers/isCodePoint');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-codepointstostring
+
+module.exports = function CodePointsToString(text) {
+ if (!IsArray(text)) {
+ throw new $TypeError('Assertion failed: `text` must be a sequence of Unicode Code Points');
+ }
+ var result = '';
+ forEach(text, function (cp) {
+ if (!isCodePoint(cp)) {
+ throw new $TypeError('Assertion failed: `text` must be a sequence of Unicode Code Points');
+ }
+ result += UTF16EncodeCodePoint(cp);
+ });
+ return result;
+};
diff --git a/node_modules/es-abstract/2021/CompletePropertyDescriptor.js b/node_modules/es-abstract/2021/CompletePropertyDescriptor.js
new file mode 100644
index 000000000..548bf415a
--- /dev/null
+++ b/node_modules/es-abstract/2021/CompletePropertyDescriptor.js
@@ -0,0 +1,39 @@
+'use strict';
+
+var has = require('has');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsGenericDescriptor = require('./IsGenericDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor
+
+module.exports = function CompletePropertyDescriptor(Desc) {
+ /* eslint no-param-reassign: 0 */
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
+
+ if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) {
+ if (!has(Desc, '[[Value]]')) {
+ Desc['[[Value]]'] = void 0;
+ }
+ if (!has(Desc, '[[Writable]]')) {
+ Desc['[[Writable]]'] = false;
+ }
+ } else {
+ if (!has(Desc, '[[Get]]')) {
+ Desc['[[Get]]'] = void 0;
+ }
+ if (!has(Desc, '[[Set]]')) {
+ Desc['[[Set]]'] = void 0;
+ }
+ }
+ if (!has(Desc, '[[Enumerable]]')) {
+ Desc['[[Enumerable]]'] = false;
+ }
+ if (!has(Desc, '[[Configurable]]')) {
+ Desc['[[Configurable]]'] = false;
+ }
+ return Desc;
+};
diff --git a/node_modules/es-abstract/2021/CompletionRecord.js b/node_modules/es-abstract/2021/CompletionRecord.js
new file mode 100644
index 000000000..370a5677f
--- /dev/null
+++ b/node_modules/es-abstract/2021/CompletionRecord.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var SLOT = require('internal-slot');
+
+// https://262.ecma-international.org/7.0/#sec-completion-record-specification-type
+
+var CompletionRecord = function CompletionRecord(type, value) {
+ if (!(this instanceof CompletionRecord)) {
+ return new CompletionRecord(type, value);
+ }
+ if (type !== 'normal' && type !== 'break' && type !== 'continue' && type !== 'return' && type !== 'throw') {
+ throw new $SyntaxError('Assertion failed: `type` must be one of "normal", "break", "continue", "return", or "throw"');
+ }
+ SLOT.set(this, '[[Type]]', type);
+ SLOT.set(this, '[[Value]]', value);
+ // [[Target]] slot?
+};
+
+CompletionRecord.prototype.type = function Type() {
+ return SLOT.get(this, '[[Type]]');
+};
+
+CompletionRecord.prototype.value = function Value() {
+ return SLOT.get(this, '[[Value]]');
+};
+
+CompletionRecord.prototype['?'] = function ReturnIfAbrupt() {
+ var type = SLOT.get(this, '[[Type]]');
+ var value = SLOT.get(this, '[[Value]]');
+
+ if (type === 'normal') {
+ return value;
+ }
+ if (type === 'throw') {
+ throw value;
+ }
+ throw new $SyntaxError('Completion Record is not of type "normal" or "throw": other types not supported');
+};
+
+CompletionRecord.prototype['!'] = function assert() {
+ var type = SLOT.get(this, '[[Type]]');
+
+ if (type !== 'normal') {
+ throw new $SyntaxError('Assertion failed: Completion Record is not of type "normal"');
+ }
+ return SLOT.get(this, '[[Value]]');
+};
+
+module.exports = CompletionRecord;
diff --git a/node_modules/es-abstract/2021/CopyDataProperties.js b/node_modules/es-abstract/2021/CopyDataProperties.js
new file mode 100644
index 000000000..bbb5d6f0a
--- /dev/null
+++ b/node_modules/es-abstract/2021/CopyDataProperties.js
@@ -0,0 +1,70 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var forEach = require('../helpers/forEach');
+var every = require('../helpers/every');
+var some = require('../helpers/some');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
+
+var CreateDataPropertyOrThrow = require('./CreateDataPropertyOrThrow');
+var Get = require('./Get');
+var IsArray = require('./IsArray');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var ToNumber = require('./ToNumber');
+var ToObject = require('./ToObject');
+var Type = require('./Type');
+
+// https://www.ecma-international.org/ecma-262/12.0/#sec-copydataproperties
+
+module.exports = function CopyDataProperties(target, source, excludedItems) {
+ if (Type(target) !== 'Object') {
+ throw new $TypeError('Assertion failed: "target" must be an Object');
+ }
+
+ if (!IsArray(excludedItems) || !every(excludedItems, IsPropertyKey)) {
+ throw new $TypeError('Assertion failed: "excludedItems" must be a List of Property Keys');
+ }
+
+ if (typeof source === 'undefined' || source === null) {
+ return target;
+ }
+
+ var from = ToObject(source);
+
+ var keys = OwnPropertyKeys(from);
+ forEach(keys, function (nextKey) {
+ var excluded = some(excludedItems, function (e) {
+ return SameValue(e, nextKey) === true;
+ });
+ /*
+ var excluded = false;
+
+ forEach(excludedItems, function (e) {
+ if (SameValue(e, nextKey) === true) {
+ excluded = true;
+ }
+ });
+ */
+
+ var enumerable = $isEnumerable(from, nextKey) || (
+ // this is to handle string keys being non-enumerable in older engines
+ typeof source === 'string'
+ && nextKey >= 0
+ && IsIntegralNumber(ToNumber(nextKey))
+ );
+ if (excluded === false && enumerable) {
+ var propValue = Get(from, nextKey);
+ CreateDataPropertyOrThrow(target, nextKey, propValue);
+ }
+ });
+
+ return target;
+};
diff --git a/node_modules/es-abstract/2021/CreateAsyncFromSyncIterator.js b/node_modules/es-abstract/2021/CreateAsyncFromSyncIterator.js
new file mode 100644
index 000000000..693321d51
--- /dev/null
+++ b/node_modules/es-abstract/2021/CreateAsyncFromSyncIterator.js
@@ -0,0 +1,121 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var AsyncFromSyncIteratorContinuation = require('./AsyncFromSyncIteratorContinuation');
+var Call = require('./Call');
+var CreateIterResultObject = require('./CreateIterResultObject');
+var Get = require('./Get');
+var GetMethod = require('./GetMethod');
+var IteratorNext = require('./IteratorNext');
+var OrdinaryObjectCreate = require('./OrdinaryObjectCreate');
+var Type = require('./Type');
+
+var SLOT = require('internal-slot');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var $AsyncFromSyncIteratorPrototype = GetIntrinsic('%AsyncFromSyncIteratorPrototype%', true) || {
+ next: function next(value) {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var argsLength = arguments.length;
+
+ return new Promise(function (resolve) { // step 3
+ var syncIteratorRecord = SLOT.get(O, '[[SyncIteratorRecord]]'); // step 4
+ var result;
+ if (argsLength > 0) {
+ result = IteratorNext(syncIteratorRecord['[[Iterator]]'], value); // step 5.a
+ } else { // step 6
+ result = IteratorNext(syncIteratorRecord['[[Iterator]]']);// step 6.a
+ }
+ resolve(AsyncFromSyncIteratorContinuation(result)); // step 8
+ });
+ },
+ 'return': function () {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var valueIsPresent = arguments.length > 0;
+ var value = valueIsPresent ? arguments[0] : void undefined;
+
+ return new Promise(function (resolve, reject) { // step 3
+ var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4
+ var iteratorReturn = GetMethod(syncIterator, 'return'); // step 5
+
+ if (typeof iteratorReturn === 'undefined') { // step 7
+ var iterResult = CreateIterResultObject(value, true); // step 7.a
+ Call(resolve, undefined, [iterResult]); // step 7.b
+ return;
+ }
+ var result;
+ if (valueIsPresent) { // step 8
+ result = Call(iteratorReturn, syncIterator, [value]); // step 8.a
+ } else { // step 9
+ result = Call(iteratorReturn, syncIterator); // step 9.a
+ }
+ if (Type(result) !== 'Object') { // step 11
+ Call(reject, undefined, [new $TypeError('Iterator `return` method returned a non-object value.')]); // step 11.a
+ return;
+ }
+
+ resolve(AsyncFromSyncIteratorContinuation(result)); // step 12
+ });
+ },
+ 'throw': function () {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var valueIsPresent = arguments.length > 0;
+ var value = valueIsPresent ? arguments[0] : void undefined;
+
+ return new Promise(function (resolve, reject) { // step 3
+ var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4
+
+ var throwMethod = GetMethod(syncIterator, 'throw'); // step 5
+
+ if (typeof throwMethod === 'undefined') { // step 7
+ Call(reject, undefined, [value]); // step 7.a
+ return;
+ }
+
+ var result;
+ if (valueIsPresent) { // step 8
+ result = Call(throwMethod, syncIterator, [value]); // step 8.a
+ } else { // step 9
+ result = Call(throwMethod, syncIterator); // step 9.a
+ }
+ if (Type(result) !== 'Object') { // step 11
+ Call(reject, undefined, [new $TypeError('Iterator `throw` method returned a non-object value.')]); // step 11.a
+ return;
+ }
+
+ resolve(AsyncFromSyncIteratorContinuation(result/* , promiseCapability */)); // step 12
+ });
+ }
+};
+
+// https://ecma-international.org/ecma-262/11.0/#sec-createasyncfromsynciterator
+
+module.exports = function CreateAsyncFromSyncIterator(syncIteratorRecord) {
+ assertRecord(Type, 'Iterator Record', 'syncIteratorRecord', syncIteratorRecord);
+
+ // var asyncIterator = OrdinaryObjectCreate(%AsyncFromSyncIteratorPrototype%, « [[SyncIteratorRecord]] »); // step 1
+ var asyncIterator = OrdinaryObjectCreate($AsyncFromSyncIteratorPrototype);
+
+ SLOT.set(asyncIterator, '[[SyncIteratorRecord]]', syncIteratorRecord); // step 2
+
+ var nextMethod = Get(asyncIterator, 'next'); // step 3
+
+ return { // steps 3-4
+ '[[Iterator]]': asyncIterator,
+ '[[NextMethod]]': nextMethod,
+ '[[Done]]': false
+ };
+};
diff --git a/node_modules/es-abstract/2021/CreateDataProperty.js b/node_modules/es-abstract/2021/CreateDataProperty.js
new file mode 100644
index 000000000..02c6cd1f8
--- /dev/null
+++ b/node_modules/es-abstract/2021/CreateDataProperty.js
@@ -0,0 +1,45 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DefineOwnProperty = require('../helpers/DefineOwnProperty');
+
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsExtensible = require('./IsExtensible');
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-createdataproperty
+
+module.exports = function CreateDataProperty(O, P, V) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+ var oldDesc = OrdinaryGetOwnProperty(O, P);
+ var extensible = !oldDesc || IsExtensible(O);
+ var nonConfigurable = oldDesc && !oldDesc['[[Configurable]]'];
+ if (nonConfigurable || !extensible) {
+ return false;
+ }
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ {
+ '[[Configurable]]': true,
+ '[[Enumerable]]': true,
+ '[[Value]]': V,
+ '[[Writable]]': true
+ }
+ );
+};
diff --git a/node_modules/es-abstract/2021/CreateDataPropertyOrThrow.js b/node_modules/es-abstract/2021/CreateDataPropertyOrThrow.js
new file mode 100644
index 000000000..2f7c410ba
--- /dev/null
+++ b/node_modules/es-abstract/2021/CreateDataPropertyOrThrow.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var CreateDataProperty = require('./CreateDataProperty');
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// // https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow
+
+module.exports = function CreateDataPropertyOrThrow(O, P, V) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+ var success = CreateDataProperty(O, P, V);
+ if (!success) {
+ throw new $TypeError('unable to create data property');
+ }
+ return success;
+};
diff --git a/node_modules/es-abstract/2021/CreateHTML.js b/node_modules/es-abstract/2021/CreateHTML.js
new file mode 100644
index 000000000..ccded1e65
--- /dev/null
+++ b/node_modules/es-abstract/2021/CreateHTML.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $replace = callBound('String.prototype.replace');
+
+var RequireObjectCoercible = require('./RequireObjectCoercible');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-createhtml
+
+module.exports = function CreateHTML(string, tag, attribute, value) {
+ if (Type(tag) !== 'String' || Type(attribute) !== 'String') {
+ throw new $TypeError('Assertion failed: `tag` and `attribute` must be strings');
+ }
+ var str = RequireObjectCoercible(string);
+ var S = ToString(str);
+ var p1 = '<' + tag;
+ if (attribute !== '') {
+ var V = ToString(value);
+ var escapedV = $replace(V, /\x22/g, '"');
+ p1 += '\x20' + attribute + '\x3D\x22' + escapedV + '\x22';
+ }
+ return p1 + '>' + S + '' + tag + '>';
+};
diff --git a/node_modules/es-abstract/2021/CreateIterResultObject.js b/node_modules/es-abstract/2021/CreateIterResultObject.js
new file mode 100644
index 000000000..eea77a512
--- /dev/null
+++ b/node_modules/es-abstract/2021/CreateIterResultObject.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject
+
+module.exports = function CreateIterResultObject(value, done) {
+ if (Type(done) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: Type(done) is not Boolean');
+ }
+ return {
+ value: value,
+ done: done
+ };
+};
diff --git a/node_modules/es-abstract/2021/CreateListFromArrayLike.js b/node_modules/es-abstract/2021/CreateListFromArrayLike.js
new file mode 100644
index 000000000..40293127d
--- /dev/null
+++ b/node_modules/es-abstract/2021/CreateListFromArrayLike.js
@@ -0,0 +1,44 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $indexOf = callBound('Array.prototype.indexOf', true) || callBound('String.prototype.indexOf');
+var $push = callBound('Array.prototype.push');
+
+var Get = require('./Get');
+var IsArray = require('./IsArray');
+var LengthOfArrayLike = require('./LengthOfArrayLike');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/11.0/#sec-createlistfromarraylike
+
+module.exports = function CreateListFromArrayLike(obj) {
+ var elementTypes = arguments.length > 1
+ ? arguments[1]
+ : ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'BigInt', 'Object'];
+
+ if (Type(obj) !== 'Object') {
+ throw new $TypeError('Assertion failed: `obj` must be an Object');
+ }
+ if (!IsArray(elementTypes)) {
+ throw new $TypeError('Assertion failed: `elementTypes`, if provided, must be an array');
+ }
+ var len = LengthOfArrayLike(obj);
+ var list = [];
+ var index = 0;
+ while (index < len) {
+ var indexName = ToString(index);
+ var next = Get(obj, indexName);
+ var nextType = Type(next);
+ if ($indexOf(elementTypes, nextType) < 0) {
+ throw new $TypeError('item type ' + nextType + ' is not a valid elementType');
+ }
+ $push(list, next);
+ index += 1;
+ }
+ return list;
+};
diff --git a/node_modules/es-abstract/2021/CreateMethodProperty.js b/node_modules/es-abstract/2021/CreateMethodProperty.js
new file mode 100644
index 000000000..53274a561
--- /dev/null
+++ b/node_modules/es-abstract/2021/CreateMethodProperty.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DefineOwnProperty = require('../helpers/DefineOwnProperty');
+
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-createmethodproperty
+
+module.exports = function CreateMethodProperty(O, P, V) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+
+ var newDesc = {
+ '[[Configurable]]': true,
+ '[[Enumerable]]': false,
+ '[[Value]]': V,
+ '[[Writable]]': true
+ };
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ newDesc
+ );
+};
diff --git a/node_modules/es-abstract/2021/CreateRegExpStringIterator.js b/node_modules/es-abstract/2021/CreateRegExpStringIterator.js
new file mode 100644
index 000000000..cdfae5621
--- /dev/null
+++ b/node_modules/es-abstract/2021/CreateRegExpStringIterator.js
@@ -0,0 +1,100 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var hasSymbols = require('has-symbols')();
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var IteratorPrototype = GetIntrinsic('%IteratorPrototype%', true);
+
+var AdvanceStringIndex = require('./AdvanceStringIndex');
+var CreateIterResultObject = require('./CreateIterResultObject');
+var CreateMethodProperty = require('./CreateMethodProperty');
+var Get = require('./Get');
+var OrdinaryObjectCreate = require('./OrdinaryObjectCreate');
+var RegExpExec = require('./RegExpExec');
+var Set = require('./Set');
+var ToLength = require('./ToLength');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+var SLOT = require('internal-slot');
+var setToStringTag = require('es-set-tostringtag');
+
+var RegExpStringIterator = function RegExpStringIterator(R, S, global, fullUnicode) {
+ if (Type(S) !== 'String') {
+ throw new $TypeError('`S` must be a string');
+ }
+ if (Type(global) !== 'Boolean') {
+ throw new $TypeError('`global` must be a boolean');
+ }
+ if (Type(fullUnicode) !== 'Boolean') {
+ throw new $TypeError('`fullUnicode` must be a boolean');
+ }
+ SLOT.set(this, '[[IteratingRegExp]]', R);
+ SLOT.set(this, '[[IteratedString]]', S);
+ SLOT.set(this, '[[Global]]', global);
+ SLOT.set(this, '[[Unicode]]', fullUnicode);
+ SLOT.set(this, '[[Done]]', false);
+};
+
+if (IteratorPrototype) {
+ RegExpStringIterator.prototype = OrdinaryObjectCreate(IteratorPrototype);
+}
+
+var RegExpStringIteratorNext = function next() {
+ var O = this; // eslint-disable-line no-invalid-this
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('receiver must be an object');
+ }
+ if (
+ !(O instanceof RegExpStringIterator)
+ || !SLOT.has(O, '[[IteratingRegExp]]')
+ || !SLOT.has(O, '[[IteratedString]]')
+ || !SLOT.has(O, '[[Global]]')
+ || !SLOT.has(O, '[[Unicode]]')
+ || !SLOT.has(O, '[[Done]]')
+ ) {
+ throw new $TypeError('"this" value must be a RegExpStringIterator instance');
+ }
+ if (SLOT.get(O, '[[Done]]')) {
+ return CreateIterResultObject(undefined, true);
+ }
+ var R = SLOT.get(O, '[[IteratingRegExp]]');
+ var S = SLOT.get(O, '[[IteratedString]]');
+ var global = SLOT.get(O, '[[Global]]');
+ var fullUnicode = SLOT.get(O, '[[Unicode]]');
+ var match = RegExpExec(R, S);
+ if (match === null) {
+ SLOT.set(O, '[[Done]]', true);
+ return CreateIterResultObject(undefined, true);
+ }
+ if (global) {
+ var matchStr = ToString(Get(match, '0'));
+ if (matchStr === '') {
+ var thisIndex = ToLength(Get(R, 'lastIndex'));
+ var nextIndex = AdvanceStringIndex(S, thisIndex, fullUnicode);
+ Set(R, 'lastIndex', nextIndex, true);
+ }
+ return CreateIterResultObject(match, false);
+ }
+ SLOT.set(O, '[[Done]]', true);
+ return CreateIterResultObject(match, false);
+};
+CreateMethodProperty(RegExpStringIterator.prototype, 'next', RegExpStringIteratorNext);
+
+if (hasSymbols) {
+ setToStringTag(RegExpStringIterator.prototype, 'RegExp String Iterator');
+
+ if (Symbol.iterator && typeof RegExpStringIterator.prototype[Symbol.iterator] !== 'function') {
+ var iteratorFn = function SymbolIterator() {
+ return this;
+ };
+ CreateMethodProperty(RegExpStringIterator.prototype, Symbol.iterator, iteratorFn);
+ }
+}
+
+// https://262.ecma-international.org/11.0/#sec-createregexpstringiterator
+module.exports = function CreateRegExpStringIterator(R, S, global, fullUnicode) {
+ // assert R.global === global && R.unicode === fullUnicode?
+ return new RegExpStringIterator(R, S, global, fullUnicode);
+};
diff --git a/node_modules/es-abstract/2021/DateFromTime.js b/node_modules/es-abstract/2021/DateFromTime.js
new file mode 100644
index 000000000..20e4f2e4d
--- /dev/null
+++ b/node_modules/es-abstract/2021/DateFromTime.js
@@ -0,0 +1,54 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $EvalError = GetIntrinsic('%EvalError%');
+
+var DayWithinYear = require('./DayWithinYear');
+var InLeapYear = require('./InLeapYear');
+var MonthFromTime = require('./MonthFromTime');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.5
+
+module.exports = function DateFromTime(t) {
+ var m = MonthFromTime(t);
+ var d = DayWithinYear(t);
+ if (m === 0) {
+ return d + 1;
+ }
+ if (m === 1) {
+ return d - 30;
+ }
+ var leap = InLeapYear(t);
+ if (m === 2) {
+ return d - 58 - leap;
+ }
+ if (m === 3) {
+ return d - 89 - leap;
+ }
+ if (m === 4) {
+ return d - 119 - leap;
+ }
+ if (m === 5) {
+ return d - 150 - leap;
+ }
+ if (m === 6) {
+ return d - 180 - leap;
+ }
+ if (m === 7) {
+ return d - 211 - leap;
+ }
+ if (m === 8) {
+ return d - 242 - leap;
+ }
+ if (m === 9) {
+ return d - 272 - leap;
+ }
+ if (m === 10) {
+ return d - 303 - leap;
+ }
+ if (m === 11) {
+ return d - 333 - leap;
+ }
+ throw new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m);
+};
diff --git a/node_modules/es-abstract/2021/DateString.js b/node_modules/es-abstract/2021/DateString.js
new file mode 100644
index 000000000..939c14c0c
--- /dev/null
+++ b/node_modules/es-abstract/2021/DateString.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
+var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
+
+var $isNaN = require('../helpers/isNaN');
+var padTimeComponent = require('../helpers/padTimeComponent');
+
+var Type = require('./Type');
+var WeekDay = require('./WeekDay');
+var MonthFromTime = require('./MonthFromTime');
+var YearFromTime = require('./YearFromTime');
+var DateFromTime = require('./DateFromTime');
+
+// https://262.ecma-international.org/9.0/#sec-datestring
+
+module.exports = function DateString(tv) {
+ if (Type(tv) !== 'Number' || $isNaN(tv)) {
+ throw new $TypeError('Assertion failed: `tv` must be a non-NaN Number');
+ }
+ var weekday = weekdays[WeekDay(tv)];
+ var month = months[MonthFromTime(tv)];
+ var day = padTimeComponent(DateFromTime(tv));
+ var year = padTimeComponent(YearFromTime(tv), 4);
+ return weekday + '\x20' + month + '\x20' + day + '\x20' + year;
+};
diff --git a/node_modules/es-abstract/2021/Day.js b/node_modules/es-abstract/2021/Day.js
new file mode 100644
index 000000000..51d01033c
--- /dev/null
+++ b/node_modules/es-abstract/2021/Day.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var floor = require('./floor');
+
+var msPerDay = require('../helpers/timeConstants').msPerDay;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.2
+
+module.exports = function Day(t) {
+ return floor(t / msPerDay);
+};
diff --git a/node_modules/es-abstract/2021/DayFromYear.js b/node_modules/es-abstract/2021/DayFromYear.js
new file mode 100644
index 000000000..341bf22a6
--- /dev/null
+++ b/node_modules/es-abstract/2021/DayFromYear.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var floor = require('./floor');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.3
+
+module.exports = function DayFromYear(y) {
+ return (365 * (y - 1970)) + floor((y - 1969) / 4) - floor((y - 1901) / 100) + floor((y - 1601) / 400);
+};
+
diff --git a/node_modules/es-abstract/2021/DayWithinYear.js b/node_modules/es-abstract/2021/DayWithinYear.js
new file mode 100644
index 000000000..4c580940a
--- /dev/null
+++ b/node_modules/es-abstract/2021/DayWithinYear.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var Day = require('./Day');
+var DayFromYear = require('./DayFromYear');
+var YearFromTime = require('./YearFromTime');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.4
+
+module.exports = function DayWithinYear(t) {
+ return Day(t) - DayFromYear(YearFromTime(t));
+};
diff --git a/node_modules/es-abstract/2021/DaysInYear.js b/node_modules/es-abstract/2021/DaysInYear.js
new file mode 100644
index 000000000..7116c6902
--- /dev/null
+++ b/node_modules/es-abstract/2021/DaysInYear.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var modulo = require('./modulo');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.3
+
+module.exports = function DaysInYear(y) {
+ if (modulo(y, 4) !== 0) {
+ return 365;
+ }
+ if (modulo(y, 100) !== 0) {
+ return 366;
+ }
+ if (modulo(y, 400) !== 0) {
+ return 365;
+ }
+ return 366;
+};
diff --git a/node_modules/es-abstract/2021/DefinePropertyOrThrow.js b/node_modules/es-abstract/2021/DefinePropertyOrThrow.js
new file mode 100644
index 000000000..26f2714bb
--- /dev/null
+++ b/node_modules/es-abstract/2021/DefinePropertyOrThrow.js
@@ -0,0 +1,50 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
+var DefineOwnProperty = require('../helpers/DefineOwnProperty');
+
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow
+
+module.exports = function DefinePropertyOrThrow(O, P, desc) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+
+ var Desc = isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, desc) ? desc : ToPropertyDescriptor(desc);
+ if (!isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, Desc)) {
+ throw new $TypeError('Assertion failed: Desc is not a valid Property Descriptor');
+ }
+
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ Desc
+ );
+};
diff --git a/node_modules/es-abstract/2021/DeletePropertyOrThrow.js b/node_modules/es-abstract/2021/DeletePropertyOrThrow.js
new file mode 100644
index 000000000..30d5e57c7
--- /dev/null
+++ b/node_modules/es-abstract/2021/DeletePropertyOrThrow.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow
+
+module.exports = function DeletePropertyOrThrow(O, P) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ var success = delete O[P];
+ if (!success) {
+ throw new $TypeError('Attempt to delete property failed.');
+ }
+ return success;
+};
diff --git a/node_modules/es-abstract/2021/DetachArrayBuffer.js b/node_modules/es-abstract/2021/DetachArrayBuffer.js
new file mode 100644
index 000000000..03284729b
--- /dev/null
+++ b/node_modules/es-abstract/2021/DetachArrayBuffer.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isArrayBuffer = require('is-array-buffer');
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+var MessageChannel;
+try {
+ // eslint-disable-next-line global-require
+ MessageChannel = require('worker_threads').MessageChannel;
+} catch (e) { /**/ }
+
+// https://262.ecma-international.org/9.0/#sec-detacharraybuffer
+
+/* globals postMessage */
+
+module.exports = function DetachArrayBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer) || isSharedArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot, and not a Shared Array Buffer');
+ }
+
+ // commented out since there's no way to set or access this key
+ // var key = arguments.length > 1 ? arguments[1] : void undefined;
+
+ // if (!SameValue(arrayBuffer[[ArrayBufferDetachKey]], key)) {
+ // throw new $TypeError('Assertion failed: `key` must be the value of the [[ArrayBufferDetachKey]] internal slot of `arrayBuffer`');
+ // }
+
+ if (typeof structuredClone === 'function') {
+ structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
+ } else if (typeof postMessage === 'function') {
+ postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
+ } else if (MessageChannel) {
+ (new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
+ } else {
+ throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
+ }
+ return null;
+};
diff --git a/node_modules/es-abstract/2021/EnumerableOwnPropertyNames.js b/node_modules/es-abstract/2021/EnumerableOwnPropertyNames.js
new file mode 100644
index 000000000..8e3177b6a
--- /dev/null
+++ b/node_modules/es-abstract/2021/EnumerableOwnPropertyNames.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var objectKeys = require('object-keys');
+
+var callBound = require('call-bind/callBound');
+
+var callBind = require('call-bind');
+
+var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
+var $pushApply = callBind.apply(GetIntrinsic('%Array.prototype.push%'));
+
+var forEach = require('../helpers/forEach');
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/8.0/#sec-enumerableownproperties
+
+module.exports = function EnumerableOwnPropertyNames(O, kind) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ var keys = objectKeys(O);
+ if (kind === 'key') {
+ return keys;
+ }
+ if (kind === 'value' || kind === 'key+value') {
+ var results = [];
+ forEach(keys, function (key) {
+ if ($isEnumerable(O, key)) {
+ $pushApply(results, [
+ kind === 'value' ? O[key] : [key, O[key]]
+ ]);
+ }
+ });
+ return results;
+ }
+ throw new $TypeError('Assertion failed: "kind" is not "key", "value", or "key+value": ' + kind);
+};
diff --git a/node_modules/es-abstract/2021/FlattenIntoArray.js b/node_modules/es-abstract/2021/FlattenIntoArray.js
new file mode 100644
index 000000000..6429ee797
--- /dev/null
+++ b/node_modules/es-abstract/2021/FlattenIntoArray.js
@@ -0,0 +1,58 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');
+
+var Call = require('./Call');
+var CreateDataPropertyOrThrow = require('./CreateDataPropertyOrThrow');
+var Get = require('./Get');
+var HasProperty = require('./HasProperty');
+var IsArray = require('./IsArray');
+var LengthOfArrayLike = require('./LengthOfArrayLike');
+var ToString = require('./ToString');
+
+// https://262.ecma-international.org/11.0/#sec-flattenintoarray
+
+// eslint-disable-next-line max-params
+module.exports = function FlattenIntoArray(target, source, sourceLen, start, depth) {
+ var mapperFunction;
+ if (arguments.length > 5) {
+ mapperFunction = arguments[5];
+ }
+
+ var targetIndex = start;
+ var sourceIndex = 0;
+ while (sourceIndex < sourceLen) {
+ var P = ToString(sourceIndex);
+ var exists = HasProperty(source, P);
+ if (exists === true) {
+ var element = Get(source, P);
+ if (typeof mapperFunction !== 'undefined') {
+ if (arguments.length <= 6) {
+ throw new $TypeError('Assertion failed: thisArg is required when mapperFunction is provided');
+ }
+ element = Call(mapperFunction, arguments[6], [element, sourceIndex, source]);
+ }
+ var shouldFlatten = false;
+ if (depth > 0) {
+ shouldFlatten = IsArray(element);
+ }
+ if (shouldFlatten) {
+ var elementLen = LengthOfArrayLike(element);
+ targetIndex = FlattenIntoArray(target, element, elementLen, targetIndex, depth - 1);
+ } else {
+ if (targetIndex >= MAX_SAFE_INTEGER) {
+ throw new $TypeError('index too large');
+ }
+ CreateDataPropertyOrThrow(target, ToString(targetIndex), element);
+ targetIndex += 1;
+ }
+ }
+ sourceIndex += 1;
+ }
+
+ return targetIndex;
+};
diff --git a/node_modules/es-abstract/2021/FromPropertyDescriptor.js b/node_modules/es-abstract/2021/FromPropertyDescriptor.js
new file mode 100644
index 000000000..e142ed582
--- /dev/null
+++ b/node_modules/es-abstract/2021/FromPropertyDescriptor.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var assertRecord = require('../helpers/assertRecord');
+var fromPropertyDescriptor = require('../helpers/fromPropertyDescriptor');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
+
+module.exports = function FromPropertyDescriptor(Desc) {
+ if (typeof Desc !== 'undefined') {
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
+ }
+
+ return fromPropertyDescriptor(Desc);
+};
diff --git a/node_modules/es-abstract/2021/Get.js b/node_modules/es-abstract/2021/Get.js
new file mode 100644
index 000000000..297968643
--- /dev/null
+++ b/node_modules/es-abstract/2021/Get.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var inspect = require('object-inspect');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
+
+module.exports = function Get(O, P) {
+ // 7.3.1.1
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ // 7.3.1.2
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));
+ }
+ // 7.3.1.3
+ return O[P];
+};
diff --git a/node_modules/es-abstract/2021/GetGlobalObject.js b/node_modules/es-abstract/2021/GetGlobalObject.js
new file mode 100644
index 000000000..0541ede0c
--- /dev/null
+++ b/node_modules/es-abstract/2021/GetGlobalObject.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var getGlobal = require('globalthis/polyfill');
+
+// https://262.ecma-international.org/6.0/#sec-getglobalobject
+
+module.exports = function GetGlobalObject() {
+ return getGlobal();
+};
diff --git a/node_modules/es-abstract/2021/GetIterator.js b/node_modules/es-abstract/2021/GetIterator.js
new file mode 100644
index 000000000..51439e448
--- /dev/null
+++ b/node_modules/es-abstract/2021/GetIterator.js
@@ -0,0 +1,65 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $asyncIterator = GetIntrinsic('%Symbol.asyncIterator%', true);
+
+var inspect = require('object-inspect');
+var hasSymbols = require('has-symbols')();
+
+var getIteratorMethod = require('../helpers/getIteratorMethod');
+var AdvanceStringIndex = require('./AdvanceStringIndex');
+var Call = require('./Call');
+var GetMethod = require('./GetMethod');
+var IsArray = require('./IsArray');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/9.0/#sec-getiterator
+module.exports = function GetIterator(obj, hint, method) {
+ var actualHint = hint;
+ if (arguments.length < 2) {
+ actualHint = 'sync';
+ }
+ if (actualHint !== 'sync' && actualHint !== 'async') {
+ throw new $TypeError("Assertion failed: `hint` must be one of 'sync' or 'async', got " + inspect(hint));
+ }
+
+ var actualMethod = method;
+ if (arguments.length < 3) {
+ if (actualHint === 'async') {
+ if (hasSymbols && $asyncIterator) {
+ actualMethod = GetMethod(obj, $asyncIterator);
+ }
+ if (actualMethod === undefined) {
+ throw new $SyntaxError("async from sync iterators aren't currently supported");
+ }
+ } else {
+ actualMethod = getIteratorMethod(
+ {
+ AdvanceStringIndex: AdvanceStringIndex,
+ GetMethod: GetMethod,
+ IsArray: IsArray
+ },
+ obj
+ );
+ }
+ }
+ var iterator = Call(actualMethod, obj);
+ if (Type(iterator) !== 'Object') {
+ throw new $TypeError('iterator must return an object');
+ }
+
+ return iterator;
+
+ // TODO: This should return an IteratorRecord
+ /*
+ var nextMethod = GetV(iterator, 'next');
+ return {
+ '[[Iterator]]': iterator,
+ '[[NextMethod]]': nextMethod,
+ '[[Done]]': false
+ };
+ */
+};
diff --git a/node_modules/es-abstract/2021/GetMethod.js b/node_modules/es-abstract/2021/GetMethod.js
new file mode 100644
index 000000000..d3775178e
--- /dev/null
+++ b/node_modules/es-abstract/2021/GetMethod.js
@@ -0,0 +1,36 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var GetV = require('./GetV');
+var IsCallable = require('./IsCallable');
+var IsPropertyKey = require('./IsPropertyKey');
+
+var debug = require('object-inspect');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getmethod
+
+module.exports = function GetMethod(O, P) {
+ // 7.3.9.1
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+
+ // 7.3.9.2
+ var func = GetV(O, P);
+
+ // 7.3.9.4
+ if (func == null) {
+ return void 0;
+ }
+
+ // 7.3.9.5
+ if (!IsCallable(func)) {
+ throw new $TypeError(P + ' is not a function: ' + debug(func));
+ }
+
+ // 7.3.9.6
+ return func;
+};
diff --git a/node_modules/es-abstract/2021/GetOwnPropertyKeys.js b/node_modules/es-abstract/2021/GetOwnPropertyKeys.js
new file mode 100644
index 000000000..40c0b367f
--- /dev/null
+++ b/node_modules/es-abstract/2021/GetOwnPropertyKeys.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var hasSymbols = require('has-symbols')();
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
+var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%', true);
+var keys = require('object-keys');
+
+var esType = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys
+
+module.exports = function GetOwnPropertyKeys(O, Type) {
+ if (esType(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (Type === 'Symbol') {
+ return $gOPS ? $gOPS(O) : [];
+ }
+ if (Type === 'String') {
+ if (!$gOPN) {
+ return keys(O);
+ }
+ return $gOPN(O);
+ }
+ throw new $TypeError('Assertion failed: `Type` must be `"String"` or `"Symbol"`');
+};
diff --git a/node_modules/es-abstract/2021/GetPromiseResolve.js b/node_modules/es-abstract/2021/GetPromiseResolve.js
new file mode 100644
index 000000000..6efc10288
--- /dev/null
+++ b/node_modules/es-abstract/2021/GetPromiseResolve.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var IsConstructor = require('./IsConstructor');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-getpromiseresolve
+
+module.exports = function GetPromiseResolve(promiseConstructor) {
+ if (!IsConstructor(promiseConstructor)) {
+ throw new $TypeError('Assertion failed: `promiseConstructor` must be a constructor');
+ }
+ var promiseResolve = Get(promiseConstructor, 'resolve');
+ if (IsCallable(promiseResolve) === false) {
+ throw new $TypeError('`resolve` method is not callable');
+ }
+ return promiseResolve;
+};
diff --git a/node_modules/es-abstract/2021/GetPrototypeFromConstructor.js b/node_modules/es-abstract/2021/GetPrototypeFromConstructor.js
new file mode 100644
index 000000000..25ee12f35
--- /dev/null
+++ b/node_modules/es-abstract/2021/GetPrototypeFromConstructor.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Function = GetIntrinsic('%Function%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var Get = require('./Get');
+var IsConstructor = require('./IsConstructor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getprototypefromconstructor
+
+module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) {
+ var intrinsic = GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic
+ if (!IsConstructor(constructor)) {
+ throw new $TypeError('Assertion failed: `constructor` must be a constructor');
+ }
+ var proto = Get(constructor, 'prototype');
+ if (Type(proto) !== 'Object') {
+ if (!(constructor instanceof $Function)) {
+ // ignore other realms, for now
+ throw new $SyntaxError('cross-realm constructors not currently supported');
+ }
+ proto = intrinsic;
+ }
+ return proto;
+};
diff --git a/node_modules/es-abstract/2021/GetSubstitution.js b/node_modules/es-abstract/2021/GetSubstitution.js
new file mode 100644
index 000000000..6ac3ec7f3
--- /dev/null
+++ b/node_modules/es-abstract/2021/GetSubstitution.js
@@ -0,0 +1,128 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var regexTester = require('safe-regex-test');
+var every = require('../helpers/every');
+
+var $charAt = callBound('String.prototype.charAt');
+var $strSlice = callBound('String.prototype.slice');
+var $indexOf = callBound('String.prototype.indexOf');
+var $parseInt = parseInt;
+
+var isDigit = regexTester(/^[0-9]$/);
+
+var inspect = require('object-inspect');
+
+var Get = require('./Get');
+var IsArray = require('./IsArray');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var ToObject = require('./ToObject');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+var canDistinguishSparseFromUndefined = 0 in [undefined]; // IE 6 - 8 have a bug where this returns false
+
+var isStringOrHole = function (capture, index, arr) {
+ return Type(capture) === 'String' || (canDistinguishSparseFromUndefined ? !(index in arr) : Type(capture) === 'Undefined');
+};
+
+// http://www.ecma-international.org/ecma-262/12.0/#sec-getsubstitution
+
+// eslint-disable-next-line max-statements, max-params, max-lines-per-function
+module.exports = function GetSubstitution(matched, str, position, captures, namedCaptures, replacement) {
+ if (Type(matched) !== 'String') {
+ throw new $TypeError('Assertion failed: `matched` must be a String');
+ }
+ var matchLength = matched.length;
+
+ if (Type(str) !== 'String') {
+ throw new $TypeError('Assertion failed: `str` must be a String');
+ }
+ var stringLength = str.length;
+
+ if (!IsIntegralNumber(position) || position < 0 || position > stringLength) {
+ throw new $TypeError('Assertion failed: `position` must be a nonnegative integer, and less than or equal to the length of `string`, got ' + inspect(position));
+ }
+
+ if (!IsArray(captures) || !every(captures, isStringOrHole)) {
+ throw new $TypeError('Assertion failed: `captures` must be a possibly-empty List of Strings, got ' + inspect(captures));
+ }
+
+ if (Type(replacement) !== 'String') {
+ throw new $TypeError('Assertion failed: `replacement` must be a String');
+ }
+
+ var tailPos = position + matchLength;
+ var m = captures.length;
+ if (Type(namedCaptures) !== 'Undefined') {
+ namedCaptures = ToObject(namedCaptures); // eslint-disable-line no-param-reassign
+ }
+
+ var result = '';
+ for (var i = 0; i < replacement.length; i += 1) {
+ // if this is a $, and it's not the end of the replacement
+ var current = $charAt(replacement, i);
+ var isLast = (i + 1) >= replacement.length;
+ var nextIsLast = (i + 2) >= replacement.length;
+ if (current === '$' && !isLast) {
+ var next = $charAt(replacement, i + 1);
+ if (next === '$') {
+ result += '$';
+ i += 1;
+ } else if (next === '&') {
+ result += matched;
+ i += 1;
+ } else if (next === '`') {
+ result += position === 0 ? '' : $strSlice(str, 0, position - 1);
+ i += 1;
+ } else if (next === "'") {
+ result += tailPos >= stringLength ? '' : $strSlice(str, tailPos);
+ i += 1;
+ } else {
+ var nextNext = nextIsLast ? null : $charAt(replacement, i + 2);
+ if (isDigit(next) && next !== '0' && (nextIsLast || !isDigit(nextNext))) {
+ // $1 through $9, and not followed by a digit
+ var n = $parseInt(next, 10);
+ // if (n > m, impl-defined)
+ result += n <= m && Type(captures[n - 1]) === 'Undefined' ? '' : captures[n - 1];
+ i += 1;
+ } else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) {
+ // $00 through $99
+ var nn = next + nextNext;
+ var nnI = $parseInt(nn, 10) - 1;
+ // if nn === '00' or nn > m, impl-defined
+ result += nn <= m && Type(captures[nnI]) === 'Undefined' ? '' : captures[nnI];
+ i += 2;
+ } else if (next === '<') {
+ // eslint-disable-next-line max-depth
+ if (Type(namedCaptures) === 'Undefined') {
+ result += '$<';
+ i += 2;
+ } else {
+ var endIndex = $indexOf(replacement, '>', i);
+ // eslint-disable-next-line max-depth
+ if (endIndex > -1) {
+ var groupName = $strSlice(replacement, i + '$<'.length, endIndex);
+ var capture = Get(namedCaptures, groupName);
+ // eslint-disable-next-line max-depth
+ if (Type(capture) !== 'Undefined') {
+ result += ToString(capture);
+ }
+ i += ('<' + groupName + '>').length;
+ }
+ }
+ } else {
+ result += '$';
+ }
+ }
+ } else {
+ // the final $, or else not a $
+ result += $charAt(replacement, i);
+ }
+ }
+ return result;
+};
diff --git a/node_modules/es-abstract/2021/GetV.js b/node_modules/es-abstract/2021/GetV.js
new file mode 100644
index 000000000..2dcddb351
--- /dev/null
+++ b/node_modules/es-abstract/2021/GetV.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var ToObject = require('./ToObject');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getv
+
+module.exports = function GetV(V, P) {
+ // 7.3.2.1
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+
+ // 7.3.2.2-3
+ var O = ToObject(V);
+
+ // 7.3.2.4
+ return O[P];
+};
diff --git a/node_modules/es-abstract/2021/HasOwnProperty.js b/node_modules/es-abstract/2021/HasOwnProperty.js
new file mode 100644
index 000000000..04d28495f
--- /dev/null
+++ b/node_modules/es-abstract/2021/HasOwnProperty.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var has = require('has');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-hasownproperty
+
+module.exports = function HasOwnProperty(O, P) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: `O` must be an Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: `P` must be a Property Key');
+ }
+ return has(O, P);
+};
diff --git a/node_modules/es-abstract/2021/HasProperty.js b/node_modules/es-abstract/2021/HasProperty.js
new file mode 100644
index 000000000..b341654e7
--- /dev/null
+++ b/node_modules/es-abstract/2021/HasProperty.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty
+
+module.exports = function HasProperty(O, P) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: `O` must be an Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: `P` must be a Property Key');
+ }
+ return P in O;
+};
diff --git a/node_modules/es-abstract/2021/HourFromTime.js b/node_modules/es-abstract/2021/HourFromTime.js
new file mode 100644
index 000000000..f963bfb68
--- /dev/null
+++ b/node_modules/es-abstract/2021/HourFromTime.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var floor = require('./floor');
+var modulo = require('./modulo');
+
+var timeConstants = require('../helpers/timeConstants');
+var msPerHour = timeConstants.msPerHour;
+var HoursPerDay = timeConstants.HoursPerDay;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.10
+
+module.exports = function HourFromTime(t) {
+ return modulo(floor(t / msPerHour), HoursPerDay);
+};
diff --git a/node_modules/es-abstract/2021/InLeapYear.js b/node_modules/es-abstract/2021/InLeapYear.js
new file mode 100644
index 000000000..bfe0c451f
--- /dev/null
+++ b/node_modules/es-abstract/2021/InLeapYear.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $EvalError = GetIntrinsic('%EvalError%');
+
+var DaysInYear = require('./DaysInYear');
+var YearFromTime = require('./YearFromTime');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.3
+
+module.exports = function InLeapYear(t) {
+ var days = DaysInYear(YearFromTime(t));
+ if (days === 365) {
+ return 0;
+ }
+ if (days === 366) {
+ return 1;
+ }
+ throw new $EvalError('Assertion failed: there are not 365 or 366 days in a year, got: ' + days);
+};
diff --git a/node_modules/es-abstract/2021/InstanceofOperator.js b/node_modules/es-abstract/2021/InstanceofOperator.js
new file mode 100644
index 000000000..a3c4d2375
--- /dev/null
+++ b/node_modules/es-abstract/2021/InstanceofOperator.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $hasInstance = GetIntrinsic('Symbol.hasInstance', true);
+
+var Call = require('./Call');
+var GetMethod = require('./GetMethod');
+var IsCallable = require('./IsCallable');
+var OrdinaryHasInstance = require('./OrdinaryHasInstance');
+var ToBoolean = require('./ToBoolean');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-instanceofoperator
+
+module.exports = function InstanceofOperator(O, C) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ var instOfHandler = $hasInstance ? GetMethod(C, $hasInstance) : void 0;
+ if (typeof instOfHandler !== 'undefined') {
+ return ToBoolean(Call(instOfHandler, C, [O]));
+ }
+ if (!IsCallable(C)) {
+ throw new $TypeError('`C` is not Callable');
+ }
+ return OrdinaryHasInstance(C, O);
+};
diff --git a/node_modules/es-abstract/2021/Invoke.js b/node_modules/es-abstract/2021/Invoke.js
new file mode 100644
index 000000000..d4214ee51
--- /dev/null
+++ b/node_modules/es-abstract/2021/Invoke.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var IsArray = require('./IsArray');
+var GetV = require('./GetV');
+var IsPropertyKey = require('./IsPropertyKey');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-invoke
+
+module.exports = function Invoke(O, P) {
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: P must be a Property Key');
+ }
+ var argumentsList = arguments.length > 2 ? arguments[2] : [];
+ if (!IsArray(argumentsList)) {
+ throw new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');
+ }
+ var func = GetV(O, P);
+ return Call(func, O, argumentsList);
+};
diff --git a/node_modules/es-abstract/2021/IsAccessorDescriptor.js b/node_modules/es-abstract/2021/IsAccessorDescriptor.js
new file mode 100644
index 000000000..78563e7ec
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsAccessorDescriptor.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var has = require('has');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor
+
+module.exports = function IsAccessorDescriptor(Desc) {
+ if (typeof Desc === 'undefined') {
+ return false;
+ }
+
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
+
+ if (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) {
+ return false;
+ }
+
+ return true;
+};
diff --git a/node_modules/es-abstract/2021/IsArray.js b/node_modules/es-abstract/2021/IsArray.js
new file mode 100644
index 000000000..600ffa002
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsArray.js
@@ -0,0 +1,4 @@
+'use strict';
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isarray
+module.exports = require('../helpers/IsArray');
diff --git a/node_modules/es-abstract/2021/IsBigIntElementType.js b/node_modules/es-abstract/2021/IsBigIntElementType.js
new file mode 100644
index 000000000..e3f58a949
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsBigIntElementType.js
@@ -0,0 +1,7 @@
+'use strict';
+
+// https://262.ecma-international.org/11.0/#sec-isbigintelementtype
+
+module.exports = function IsBigIntElementType(type) {
+ return type === 'BigUint64' || type === 'BigInt64';
+};
diff --git a/node_modules/es-abstract/2021/IsCallable.js b/node_modules/es-abstract/2021/IsCallable.js
new file mode 100644
index 000000000..3a69b1926
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsCallable.js
@@ -0,0 +1,5 @@
+'use strict';
+
+// http://262.ecma-international.org/5.1/#sec-9.11
+
+module.exports = require('is-callable');
diff --git a/node_modules/es-abstract/2021/IsCompatiblePropertyDescriptor.js b/node_modules/es-abstract/2021/IsCompatiblePropertyDescriptor.js
new file mode 100644
index 000000000..8bdaf3eb4
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsCompatiblePropertyDescriptor.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
+
+// https://262.ecma-international.org/6.0/#sec-iscompatiblepropertydescriptor
+
+module.exports = function IsCompatiblePropertyDescriptor(Extensible, Desc, Current) {
+ return ValidateAndApplyPropertyDescriptor(undefined, undefined, Extensible, Desc, Current);
+};
diff --git a/node_modules/es-abstract/2021/IsConcatSpreadable.js b/node_modules/es-abstract/2021/IsConcatSpreadable.js
new file mode 100644
index 000000000..141b33414
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsConcatSpreadable.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true);
+
+var Get = require('./Get');
+var IsArray = require('./IsArray');
+var ToBoolean = require('./ToBoolean');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable
+
+module.exports = function IsConcatSpreadable(O) {
+ if (Type(O) !== 'Object') {
+ return false;
+ }
+ if ($isConcatSpreadable) {
+ var spreadable = Get(O, $isConcatSpreadable);
+ if (typeof spreadable !== 'undefined') {
+ return ToBoolean(spreadable);
+ }
+ }
+ return IsArray(O);
+};
diff --git a/node_modules/es-abstract/2021/IsConstructor.js b/node_modules/es-abstract/2021/IsConstructor.js
new file mode 100644
index 000000000..fe626e183
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsConstructor.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var GetIntrinsic = require('../GetIntrinsic.js');
+
+var $construct = GetIntrinsic('%Reflect.construct%', true);
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+try {
+ DefinePropertyOrThrow({}, '', { '[[Get]]': function () {} });
+} catch (e) {
+ // Accessor properties aren't supported
+ DefinePropertyOrThrow = null;
+}
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isconstructor
+
+if (DefinePropertyOrThrow && $construct) {
+ var isConstructorMarker = {};
+ var badArrayLike = {};
+ DefinePropertyOrThrow(badArrayLike, 'length', {
+ '[[Get]]': function () {
+ throw isConstructorMarker;
+ },
+ '[[Enumerable]]': true
+ });
+
+ module.exports = function IsConstructor(argument) {
+ try {
+ // `Reflect.construct` invokes `IsConstructor(target)` before `Get(args, 'length')`:
+ $construct(argument, badArrayLike);
+ } catch (err) {
+ return err === isConstructorMarker;
+ }
+ };
+} else {
+ module.exports = function IsConstructor(argument) {
+ // unfortunately there's no way to truly check this without try/catch `new argument` in old environments
+ return typeof argument === 'function' && !!argument.prototype;
+ };
+}
diff --git a/node_modules/es-abstract/2021/IsDataDescriptor.js b/node_modules/es-abstract/2021/IsDataDescriptor.js
new file mode 100644
index 000000000..00d14a60e
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsDataDescriptor.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var has = require('has');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor
+
+module.exports = function IsDataDescriptor(Desc) {
+ if (typeof Desc === 'undefined') {
+ return false;
+ }
+
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
+
+ if (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) {
+ return false;
+ }
+
+ return true;
+};
diff --git a/node_modules/es-abstract/2021/IsDetachedBuffer.js b/node_modules/es-abstract/2021/IsDetachedBuffer.js
new file mode 100644
index 000000000..4b373e9ab
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsDetachedBuffer.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $byteLength = callBound('%ArrayBuffer.prototype.byteLength%', true)
+ || function byteLength(ab) { return ab.byteLength; }; // in node < 0.11, byteLength is an own nonconfigurable property
+
+var isArrayBuffer = require('is-array-buffer');
+
+var availableTypedArrays = require('available-typed-arrays')();
+
+// https://262.ecma-international.org/6.0/#sec-isdetachedbuffer
+
+module.exports = function IsDetachedBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
+ }
+ if ($byteLength(arrayBuffer) === 0) {
+ try {
+ new global[availableTypedArrays[0]](arrayBuffer); // eslint-disable-line no-new
+ } catch (error) {
+ return error.name === 'TypeError';
+ }
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2021/IsExtensible.js b/node_modules/es-abstract/2021/IsExtensible.js
new file mode 100644
index 000000000..d6e363840
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsExtensible.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $isExtensible = GetIntrinsic('%Object.isExtensible%', true);
+
+var isPrimitive = require('../helpers/isPrimitive');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o
+
+module.exports = $preventExtensions
+ ? function IsExtensible(obj) {
+ return !isPrimitive(obj) && $isExtensible(obj);
+ }
+ : function IsExtensible(obj) {
+ return !isPrimitive(obj);
+ };
diff --git a/node_modules/es-abstract/2021/IsGenericDescriptor.js b/node_modules/es-abstract/2021/IsGenericDescriptor.js
new file mode 100644
index 000000000..95b1d353c
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsGenericDescriptor.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var assertRecord = require('../helpers/assertRecord');
+
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor
+
+module.exports = function IsGenericDescriptor(Desc) {
+ if (typeof Desc === 'undefined') {
+ return false;
+ }
+
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
+
+ if (!IsAccessorDescriptor(Desc) && !IsDataDescriptor(Desc)) {
+ return true;
+ }
+
+ return false;
+};
diff --git a/node_modules/es-abstract/2021/IsIntegralNumber.js b/node_modules/es-abstract/2021/IsIntegralNumber.js
new file mode 100644
index 000000000..0a02bfe0f
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsIntegralNumber.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var abs = require('./abs');
+var floor = require('./floor');
+var Type = require('./Type');
+
+var $isNaN = require('../helpers/isNaN');
+var $isFinite = require('../helpers/isFinite');
+
+// https://tc39.es/ecma262/#sec-isintegralnumber
+
+module.exports = function IsIntegralNumber(argument) {
+ if (Type(argument) !== 'Number' || $isNaN(argument) || !$isFinite(argument)) {
+ return false;
+ }
+ var absValue = abs(argument);
+ return floor(absValue) === absValue;
+};
diff --git a/node_modules/es-abstract/2021/IsNoTearConfiguration.js b/node_modules/es-abstract/2021/IsNoTearConfiguration.js
new file mode 100644
index 000000000..f0d280873
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsNoTearConfiguration.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var IsUnclampedIntegerElementType = require('./IsUnclampedIntegerElementType');
+var IsBigIntElementType = require('./IsBigIntElementType');
+
+// https://262.ecma-international.org/11.0/#sec-isnotearconfiguration
+
+module.exports = function IsNoTearConfiguration(type, order) {
+ if (IsUnclampedIntegerElementType(type)) {
+ return true;
+ }
+ if (IsBigIntElementType(type) && order !== 'Init' && order !== 'Unordered') {
+ return true;
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2021/IsPromise.js b/node_modules/es-abstract/2021/IsPromise.js
new file mode 100644
index 000000000..a551ae0c8
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsPromise.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var $PromiseThen = callBound('Promise.prototype.then', true);
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ispromise
+
+module.exports = function IsPromise(x) {
+ if (Type(x) !== 'Object') {
+ return false;
+ }
+ if (!$PromiseThen) { // Promises are not supported
+ return false;
+ }
+ try {
+ $PromiseThen(x); // throws if not a promise
+ } catch (e) {
+ return false;
+ }
+ return true;
+};
diff --git a/node_modules/es-abstract/2021/IsPropertyKey.js b/node_modules/es-abstract/2021/IsPropertyKey.js
new file mode 100644
index 000000000..f43ab581c
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsPropertyKey.js
@@ -0,0 +1,7 @@
+'use strict';
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey
+
+module.exports = function IsPropertyKey(argument) {
+ return typeof argument === 'string' || typeof argument === 'symbol';
+};
diff --git a/node_modules/es-abstract/2021/IsRegExp.js b/node_modules/es-abstract/2021/IsRegExp.js
new file mode 100644
index 000000000..e1054813f
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsRegExp.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $match = GetIntrinsic('%Symbol.match%', true);
+
+var hasRegExpMatcher = require('is-regex');
+
+var ToBoolean = require('./ToBoolean');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isregexp
+
+module.exports = function IsRegExp(argument) {
+ if (!argument || typeof argument !== 'object') {
+ return false;
+ }
+ if ($match) {
+ var isRegExp = argument[$match];
+ if (typeof isRegExp !== 'undefined') {
+ return ToBoolean(isRegExp);
+ }
+ }
+ return hasRegExpMatcher(argument);
+};
diff --git a/node_modules/es-abstract/2021/IsSharedArrayBuffer.js b/node_modules/es-abstract/2021/IsSharedArrayBuffer.js
new file mode 100644
index 000000000..8e96e33f3
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsSharedArrayBuffer.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+// https://262.ecma-international.org/8.0/#sec-issharedarraybuffer
+
+module.exports = function IsSharedArrayBuffer(obj) {
+ if (Type(obj) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ return isSharedArrayBuffer(obj);
+};
diff --git a/node_modules/es-abstract/2021/IsStringPrefix.js b/node_modules/es-abstract/2021/IsStringPrefix.js
new file mode 100644
index 000000000..4958544ce
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsStringPrefix.js
@@ -0,0 +1,47 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isPrefixOf = require('../helpers/isPrefixOf');
+
+// var callBound = require('call-bind/callBound');
+
+// var $charAt = callBound('String.prototype.charAt');
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/9.0/#sec-isstringprefix
+
+module.exports = function IsStringPrefix(p, q) {
+ if (Type(p) !== 'String') {
+ throw new $TypeError('Assertion failed: "p" must be a String');
+ }
+
+ if (Type(q) !== 'String') {
+ throw new $TypeError('Assertion failed: "q" must be a String');
+ }
+
+ return isPrefixOf(p, q);
+ /*
+ if (p === q || p === '') {
+ return true;
+ }
+
+ var pLength = p.length;
+ var qLength = q.length;
+ if (pLength >= qLength) {
+ return false;
+ }
+
+ // assert: pLength < qLength
+
+ for (var i = 0; i < pLength; i += 1) {
+ if ($charAt(p, i) !== $charAt(q, i)) {
+ return false;
+ }
+ }
+ return true;
+ */
+};
diff --git a/node_modules/es-abstract/2021/IsUnclampedIntegerElementType.js b/node_modules/es-abstract/2021/IsUnclampedIntegerElementType.js
new file mode 100644
index 000000000..4e3a38425
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsUnclampedIntegerElementType.js
@@ -0,0 +1,12 @@
+'use strict';
+
+// https://262.ecma-international.org/11.0/#sec-isunclampedintegerelementtype
+
+module.exports = function IsUnclampedIntegerElementType(type) {
+ return type === 'Int8'
+ || type === 'Uint8'
+ || type === 'Int16'
+ || type === 'Uint16'
+ || type === 'Int32'
+ || type === 'Uint32';
+};
diff --git a/node_modules/es-abstract/2021/IsUnsignedElementType.js b/node_modules/es-abstract/2021/IsUnsignedElementType.js
new file mode 100644
index 000000000..b1ff194d7
--- /dev/null
+++ b/node_modules/es-abstract/2021/IsUnsignedElementType.js
@@ -0,0 +1,11 @@
+'use strict';
+
+// https://262.ecma-international.org/11.0/#sec-isunsignedelementtype
+
+module.exports = function IsUnsignedElementType(type) {
+ return type === 'Uint8'
+ || type === 'Uint8C'
+ || type === 'Uint16'
+ || type === 'Uint32'
+ || type === 'BigUint64';
+};
diff --git a/node_modules/es-abstract/2021/IterableToList.js b/node_modules/es-abstract/2021/IterableToList.js
new file mode 100644
index 000000000..320ab4712
--- /dev/null
+++ b/node_modules/es-abstract/2021/IterableToList.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+var $arrayPush = callBound('Array.prototype.push');
+
+var GetIterator = require('./GetIterator');
+var IteratorStep = require('./IteratorStep');
+var IteratorValue = require('./IteratorValue');
+
+// https://262.ecma-international.org/12.0/#sec-iterabletolist
+
+module.exports = function IterableToList(items) {
+ var iterator;
+ if (arguments.length > 1) {
+ iterator = GetIterator(items, 'sync', arguments[1]);
+ } else {
+ iterator = GetIterator(items, 'sync');
+ }
+ var values = [];
+ var next = true;
+ while (next) {
+ next = IteratorStep(iterator);
+ if (next) {
+ var nextValue = IteratorValue(next);
+ $arrayPush(values, nextValue);
+ }
+ }
+ return values;
+};
diff --git a/node_modules/es-abstract/2021/IteratorClose.js b/node_modules/es-abstract/2021/IteratorClose.js
new file mode 100644
index 000000000..f703ea632
--- /dev/null
+++ b/node_modules/es-abstract/2021/IteratorClose.js
@@ -0,0 +1,51 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
+var GetMethod = require('./GetMethod');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose
+
+module.exports = function IteratorClose(iterator, completion) {
+ if (Type(iterator) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(iterator) is not Object');
+ }
+ if (!IsCallable(completion) && !(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a thunk representing a Completion Record, nor a Completion Record instance');
+ }
+ var completionThunk = completion instanceof CompletionRecord ? function () { return completion['?'](); } : completion;
+
+ var iteratorReturn = GetMethod(iterator, 'return');
+
+ if (typeof iteratorReturn === 'undefined') {
+ return completionThunk();
+ }
+
+ var completionRecord;
+ try {
+ var innerResult = Call(iteratorReturn, iterator, []);
+ } catch (e) {
+ // if we hit here, then "e" is the innerResult completion that needs re-throwing
+
+ // if the completion is of type "throw", this will throw.
+ completionThunk();
+ completionThunk = null; // ensure it's not called twice.
+
+ // if not, then return the innerResult completion
+ throw e;
+ }
+ completionRecord = completionThunk(); // if innerResult worked, then throw if the completion does
+ completionThunk = null; // ensure it's not called twice.
+
+ if (Type(innerResult) !== 'Object') {
+ throw new $TypeError('iterator .return must return an object');
+ }
+
+ return completionRecord;
+};
diff --git a/node_modules/es-abstract/2021/IteratorComplete.js b/node_modules/es-abstract/2021/IteratorComplete.js
new file mode 100644
index 000000000..ed4efa37d
--- /dev/null
+++ b/node_modules/es-abstract/2021/IteratorComplete.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Get = require('./Get');
+var ToBoolean = require('./ToBoolean');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete
+
+module.exports = function IteratorComplete(iterResult) {
+ if (Type(iterResult) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(iterResult) is not Object');
+ }
+ return ToBoolean(Get(iterResult, 'done'));
+};
diff --git a/node_modules/es-abstract/2021/IteratorNext.js b/node_modules/es-abstract/2021/IteratorNext.js
new file mode 100644
index 000000000..cf80655b9
--- /dev/null
+++ b/node_modules/es-abstract/2021/IteratorNext.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Invoke = require('./Invoke');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-iteratornext
+
+module.exports = function IteratorNext(iterator, value) {
+ var result = Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]);
+ if (Type(result) !== 'Object') {
+ throw new $TypeError('iterator next must return an object');
+ }
+ return result;
+};
diff --git a/node_modules/es-abstract/2021/IteratorStep.js b/node_modules/es-abstract/2021/IteratorStep.js
new file mode 100644
index 000000000..41b9d1b25
--- /dev/null
+++ b/node_modules/es-abstract/2021/IteratorStep.js
@@ -0,0 +1,13 @@
+'use strict';
+
+var IteratorComplete = require('./IteratorComplete');
+var IteratorNext = require('./IteratorNext');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep
+
+module.exports = function IteratorStep(iterator) {
+ var result = IteratorNext(iterator);
+ var done = IteratorComplete(result);
+ return done === true ? false : result;
+};
+
diff --git a/node_modules/es-abstract/2021/IteratorValue.js b/node_modules/es-abstract/2021/IteratorValue.js
new file mode 100644
index 000000000..d15d8aebb
--- /dev/null
+++ b/node_modules/es-abstract/2021/IteratorValue.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Get = require('./Get');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue
+
+module.exports = function IteratorValue(iterResult) {
+ if (Type(iterResult) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(iterResult) is not Object');
+ }
+ return Get(iterResult, 'value');
+};
+
diff --git a/node_modules/es-abstract/2021/LengthOfArrayLike.js b/node_modules/es-abstract/2021/LengthOfArrayLike.js
new file mode 100644
index 000000000..132c4d584
--- /dev/null
+++ b/node_modules/es-abstract/2021/LengthOfArrayLike.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Get = require('./Get');
+var ToLength = require('./ToLength');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/11.0/#sec-lengthofarraylike
+
+module.exports = function LengthOfArrayLike(obj) {
+ if (Type(obj) !== 'Object') {
+ throw new $TypeError('Assertion failed: `obj` must be an Object');
+ }
+ return ToLength(Get(obj, 'length'));
+};
+
+// TODO: use this all over
diff --git a/node_modules/es-abstract/2021/MakeDate.js b/node_modules/es-abstract/2021/MakeDate.js
new file mode 100644
index 000000000..efeb6452e
--- /dev/null
+++ b/node_modules/es-abstract/2021/MakeDate.js
@@ -0,0 +1,13 @@
+'use strict';
+
+var $isFinite = require('../helpers/isFinite');
+var msPerDay = require('../helpers/timeConstants').msPerDay;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.13
+
+module.exports = function MakeDate(day, time) {
+ if (!$isFinite(day) || !$isFinite(time)) {
+ return NaN;
+ }
+ return (day * msPerDay) + time;
+};
diff --git a/node_modules/es-abstract/2021/MakeDay.js b/node_modules/es-abstract/2021/MakeDay.js
new file mode 100644
index 000000000..db78bbc74
--- /dev/null
+++ b/node_modules/es-abstract/2021/MakeDay.js
@@ -0,0 +1,36 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $DateUTC = GetIntrinsic('%Date.UTC%');
+
+var $isFinite = require('../helpers/isFinite');
+
+var DateFromTime = require('./DateFromTime');
+var Day = require('./Day');
+var floor = require('./floor');
+var modulo = require('./modulo');
+var MonthFromTime = require('./MonthFromTime');
+var ToIntegerOrInfinity = require('./ToIntegerOrInfinity');
+var YearFromTime = require('./YearFromTime');
+
+// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12
+
+module.exports = function MakeDay(year, month, date) {
+ if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) {
+ return NaN;
+ }
+ var y = ToIntegerOrInfinity(year);
+ var m = ToIntegerOrInfinity(month);
+ var dt = ToIntegerOrInfinity(date);
+ var ym = y + floor(m / 12);
+ if (!$isFinite(ym)) {
+ return NaN;
+ }
+ var mn = modulo(m, 12);
+ var t = $DateUTC(ym, mn, 1);
+ if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) {
+ return NaN;
+ }
+ return Day(t) + dt - 1;
+};
diff --git a/node_modules/es-abstract/2021/MakeTime.js b/node_modules/es-abstract/2021/MakeTime.js
new file mode 100644
index 000000000..330d3bdbc
--- /dev/null
+++ b/node_modules/es-abstract/2021/MakeTime.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var $isFinite = require('../helpers/isFinite');
+var timeConstants = require('../helpers/timeConstants');
+var msPerSecond = timeConstants.msPerSecond;
+var msPerMinute = timeConstants.msPerMinute;
+var msPerHour = timeConstants.msPerHour;
+
+var ToIntegerOrInfinity = require('./ToIntegerOrInfinity');
+
+// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11
+
+module.exports = function MakeTime(hour, min, sec, ms) {
+ if (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) {
+ return NaN;
+ }
+ var h = ToIntegerOrInfinity(hour);
+ var m = ToIntegerOrInfinity(min);
+ var s = ToIntegerOrInfinity(sec);
+ var milli = ToIntegerOrInfinity(ms);
+ var t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli;
+ return t;
+};
diff --git a/node_modules/es-abstract/2021/MinFromTime.js b/node_modules/es-abstract/2021/MinFromTime.js
new file mode 100644
index 000000000..a0c631d4c
--- /dev/null
+++ b/node_modules/es-abstract/2021/MinFromTime.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var floor = require('./floor');
+var modulo = require('./modulo');
+
+var timeConstants = require('../helpers/timeConstants');
+var msPerMinute = timeConstants.msPerMinute;
+var MinutesPerHour = timeConstants.MinutesPerHour;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.10
+
+module.exports = function MinFromTime(t) {
+ return modulo(floor(t / msPerMinute), MinutesPerHour);
+};
diff --git a/node_modules/es-abstract/2021/MonthFromTime.js b/node_modules/es-abstract/2021/MonthFromTime.js
new file mode 100644
index 000000000..a482a7df9
--- /dev/null
+++ b/node_modules/es-abstract/2021/MonthFromTime.js
@@ -0,0 +1,47 @@
+'use strict';
+
+var DayWithinYear = require('./DayWithinYear');
+var InLeapYear = require('./InLeapYear');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.4
+
+module.exports = function MonthFromTime(t) {
+ var day = DayWithinYear(t);
+ if (0 <= day && day < 31) {
+ return 0;
+ }
+ var leap = InLeapYear(t);
+ if (31 <= day && day < (59 + leap)) {
+ return 1;
+ }
+ if ((59 + leap) <= day && day < (90 + leap)) {
+ return 2;
+ }
+ if ((90 + leap) <= day && day < (120 + leap)) {
+ return 3;
+ }
+ if ((120 + leap) <= day && day < (151 + leap)) {
+ return 4;
+ }
+ if ((151 + leap) <= day && day < (181 + leap)) {
+ return 5;
+ }
+ if ((181 + leap) <= day && day < (212 + leap)) {
+ return 6;
+ }
+ if ((212 + leap) <= day && day < (243 + leap)) {
+ return 7;
+ }
+ if ((243 + leap) <= day && day < (273 + leap)) {
+ return 8;
+ }
+ if ((273 + leap) <= day && day < (304 + leap)) {
+ return 9;
+ }
+ if ((304 + leap) <= day && day < (334 + leap)) {
+ return 10;
+ }
+ if ((334 + leap) <= day && day < (365 + leap)) {
+ return 11;
+ }
+};
diff --git a/node_modules/es-abstract/2021/NormalCompletion.js b/node_modules/es-abstract/2021/NormalCompletion.js
new file mode 100644
index 000000000..1e429dd65
--- /dev/null
+++ b/node_modules/es-abstract/2021/NormalCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/6.0/#sec-normalcompletion
+
+module.exports = function NormalCompletion(value) {
+ return new CompletionRecord('normal', value);
+};
diff --git a/node_modules/es-abstract/2021/Number/add.js b/node_modules/es-abstract/2021/Number/add.js
new file mode 100644
index 000000000..8d6271f54
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/add.js
@@ -0,0 +1,36 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isFinite = require('../../helpers/isFinite');
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-add
+
+module.exports = function NumberAdd(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ if (isNaN(x) || isNaN(y) || (x === Infinity && y === -Infinity) || (x === -Infinity && y === Infinity)) {
+ return NaN;
+ }
+
+ if (!isFinite(x)) {
+ return x;
+ }
+ if (!isFinite(y)) {
+ return y;
+ }
+
+ if (x === y && x === 0) { // both zeroes
+ return Infinity / x === -Infinity && Infinity / y === -Infinity ? -0 : +0;
+ }
+
+ // shortcut for the actual spec mechanics
+ return x + y;
+};
diff --git a/node_modules/es-abstract/2021/Number/bitwiseAND.js b/node_modules/es-abstract/2021/Number/bitwiseAND.js
new file mode 100644
index 000000000..a7159802d
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/bitwiseAND.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var NumberBitwiseOp = require('../NumberBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseAND
+
+module.exports = function NumberBitwiseAND(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ return NumberBitwiseOp('&', x, y);
+};
diff --git a/node_modules/es-abstract/2021/Number/bitwiseNOT.js b/node_modules/es-abstract/2021/Number/bitwiseNOT.js
new file mode 100644
index 000000000..ae8032a78
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/bitwiseNOT.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToInt32 = require('../ToInt32');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseNOT
+
+module.exports = function NumberBitwiseNOT(x) {
+ if (Type(x) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` argument must be a Number');
+ }
+ var oldValue = ToInt32(x);
+ // Return the result of applying the bitwise operator op to lnum and rnum. The result is a signed 32-bit integer.
+ return ~oldValue;
+};
diff --git a/node_modules/es-abstract/2021/Number/bitwiseOR.js b/node_modules/es-abstract/2021/Number/bitwiseOR.js
new file mode 100644
index 000000000..c5e67b968
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/bitwiseOR.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var NumberBitwiseOp = require('../NumberBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseOR
+
+module.exports = function NumberBitwiseOR(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ return NumberBitwiseOp('|', x, y);
+};
diff --git a/node_modules/es-abstract/2021/Number/bitwiseXOR.js b/node_modules/es-abstract/2021/Number/bitwiseXOR.js
new file mode 100644
index 000000000..a4030e9a4
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/bitwiseXOR.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var NumberBitwiseOp = require('../NumberBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseXOR
+
+module.exports = function NumberBitwiseXOR(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ return NumberBitwiseOp('^', x, y);
+};
diff --git a/node_modules/es-abstract/2021/Number/divide.js b/node_modules/es-abstract/2021/Number/divide.js
new file mode 100644
index 000000000..65244625d
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/divide.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isFinite = require('../../helpers/isFinite');
+var isNaN = require('../../helpers/isNaN');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-divide
+
+module.exports = function NumberDivide(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ if (isNaN(x) || isNaN(y) || (!isFinite(x) && !isFinite(y))) {
+ return NaN;
+ }
+ // shortcut for the actual spec mechanics
+ return x / y;
+};
diff --git a/node_modules/es-abstract/2021/Number/equal.js b/node_modules/es-abstract/2021/Number/equal.js
new file mode 100644
index 000000000..db68afa46
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/equal.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-equal
+
+module.exports = function NumberEqual(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ if (isNaN(x) || isNaN(y)) {
+ return false;
+ }
+ // shortcut for the actual spec mechanics
+ return x === y;
+};
diff --git a/node_modules/es-abstract/2021/Number/exponentiate.js b/node_modules/es-abstract/2021/Number/exponentiate.js
new file mode 100644
index 000000000..256865103
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/exponentiate.js
@@ -0,0 +1,77 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+// var isNegativeZero = require('is-negative-zero');
+
+var $pow = GetIntrinsic('%Math.pow%');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+/*
+var abs = require('../../helpers/abs');
+var isFinite = require('../../helpers/isFinite');
+var isNaN = require('../../helpers/isNaN');
+
+var IsInteger = require('../IsInteger');
+*/
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-exponentiate
+
+/* eslint max-lines-per-function: 0, max-statements: 0 */
+
+module.exports = function NumberExponentiate(base, exponent) {
+ if (Type(base) !== 'Number' || Type(exponent) !== 'Number') {
+ throw new $TypeError('Assertion failed: `base` and `exponent` arguments must be Numbers');
+ }
+ return $pow(base, exponent);
+ /*
+ if (isNaN(exponent)) {
+ return NaN;
+ }
+ if (exponent === 0) {
+ return 1;
+ }
+ if (isNaN(base)) {
+ return NaN;
+ }
+ var aB = abs(base);
+ if (aB > 1 && exponent === Infinity) {
+ return Infinity;
+ }
+ if (aB > 1 && exponent === -Infinity) {
+ return 0;
+ }
+ if (aB === 1 && (exponent === Infinity || exponent === -Infinity)) {
+ return NaN;
+ }
+ if (aB < 1 && exponent === Infinity) {
+ return +0;
+ }
+ if (aB < 1 && exponent === -Infinity) {
+ return Infinity;
+ }
+ if (base === Infinity) {
+ return exponent > 0 ? Infinity : 0;
+ }
+ if (base === -Infinity) {
+ var isOdd = true;
+ if (exponent > 0) {
+ return isOdd ? -Infinity : Infinity;
+ }
+ return isOdd ? -0 : 0;
+ }
+ if (exponent > 0) {
+ return isNegativeZero(base) ? Infinity : 0;
+ }
+ if (isNegativeZero(base)) {
+ if (exponent > 0) {
+ return isOdd ? -0 : 0;
+ }
+ return isOdd ? -Infinity : Infinity;
+ }
+ if (base < 0 && isFinite(base) && isFinite(exponent) && !IsInteger(exponent)) {
+ return NaN;
+ }
+ */
+};
diff --git a/node_modules/es-abstract/2021/Number/index.js b/node_modules/es-abstract/2021/Number/index.js
new file mode 100644
index 000000000..63ec52da6
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/index.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var add = require('./add');
+var bitwiseAND = require('./bitwiseAND');
+var bitwiseNOT = require('./bitwiseNOT');
+var bitwiseOR = require('./bitwiseOR');
+var bitwiseXOR = require('./bitwiseXOR');
+var divide = require('./divide');
+var equal = require('./equal');
+var exponentiate = require('./exponentiate');
+var leftShift = require('./leftShift');
+var lessThan = require('./lessThan');
+var multiply = require('./multiply');
+var remainder = require('./remainder');
+var sameValue = require('./sameValue');
+var sameValueZero = require('./sameValueZero');
+var signedRightShift = require('./signedRightShift');
+var subtract = require('./subtract');
+var toString = require('./toString');
+var unaryMinus = require('./unaryMinus');
+var unsignedRightShift = require('./unsignedRightShift');
+
+module.exports = {
+ add: add,
+ bitwiseAND: bitwiseAND,
+ bitwiseNOT: bitwiseNOT,
+ bitwiseOR: bitwiseOR,
+ bitwiseXOR: bitwiseXOR,
+ divide: divide,
+ equal: equal,
+ exponentiate: exponentiate,
+ leftShift: leftShift,
+ lessThan: lessThan,
+ multiply: multiply,
+ remainder: remainder,
+ sameValue: sameValue,
+ sameValueZero: sameValueZero,
+ signedRightShift: signedRightShift,
+ subtract: subtract,
+ toString: toString,
+ unaryMinus: unaryMinus,
+ unsignedRightShift: unsignedRightShift
+};
diff --git a/node_modules/es-abstract/2021/Number/leftShift.js b/node_modules/es-abstract/2021/Number/leftShift.js
new file mode 100644
index 000000000..023b3390f
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/leftShift.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToInt32 = require('../ToInt32');
+var ToUint32 = require('../ToUint32');
+var modulo = require('../modulo');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-leftShift
+
+module.exports = function NumberLeftShift(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ var lnum = ToInt32(x);
+ var rnum = ToUint32(y);
+
+ var shiftCount = modulo(rnum, 32);
+
+ return lnum << shiftCount;
+};
diff --git a/node_modules/es-abstract/2021/Number/lessThan.js b/node_modules/es-abstract/2021/Number/lessThan.js
new file mode 100644
index 000000000..5fcac24e9
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/lessThan.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-lessThan
+
+module.exports = function NumberLessThan(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ // If x is NaN, return undefined.
+ // If y is NaN, return undefined.
+ if (isNaN(x) || isNaN(y)) {
+ return void undefined;
+ }
+
+ // shortcut for the actual spec mechanics
+ return x < y;
+};
diff --git a/node_modules/es-abstract/2021/Number/multiply.js b/node_modules/es-abstract/2021/Number/multiply.js
new file mode 100644
index 000000000..2a6c478a5
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/multiply.js
@@ -0,0 +1,33 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-multiply
+
+module.exports = function NumberMultiply(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ if (isNaN(x) || isNaN(y) || (x === 0 && !isFinite(y)) || (!isFinite(x) && y === 0)) {
+ return NaN;
+ }
+ if (!isFinite(x) && !isFinite(y)) {
+ return x === y ? Infinity : -Infinity;
+ }
+ if (!isFinite(x) && y !== 0) {
+ return x > 0 ? Infinity : -Infinity;
+ }
+ if (!isFinite(y) && x !== 0) {
+ return y > 0 ? Infinity : -Infinity;
+ }
+
+ // shortcut for the actual spec mechanics
+ return x * y;
+};
diff --git a/node_modules/es-abstract/2021/Number/remainder.js b/node_modules/es-abstract/2021/Number/remainder.js
new file mode 100644
index 000000000..c9a7c2d7d
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/remainder.js
@@ -0,0 +1,32 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-remainder
+
+module.exports = function NumberRemainder(n, d) {
+ if (Type(n) !== 'Number' || Type(d) !== 'Number') {
+ throw new $TypeError('Assertion failed: `n` and `d` arguments must be Numbers');
+ }
+
+ // If either operand is NaN, the result is NaN.
+ // If the dividend is an infinity, or the divisor is a zero, or both, the result is NaN.
+ if (isNaN(n) || isNaN(d) || !isFinite(n) || d === 0) {
+ return NaN;
+ }
+
+ // If the dividend is finite and the divisor is an infinity, the result equals the dividend.
+ // If the dividend is a zero and the divisor is nonzero and finite, the result is the same as the dividend.
+ if (!isFinite(d) || n === 0) {
+ return n;
+ }
+
+ // In the remaining cases, where neither an infinity, nor a zero, nor NaN is involved…
+ return n % d;
+};
diff --git a/node_modules/es-abstract/2021/Number/sameValue.js b/node_modules/es-abstract/2021/Number/sameValue.js
new file mode 100644
index 000000000..19efc379d
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/sameValue.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var isNegativeZero = require('is-negative-zero');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+var NumberSameValueZero = require('./sameValueZero');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-sameValue
+
+module.exports = function NumberSameValue(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ if (x === 0 && y === 0) {
+ return !(isNegativeZero(x) ^ isNegativeZero(y));
+ }
+ return NumberSameValueZero(x, y);
+};
diff --git a/node_modules/es-abstract/2021/Number/sameValueZero.js b/node_modules/es-abstract/2021/Number/sameValueZero.js
new file mode 100644
index 000000000..5688198fe
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/sameValueZero.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-sameValueZero
+
+module.exports = function NumberSameValueZero(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ var xNaN = isNaN(x);
+ var yNaN = isNaN(y);
+ if (xNaN || yNaN) {
+ return xNaN === yNaN;
+ }
+ return x === y;
+};
diff --git a/node_modules/es-abstract/2021/Number/signedRightShift.js b/node_modules/es-abstract/2021/Number/signedRightShift.js
new file mode 100644
index 000000000..025f39a1c
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/signedRightShift.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToInt32 = require('../ToInt32');
+var ToUint32 = require('../ToUint32');
+var modulo = require('../modulo');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-signedRightShift
+
+module.exports = function NumberSignedRightShift(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ var lnum = ToInt32(x);
+ var rnum = ToUint32(y);
+
+ var shiftCount = modulo(rnum, 32);
+
+ return lnum >> shiftCount;
+};
diff --git a/node_modules/es-abstract/2021/Number/subtract.js b/node_modules/es-abstract/2021/Number/subtract.js
new file mode 100644
index 000000000..29a29e619
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/subtract.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+var NumberAdd = require('./add');
+var NumberUnaryMinus = require('./unaryMinus');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-subtract
+
+module.exports = function NumberSubtract(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ return NumberAdd(x, NumberUnaryMinus(y));
+};
diff --git a/node_modules/es-abstract/2021/Number/toString.js b/node_modules/es-abstract/2021/Number/toString.js
new file mode 100644
index 000000000..4f133160a
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/toString.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $String = GetIntrinsic('%String%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-tostring
+
+module.exports = function NumberToString(x) {
+ if (Type(x) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` must be a Number');
+ }
+
+ return $String(x);
+};
diff --git a/node_modules/es-abstract/2021/Number/unaryMinus.js b/node_modules/es-abstract/2021/Number/unaryMinus.js
new file mode 100644
index 000000000..794582ad8
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/unaryMinus.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-unaryMinus
+
+module.exports = function NumberUnaryMinus(x) {
+ if (Type(x) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` argument must be a Number');
+ }
+ if (isNaN(x)) {
+ return NaN;
+ }
+ return -x;
+};
diff --git a/node_modules/es-abstract/2021/Number/unsignedRightShift.js b/node_modules/es-abstract/2021/Number/unsignedRightShift.js
new file mode 100644
index 000000000..2eb967ac2
--- /dev/null
+++ b/node_modules/es-abstract/2021/Number/unsignedRightShift.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToInt32 = require('../ToInt32');
+var ToUint32 = require('../ToUint32');
+var modulo = require('../modulo');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-unsignedRightShift
+
+module.exports = function NumberUnsignedRightShift(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ var lnum = ToInt32(x);
+ var rnum = ToUint32(y);
+
+ var shiftCount = modulo(rnum, 32);
+
+ return lnum >>> shiftCount;
+};
diff --git a/node_modules/es-abstract/2021/NumberBitwiseOp.js b/node_modules/es-abstract/2021/NumberBitwiseOp.js
new file mode 100644
index 000000000..11425ffde
--- /dev/null
+++ b/node_modules/es-abstract/2021/NumberBitwiseOp.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToInt32 = require('./ToInt32');
+var ToUint32 = require('./ToUint32');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/11.0/#sec-numberbitwiseop
+
+module.exports = function NumberBitwiseOp(op, x, y) {
+ if (op !== '&' && op !== '|' && op !== '^') {
+ throw new $TypeError('Assertion failed: `op` must be `&`, `|`, or `^`');
+ }
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ var lnum = ToInt32(x);
+ var rnum = ToUint32(y);
+ if (op === '&') {
+ return lnum & rnum;
+ }
+ if (op === '|') {
+ return lnum | rnum;
+ }
+ return lnum ^ rnum;
+};
diff --git a/node_modules/es-abstract/2021/NumberToBigInt.js b/node_modules/es-abstract/2021/NumberToBigInt.js
new file mode 100644
index 000000000..9ed8ed9a9
--- /dev/null
+++ b/node_modules/es-abstract/2021/NumberToBigInt.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $RangeError = GetIntrinsic('%RangeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/12.0/#sec-numbertobigint
+
+module.exports = function NumberToBigInt(number) {
+ if (Type(number) !== 'Number') {
+ throw new $TypeError('Assertion failed: `number` must be a String');
+ }
+ if (!IsIntegralNumber(number)) {
+ throw new $RangeError('The number ' + number + ' cannot be converted to a BigInt because it is not an integer');
+ }
+ if (!$BigInt) {
+ throw new $SyntaxError('BigInts are not supported in this environment');
+ }
+ return $BigInt(number);
+};
diff --git a/node_modules/es-abstract/2021/NumericToRawBytes.js b/node_modules/es-abstract/2021/NumericToRawBytes.js
new file mode 100644
index 000000000..91549fb99
--- /dev/null
+++ b/node_modules/es-abstract/2021/NumericToRawBytes.js
@@ -0,0 +1,209 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $floor = GetIntrinsic('%Math.floor%');
+var $log = GetIntrinsic('%Math.log%');
+var $log2E = GetIntrinsic('%Math.LOG2E%');
+var $log2 = GetIntrinsic('%Math.log2%', true) || function log2(x) {
+ return $log(x) * $log2E;
+};
+var $parseInt = GetIntrinsic('%parseInt%');
+var $pow = GetIntrinsic('%Math.pow%');
+var $Number = GetIntrinsic('%Number%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $BigInt = GetIntrinsic('%BigInt%', true);
+
+var callBound = require('call-bind/callBound');
+
+var $reverse = callBound('Array.prototype.reverse');
+var $numberToString = callBound('Number.prototype.toString');
+var $strSlice = callBound('String.prototype.slice');
+
+var abs = require('./abs');
+var hasOwnProperty = require('./HasOwnProperty');
+var ToBigInt64 = require('./ToBigInt64');
+var ToBigUint64 = require('./ToBigUint64');
+var ToInt16 = require('./ToInt16');
+var ToInt32 = require('./ToInt32');
+var ToInt8 = require('./ToInt8');
+var ToUint16 = require('./ToUint16');
+var ToUint32 = require('./ToUint32');
+var ToUint8 = require('./ToUint8');
+var ToUint8Clamp = require('./ToUint8Clamp');
+var Type = require('./Type');
+
+var isNaN = require('../helpers/isNaN');
+var isFinite = require('../helpers/isFinite');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/11.0/#table-the-typedarray-constructors
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ BigInt64: 8,
+ BigUint64: 8,
+ Float32: 4,
+ Float64: 8
+};
+
+var TypeToAO = {
+ __proto__: null,
+ Int8: ToInt8,
+ Uint8: ToUint8,
+ Uint8C: ToUint8Clamp,
+ Int16: ToInt16,
+ Uint16: ToUint16,
+ Int32: ToInt32,
+ Uint32: ToUint32,
+ BigInt64: ToBigInt64,
+ BigUint64: ToBigUint64
+};
+
+// https://262.ecma-international.org/11.0/#sec-numerictorawbytes
+
+module.exports = function NumericToRawBytes(type, value, isLittleEndian) {
+ if (typeof type !== 'string' || !hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (Type(value) !== 'Number' && Type(value) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `value` must be a Number or a BigInt');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var rawBytes = [];
+ var exponent;
+
+ if (type === 'Float32') { // step 1
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 192, 127] : [127, 192, 0, 0]; // hardcoded
+ }
+
+ var leastSig;
+
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, leastSig] : [leastSig, 0, 0, 0];
+ }
+
+ if (!isFinite(value)) {
+ leastSig = value < 0 ? 255 : 127;
+ return isLittleEndian ? [0, 0, 128, leastSig] : [leastSig, 128, 0, 0];
+ }
+
+ var sign = value < 0 ? 1 : 0;
+ value = abs(value); // eslint-disable-line no-param-reassign
+
+ exponent = 0;
+ while (value >= 2) {
+ exponent += 1;
+ value /= 2; // eslint-disable-line no-param-reassign
+ }
+
+ while (value < 1) {
+ exponent -= 1;
+ value *= 2; // eslint-disable-line no-param-reassign
+ }
+
+ var mantissa = value - 1;
+ mantissa *= $pow(2, 23);
+ mantissa = $floor(mantissa);
+
+ exponent += 127;
+ exponent = exponent << 23;
+
+ var result = sign << 31;
+ result |= exponent;
+ result |= mantissa;
+
+ var byte0 = result & 255;
+ result = result >> 8;
+ var byte1 = result & 255;
+ result = result >> 8;
+ var byte2 = result & 255;
+ result = result >> 8;
+ var byte3 = result & 255;
+
+ if (isLittleEndian) {
+ return [byte0, byte1, byte2, byte3];
+ }
+ return [byte3, byte2, byte1, byte0];
+ } else if (type === 'Float64') { // step 2
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 0, leastSig] : [leastSig, 0, 0, 0, 0, 0, 0, 0];
+ }
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 248, 127] : [127, 248, 0, 0, 0, 0, 0, 0];
+ }
+ if (!isFinite(value)) {
+ var infBytes = value < 0 ? [0, 0, 0, 0, 0, 0, 240, 255] : [0, 0, 0, 0, 0, 0, 240, 127];
+ return isLittleEndian ? infBytes : $reverse(infBytes);
+ }
+
+ var isNegative = value < 0;
+ if (isNegative) { value = -value; } // eslint-disable-line no-param-reassign
+
+ exponent = $floor($log2(value));
+ var significand = (value / $pow(2, exponent)) - 1;
+
+ var bitString = '';
+ for (var i = 0; i < 52; i++) {
+ significand *= 2;
+ if (significand >= 1) {
+ bitString += '1';
+ significand -= 1;
+ } else {
+ bitString += '0';
+ }
+ }
+
+ exponent += 1023;
+ var exponentBits = $numberToString(exponent, 2);
+ while (exponentBits.length < 11) { exponentBits = '0' + exponentBits; }
+
+ var fullBitString = (isNegative ? '1' : '0') + exponentBits + bitString;
+ while (fullBitString.length < 64) { fullBitString = '0' + fullBitString; }
+
+ for (i = 0; i < 8; i++) {
+ rawBytes[i] = $parseInt($strSlice(fullBitString, i * 8, (i + 1) * 8), 2);
+ }
+
+ return isLittleEndian ? $reverse(rawBytes) : rawBytes;
+ } // step 3
+
+ var n = TypeToSizes[type]; // step 3.a
+
+ var convOp = TypeToAO[type]; // step 3.b
+
+ var intValue = convOp(value); // step 3.c
+
+ var isBigInt = type === 'BigInt64' || type === 'BigUint64';
+ /*
+ if (intValue >= 0) { // step 3.d
+ // Let rawBytes be a List containing the n-byte binary encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ } else { // step 3.e
+ // Let rawBytes be a List containing the n-byte binary 2's complement encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ }
+ */
+ if (intValue < 0) {
+ intValue = intValue >>> 0;
+ }
+ var OxFF = isBigInt ? $BigInt(0xFF) : 0xFF;
+ var eight = isBigInt ? $BigInt(8) : 8;
+ for (i = 0; i < n; i++) {
+ rawBytes[isLittleEndian ? i : n - 1 - i] = $Number(intValue & OxFF);
+ intValue = intValue >> eight;
+ }
+
+ return rawBytes; // step 4
+};
diff --git a/node_modules/es-abstract/2021/ObjectDefineProperties.js b/node_modules/es-abstract/2021/ObjectDefineProperties.js
new file mode 100644
index 000000000..f096f1ede
--- /dev/null
+++ b/node_modules/es-abstract/2021/ObjectDefineProperties.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var Get = require('./Get');
+var ToObject = require('./ToObject');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+
+var forEach = require('../helpers/forEach');
+var getOwnPropertyDescriptor = require('gopd');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var $push = callBound('Array.prototype.push');
+
+// https://262.ecma-international.org/6.0/#sec-objectdefineproperties
+module.exports = function ObjectDefineProperties(O, Properties) {
+ var props = ToObject(Properties); // step 1
+ var keys = OwnPropertyKeys(props); // step 2
+ var descriptors = []; // step 3
+
+ forEach(keys, function (nextKey) { // step 4
+ var propDesc = ToPropertyDescriptor(getOwnPropertyDescriptor(props, nextKey)); // step 4.a
+ if (typeof propDesc !== 'undefined' && propDesc['[[Enumerable]]']) { // step 4.b
+ var descObj = Get(props, nextKey); // step 4.b.i
+ var desc = ToPropertyDescriptor(descObj); // step 4.b.ii
+ $push(descriptors, [nextKey, desc]); // step 4.b.iii
+ }
+ });
+
+ forEach(descriptors, function (pair) { // step 5
+ var P = pair[0]; // step 5.a
+ var desc = pair[1]; // step 5.b
+ desc = FromPropertyDescriptor(desc); // TODO: remove this once DefinePropertyOrThrow is fixed
+ DefinePropertyOrThrow(O, P, desc); // step 5.c
+ });
+
+ return O; // step 6
+};
diff --git a/node_modules/es-abstract/2021/OrdinaryCreateFromConstructor.js b/node_modules/es-abstract/2021/OrdinaryCreateFromConstructor.js
new file mode 100644
index 000000000..8f3bb829d
--- /dev/null
+++ b/node_modules/es-abstract/2021/OrdinaryCreateFromConstructor.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var GetPrototypeFromConstructor = require('./GetPrototypeFromConstructor');
+var IsArray = require('./IsArray');
+var OrdinaryObjectCreate = require('./OrdinaryObjectCreate');
+
+// https://262.ecma-international.org/6.0/#sec-ordinarycreatefromconstructor
+
+module.exports = function OrdinaryCreateFromConstructor(constructor, intrinsicDefaultProto) {
+ GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic
+ var proto = GetPrototypeFromConstructor(constructor, intrinsicDefaultProto);
+ var slots = arguments.length < 3 ? [] : arguments[2];
+ if (!IsArray(slots)) {
+ throw new $TypeError('Assertion failed: if provided, `internalSlotsList` must be a List');
+ }
+ return OrdinaryObjectCreate(proto, slots);
+};
diff --git a/node_modules/es-abstract/2021/OrdinaryDefineOwnProperty.js b/node_modules/es-abstract/2021/OrdinaryDefineOwnProperty.js
new file mode 100644
index 000000000..34f029f7e
--- /dev/null
+++ b/node_modules/es-abstract/2021/OrdinaryDefineOwnProperty.js
@@ -0,0 +1,61 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $gOPD = require('gopd');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
+
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsExtensible = require('./IsExtensible');
+var IsPropertyKey = require('./IsPropertyKey');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty
+
+module.exports = function OrdinaryDefineOwnProperty(O, P, Desc) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: P must be a Property Key');
+ }
+ if (!isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, Desc)) {
+ throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
+ }
+ if (!$gOPD) {
+ // ES3/IE 8 fallback
+ if (IsAccessorDescriptor(Desc)) {
+ throw new $SyntaxError('This environment does not support accessor property descriptors.');
+ }
+ var creatingNormalDataProperty = !(P in O)
+ && Desc['[[Writable]]']
+ && Desc['[[Enumerable]]']
+ && Desc['[[Configurable]]']
+ && '[[Value]]' in Desc;
+ var settingExistingDataProperty = (P in O)
+ && (!('[[Configurable]]' in Desc) || Desc['[[Configurable]]'])
+ && (!('[[Enumerable]]' in Desc) || Desc['[[Enumerable]]'])
+ && (!('[[Writable]]' in Desc) || Desc['[[Writable]]'])
+ && '[[Value]]' in Desc;
+ if (creatingNormalDataProperty || settingExistingDataProperty) {
+ O[P] = Desc['[[Value]]']; // eslint-disable-line no-param-reassign
+ return SameValue(O[P], Desc['[[Value]]']);
+ }
+ throw new $SyntaxError('This environment does not support defining non-writable, non-enumerable, or non-configurable properties');
+ }
+ var desc = $gOPD(O, P);
+ var current = desc && ToPropertyDescriptor(desc);
+ var extensible = IsExtensible(O);
+ return ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current);
+};
diff --git a/node_modules/es-abstract/2021/OrdinaryGetOwnProperty.js b/node_modules/es-abstract/2021/OrdinaryGetOwnProperty.js
new file mode 100644
index 000000000..fd8035acb
--- /dev/null
+++ b/node_modules/es-abstract/2021/OrdinaryGetOwnProperty.js
@@ -0,0 +1,44 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $gOPD = require('gopd');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
+
+var has = require('has');
+
+var IsArray = require('./IsArray');
+var IsPropertyKey = require('./IsPropertyKey');
+var IsRegExp = require('./IsRegExp');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty
+
+module.exports = function OrdinaryGetOwnProperty(O, P) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: P must be a Property Key');
+ }
+ if (!has(O, P)) {
+ return void 0;
+ }
+ if (!$gOPD) {
+ // ES3 / IE 8 fallback
+ var arrayLength = IsArray(O) && P === 'length';
+ var regexLastIndex = IsRegExp(O) && P === 'lastIndex';
+ return {
+ '[[Configurable]]': !(arrayLength || regexLastIndex),
+ '[[Enumerable]]': $isEnumerable(O, P),
+ '[[Value]]': O[P],
+ '[[Writable]]': true
+ };
+ }
+ return ToPropertyDescriptor($gOPD(O, P));
+};
diff --git a/node_modules/es-abstract/2021/OrdinaryGetPrototypeOf.js b/node_modules/es-abstract/2021/OrdinaryGetPrototypeOf.js
new file mode 100644
index 000000000..ba17b9887
--- /dev/null
+++ b/node_modules/es-abstract/2021/OrdinaryGetPrototypeOf.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $getProto = require('../helpers/getProto');
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/7.0/#sec-ordinarygetprototypeof
+
+module.exports = function OrdinaryGetPrototypeOf(O) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!$getProto) {
+ throw new $TypeError('This environment does not support fetching prototypes.');
+ }
+ return $getProto(O);
+};
diff --git a/node_modules/es-abstract/2021/OrdinaryHasInstance.js b/node_modules/es-abstract/2021/OrdinaryHasInstance.js
new file mode 100644
index 000000000..85a240ca2
--- /dev/null
+++ b/node_modules/es-abstract/2021/OrdinaryHasInstance.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance
+
+module.exports = function OrdinaryHasInstance(C, O) {
+ if (IsCallable(C) === false) {
+ return false;
+ }
+ if (Type(O) !== 'Object') {
+ return false;
+ }
+ var P = Get(C, 'prototype');
+ if (Type(P) !== 'Object') {
+ throw new $TypeError('OrdinaryHasInstance called on an object with an invalid prototype property.');
+ }
+ return O instanceof C;
+};
diff --git a/node_modules/es-abstract/2021/OrdinaryHasProperty.js b/node_modules/es-abstract/2021/OrdinaryHasProperty.js
new file mode 100644
index 000000000..dd09ca3b1
--- /dev/null
+++ b/node_modules/es-abstract/2021/OrdinaryHasProperty.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty
+
+module.exports = function OrdinaryHasProperty(O, P) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: P must be a Property Key');
+ }
+ return P in O;
+};
diff --git a/node_modules/es-abstract/2021/OrdinaryObjectCreate.js b/node_modules/es-abstract/2021/OrdinaryObjectCreate.js
new file mode 100644
index 000000000..140534083
--- /dev/null
+++ b/node_modules/es-abstract/2021/OrdinaryObjectCreate.js
@@ -0,0 +1,56 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $ObjectCreate = GetIntrinsic('%Object.create%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var IsArray = require('./IsArray');
+var Type = require('./Type');
+
+var forEach = require('../helpers/forEach');
+
+var SLOT = require('internal-slot');
+
+var hasProto = require('has-proto')();
+
+// https://262.ecma-international.org/11.0/#sec-objectcreate
+
+module.exports = function OrdinaryObjectCreate(proto) {
+ if (proto !== null && Type(proto) !== 'Object') {
+ throw new $TypeError('Assertion failed: `proto` must be null or an object');
+ }
+ var additionalInternalSlotsList = arguments.length < 2 ? [] : arguments[1];
+ if (!IsArray(additionalInternalSlotsList)) {
+ throw new $TypeError('Assertion failed: `additionalInternalSlotsList` must be an Array');
+ }
+
+ // var internalSlotsList = ['[[Prototype]]', '[[Extensible]]']; // step 1
+ // internalSlotsList.push(...additionalInternalSlotsList); // step 2
+ // var O = MakeBasicObject(internalSlotsList); // step 3
+ // setProto(O, proto); // step 4
+ // return O; // step 5
+
+ var O;
+ if ($ObjectCreate) {
+ O = $ObjectCreate(proto);
+ } else if (hasProto) {
+ O = { __proto__: proto };
+ } else {
+ if (proto === null) {
+ throw new $SyntaxError('native Object.create support is required to create null objects');
+ }
+ var T = function T() {};
+ T.prototype = proto;
+ O = new T();
+ }
+
+ if (additionalInternalSlotsList.length > 0) {
+ forEach(additionalInternalSlotsList, function (slot) {
+ SLOT.set(O, slot, void undefined);
+ });
+ }
+
+ return O;
+};
diff --git a/node_modules/es-abstract/2021/OrdinarySetPrototypeOf.js b/node_modules/es-abstract/2021/OrdinarySetPrototypeOf.js
new file mode 100644
index 000000000..d2b72306c
--- /dev/null
+++ b/node_modules/es-abstract/2021/OrdinarySetPrototypeOf.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $setProto = require('../helpers/setProto');
+
+var OrdinaryGetPrototypeOf = require('./OrdinaryGetPrototypeOf');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/7.0/#sec-ordinarysetprototypeof
+
+module.exports = function OrdinarySetPrototypeOf(O, V) {
+ if (Type(V) !== 'Object' && Type(V) !== 'Null') {
+ throw new $TypeError('Assertion failed: V must be Object or Null');
+ }
+ /*
+ var extensible = IsExtensible(O);
+ var current = OrdinaryGetPrototypeOf(O);
+ if (SameValue(V, current)) {
+ return true;
+ }
+ if (!extensible) {
+ return false;
+ }
+ */
+ try {
+ $setProto(O, V);
+ } catch (e) {
+ return false;
+ }
+ return OrdinaryGetPrototypeOf(O) === V;
+ /*
+ var p = V;
+ var done = false;
+ while (!done) {
+ if (p === null) {
+ done = true;
+ } else if (SameValue(p, O)) {
+ return false;
+ } else {
+ if (wat) {
+ done = true;
+ } else {
+ p = p.[[Prototype]];
+ }
+ }
+ }
+ O.[[Prototype]] = V;
+ return true;
+ */
+};
diff --git a/node_modules/es-abstract/2021/OrdinaryToPrimitive.js b/node_modules/es-abstract/2021/OrdinaryToPrimitive.js
new file mode 100644
index 000000000..e1dbe1427
--- /dev/null
+++ b/node_modules/es-abstract/2021/OrdinaryToPrimitive.js
@@ -0,0 +1,38 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+var inspect = require('object-inspect');
+
+// https://262.ecma-international.org/8.0/#sec-ordinarytoprimitive
+
+module.exports = function OrdinaryToPrimitive(O, hint) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (/* Type(hint) !== 'String' || */ hint !== 'string' && hint !== 'number') {
+ throw new $TypeError('Assertion failed: `hint` must be "string" or "number"');
+ }
+
+ var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
+
+ for (var i = 0; i < methodNames.length; i += 1) {
+ var name = methodNames[i];
+ var method = Get(O, name);
+ if (IsCallable(method)) {
+ var result = Call(method, O);
+ if (Type(result) !== 'Object') {
+ return result;
+ }
+ }
+ }
+
+ throw new $TypeError('No primitive value for ' + inspect(O));
+};
diff --git a/node_modules/es-abstract/2021/PromiseResolve.js b/node_modules/es-abstract/2021/PromiseResolve.js
new file mode 100644
index 000000000..6474b79c4
--- /dev/null
+++ b/node_modules/es-abstract/2021/PromiseResolve.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBind = require('call-bind');
+
+var $resolve = GetIntrinsic('%Promise.resolve%', true);
+var $PromiseResolve = $resolve && callBind($resolve);
+
+// https://262.ecma-international.org/9.0/#sec-promise-resolve
+
+module.exports = function PromiseResolve(C, x) {
+ if (!$PromiseResolve) {
+ throw new SyntaxError('This environment does not support Promises.');
+ }
+ return $PromiseResolve(C, x);
+};
+
diff --git a/node_modules/es-abstract/2021/QuoteJSONString.js b/node_modules/es-abstract/2021/QuoteJSONString.js
new file mode 100644
index 000000000..0deebecf2
--- /dev/null
+++ b/node_modules/es-abstract/2021/QuoteJSONString.js
@@ -0,0 +1,54 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var forEach = require('../helpers/forEach');
+var isLeadingSurrogate = require('../helpers/isLeadingSurrogate');
+var isTrailingSurrogate = require('../helpers/isTrailingSurrogate');
+
+var $charCodeAt = callBound('String.prototype.charCodeAt');
+
+var StringToCodePoints = require('./StringToCodePoints');
+var Type = require('./Type');
+var UnicodeEscape = require('./UnicodeEscape');
+var UTF16EncodeCodePoint = require('./UTF16EncodeCodePoint');
+
+var has = require('has');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-quotejsonstring
+
+var escapes = {
+ '\u0008': '\\b',
+ '\u0009': '\\t',
+ '\u000A': '\\n',
+ '\u000C': '\\f',
+ '\u000D': '\\r',
+ '\u0022': '\\"',
+ '\u005c': '\\\\'
+};
+
+module.exports = function QuoteJSONString(value) {
+ if (Type(value) !== 'String') {
+ throw new $TypeError('Assertion failed: `value` must be a String');
+ }
+ var product = '"';
+ if (value) {
+ forEach(StringToCodePoints(value), function (C) {
+ if (has(escapes, C)) {
+ product += escapes[C];
+ } else {
+ var cCharCode = $charCodeAt(C, 0);
+ if (cCharCode < 0x20 || isLeadingSurrogate(C) || isTrailingSurrogate(C)) {
+ product += UnicodeEscape(C);
+ } else {
+ product += UTF16EncodeCodePoint(cCharCode);
+ }
+ }
+ });
+ }
+ product += '"';
+ return product;
+};
diff --git a/node_modules/es-abstract/2021/RawBytesToNumeric.js b/node_modules/es-abstract/2021/RawBytesToNumeric.js
new file mode 100644
index 000000000..c253b5d70
--- /dev/null
+++ b/node_modules/es-abstract/2021/RawBytesToNumeric.js
@@ -0,0 +1,156 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $pow = GetIntrinsic('%Math.pow%');
+var $RangeError = GetIntrinsic('%RangeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $BigInt = GetIntrinsic('%BigInt%', true);
+
+var hasOwnProperty = require('./HasOwnProperty');
+var IsArray = require('./IsArray');
+var IsBigIntElementType = require('./IsBigIntElementType');
+var IsUnsignedElementType = require('./IsUnsignedElementType');
+var Type = require('./Type');
+
+var every = require('../helpers/every');
+var isByteValue = require('../helpers/isByteValue');
+
+var $reverse = callBound('Array.prototype.reverse');
+var $slice = callBound('Array.prototype.slice');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/11.0/#table-the-typedarray-constructors
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ BigInt64: 8,
+ BigUint64: 8,
+ Float32: 4,
+ Float64: 8
+};
+
+// https://262.ecma-international.org/11.0/#sec-rawbytestonumeric
+
+module.exports = function RawBytesToNumeric(type, rawBytes, isLittleEndian) {
+ if (!hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (!IsArray(rawBytes) || !every(rawBytes, isByteValue)) {
+ throw new $TypeError('Assertion failed: `rawBytes` must be an Array of bytes');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var elementSize = TypeToSizes[type]; // step 1
+
+ if (rawBytes.length !== elementSize) {
+ // this assertion is not in the spec, but it'd be an editorial error if it were ever violated
+ throw new $RangeError('Assertion failed: `rawBytes` must have a length of ' + elementSize + ' for type ' + type);
+ }
+
+ var isBigInt = IsBigIntElementType(type);
+ if (isBigInt && !$BigInt) {
+ throw new $SyntaxError('this environment does not support BigInts');
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $slice(rawBytes, 0, elementSize);
+ if (!isLittleEndian) {
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $reverse(rawBytes); // step 2
+ }
+
+ /* eslint no-redeclare: 1 */
+ if (type === 'Float32') { // step 3
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary32 value.
+If value is an IEEE 754-2008 binary32 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = (rawBytes[3] & 0x80) >> 7; // first bit
+ var exponent = ((rawBytes[3] & 0x7F) << 1) // 7 bits from index 3
+ | ((rawBytes[2] & 0x80) >> 7); // 1 bit from index 2
+ var mantissa = ((rawBytes[2] & 0x7F) << 16) // 7 bits from index 2
+ | (rawBytes[1] << 8) // 8 bits from index 1
+ | rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign === 0 ? 0 : -0;
+ }
+ if (exponent === 0xFF && mantissa === 0) {
+ return sign === 0 ? Infinity : -Infinity;
+ }
+ if (exponent === 0xFF && mantissa !== 0) {
+ return NaN;
+ }
+
+ exponent -= 127; // subtract the bias
+
+ // return $pow(-1, sign) * mantissa / $pow(2, 23) * $pow(2, exponent);
+ // return $pow(-1, sign) * (mantissa + 0x1000000) * $pow(2, exponent - 23);
+ return $pow(-1, sign) * (1 + (mantissa / $pow(2, 23))) * $pow(2, exponent);
+ }
+
+ if (type === 'Float64') { // step 4
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary64 value.
+If value is an IEEE 754-2008 binary64 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = rawBytes[7] & 0x80 ? -1 : 1; // first bit
+ var exponent = ((rawBytes[7] & 0x7F) << 4) // 7 bits from index 7
+ | ((rawBytes[6] & 0xF0) >> 4); // 4 bits from index 6
+ var mantissa = ((rawBytes[6] & 0x0F) * 0x1000000000000) // 4 bits from index 6
+ + (rawBytes[5] * 0x10000000000) // 8 bits from index 5
+ + (rawBytes[4] * 0x100000000) // 8 bits from index 4
+ + (rawBytes[3] * 0x1000000) // 8 bits from index 3
+ + (rawBytes[2] * 0x10000) // 8 bits from index 2
+ + (rawBytes[1] * 0x100) // 8 bits from index 1
+ + rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign * 0;
+ }
+ if (exponent === 0x7FF && mantissa !== 0) {
+ return NaN;
+ }
+ if (exponent === 0x7FF && mantissa === 0) {
+ return sign * Infinity;
+ }
+
+ exponent -= 1023; // subtract the bias
+
+ return sign * (mantissa + 0x10000000000000) * $pow(2, exponent - 52);
+ }
+
+ // this is common to both branches
+ var intValue = isBigInt ? $BigInt(0) : 0;
+ for (var i = 0; i < rawBytes.length; i++) {
+ intValue |= isBigInt ? $BigInt(rawBytes[i]) << $BigInt(8 * i) : rawBytes[i] << (8 * i);
+ }
+ /*
+ Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of an unsigned little-endian binary number.
+ */
+
+ if (!IsUnsignedElementType(type)) { // steps 5-6
+ // Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of a binary little-endian 2's complement number of bit length elementSize × 8.
+ var bitLength = elementSize * 8;
+ if (bitLength < 32) {
+ var x = isBigInt ? $BigInt(32 - bitLength) : 32 - bitLength;
+ intValue = (intValue << x) >> x;
+ }
+ }
+
+ return intValue; // step 7
+};
diff --git a/node_modules/es-abstract/2021/RegExpCreate.js b/node_modules/es-abstract/2021/RegExpCreate.js
new file mode 100644
index 000000000..68e31605e
--- /dev/null
+++ b/node_modules/es-abstract/2021/RegExpCreate.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RegExp = GetIntrinsic('%RegExp%');
+
+// var RegExpAlloc = require('./RegExpAlloc');
+// var RegExpInitialize = require('./RegExpInitialize');
+var ToString = require('./ToString');
+
+// https://262.ecma-international.org/6.0/#sec-regexpcreate
+
+module.exports = function RegExpCreate(P, F) {
+ // var obj = RegExpAlloc($RegExp);
+ // return RegExpInitialize(obj, P, F);
+
+ // covers spec mechanics; bypass regex brand checking
+ var pattern = typeof P === 'undefined' ? '' : ToString(P);
+ var flags = typeof F === 'undefined' ? '' : ToString(F);
+ return new $RegExp(pattern, flags);
+};
diff --git a/node_modules/es-abstract/2021/RegExpExec.js b/node_modules/es-abstract/2021/RegExpExec.js
new file mode 100644
index 000000000..29fee1720
--- /dev/null
+++ b/node_modules/es-abstract/2021/RegExpExec.js
@@ -0,0 +1,32 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var regexExec = require('call-bind/callBound')('RegExp.prototype.exec');
+
+var Call = require('./Call');
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-regexpexec
+
+module.exports = function RegExpExec(R, S) {
+ if (Type(R) !== 'Object') {
+ throw new $TypeError('Assertion failed: `R` must be an Object');
+ }
+ if (Type(S) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a String');
+ }
+ var exec = Get(R, 'exec');
+ if (IsCallable(exec)) {
+ var result = Call(exec, R, [S]);
+ if (result === null || Type(result) === 'Object') {
+ return result;
+ }
+ throw new $TypeError('"exec" method must return `null` or an Object');
+ }
+ return regexExec(R, S);
+};
diff --git a/node_modules/es-abstract/2021/RequireObjectCoercible.js b/node_modules/es-abstract/2021/RequireObjectCoercible.js
new file mode 100644
index 000000000..9008359db
--- /dev/null
+++ b/node_modules/es-abstract/2021/RequireObjectCoercible.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('../5/CheckObjectCoercible');
diff --git a/node_modules/es-abstract/2021/SameValue.js b/node_modules/es-abstract/2021/SameValue.js
new file mode 100644
index 000000000..b73939b20
--- /dev/null
+++ b/node_modules/es-abstract/2021/SameValue.js
@@ -0,0 +1,13 @@
+'use strict';
+
+var $isNaN = require('../helpers/isNaN');
+
+// http://262.ecma-international.org/5.1/#sec-9.12
+
+module.exports = function SameValue(x, y) {
+ if (x === y) { // 0 === -0, but they are not identical.
+ if (x === 0) { return 1 / x === 1 / y; }
+ return true;
+ }
+ return $isNaN(x) && $isNaN(y);
+};
diff --git a/node_modules/es-abstract/2021/SameValueNonNumeric.js b/node_modules/es-abstract/2021/SameValueNonNumeric.js
new file mode 100644
index 000000000..04f6cbfbe
--- /dev/null
+++ b/node_modules/es-abstract/2021/SameValueNonNumeric.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/11.0/#sec-samevaluenonnumeric
+
+module.exports = function SameValueNonNumeric(x, y) {
+ var xType = Type(x);
+ if (xType === 'Number' || xType === 'BigInt') {
+ throw new $TypeError('Assertion failed: SameValueNonNumeric does not accept Number or BigInt values');
+ }
+ if (xType !== Type(y)) {
+ throw new $TypeError('SameValueNonNumeric requires two non-numeric values of the same type.');
+ }
+ return SameValue(x, y);
+};
diff --git a/node_modules/es-abstract/2021/SameValueZero.js b/node_modules/es-abstract/2021/SameValueZero.js
new file mode 100644
index 000000000..bf1a1486a
--- /dev/null
+++ b/node_modules/es-abstract/2021/SameValueZero.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var $isNaN = require('../helpers/isNaN');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-samevaluezero
+
+module.exports = function SameValueZero(x, y) {
+ return (x === y) || ($isNaN(x) && $isNaN(y));
+};
diff --git a/node_modules/es-abstract/2021/SecFromTime.js b/node_modules/es-abstract/2021/SecFromTime.js
new file mode 100644
index 000000000..fc2e44560
--- /dev/null
+++ b/node_modules/es-abstract/2021/SecFromTime.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var floor = require('./floor');
+var modulo = require('./modulo');
+
+var timeConstants = require('../helpers/timeConstants');
+var msPerSecond = timeConstants.msPerSecond;
+var SecondsPerMinute = timeConstants.SecondsPerMinute;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.10
+
+module.exports = function SecFromTime(t) {
+ return modulo(floor(t / msPerSecond), SecondsPerMinute);
+};
diff --git a/node_modules/es-abstract/2021/Set.js b/node_modules/es-abstract/2021/Set.js
new file mode 100644
index 000000000..097149887
--- /dev/null
+++ b/node_modules/es-abstract/2021/Set.js
@@ -0,0 +1,47 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+
+// IE 9 does not throw in strict mode when writability/configurability/extensibility is violated
+var noThrowOnStrictViolation = (function () {
+ try {
+ delete [].length;
+ return true;
+ } catch (e) {
+ return false;
+ }
+}());
+
+// https://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw
+
+module.exports = function Set(O, P, V, Throw) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: `O` must be an Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: `P` must be a Property Key');
+ }
+ if (Type(Throw) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `Throw` must be a Boolean');
+ }
+ if (Throw) {
+ O[P] = V; // eslint-disable-line no-param-reassign
+ if (noThrowOnStrictViolation && !SameValue(O[P], V)) {
+ throw new $TypeError('Attempted to assign to readonly property.');
+ }
+ return true;
+ }
+ try {
+ O[P] = V; // eslint-disable-line no-param-reassign
+ return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
+ } catch (e) {
+ return false;
+ }
+
+};
diff --git a/node_modules/es-abstract/2021/SetFunctionLength.js b/node_modules/es-abstract/2021/SetFunctionLength.js
new file mode 100644
index 000000000..8c06b2423
--- /dev/null
+++ b/node_modules/es-abstract/2021/SetFunctionLength.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var HasOwnProperty = require('./HasOwnProperty');
+var IsExtensible = require('./IsExtensible');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-setfunctionlength
+
+module.exports = function SetFunctionLength(F, length) {
+ if (typeof F !== 'function' || !IsExtensible(F) || HasOwnProperty(F, 'length')) {
+ throw new $TypeError('Assertion failed: `F` must be an extensible function and lack an own `length` property');
+ }
+ if (Type(length) !== 'Number') {
+ throw new $TypeError('Assertion failed: `length` must be a Number');
+ }
+ if (length !== Infinity && (!IsIntegralNumber(length) || length < 0)) {
+ throw new $TypeError('Assertion failed: `length` must be ∞, or an integer >= 0');
+ }
+ return DefinePropertyOrThrow(F, 'length', {
+ '[[Configurable]]': true,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': false
+ });
+};
diff --git a/node_modules/es-abstract/2021/SetFunctionName.js b/node_modules/es-abstract/2021/SetFunctionName.js
new file mode 100644
index 000000000..03ec2227c
--- /dev/null
+++ b/node_modules/es-abstract/2021/SetFunctionName.js
@@ -0,0 +1,44 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var has = require('has');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var getSymbolDescription = require('get-symbol-description');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var IsExtensible = require('./IsExtensible');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-setfunctionname
+
+module.exports = function SetFunctionName(F, name) {
+ if (typeof F !== 'function') {
+ throw new $TypeError('Assertion failed: `F` must be a function');
+ }
+ if (!IsExtensible(F) || has(F, 'name')) {
+ throw new $TypeError('Assertion failed: `F` must be extensible, and must not have a `name` own property');
+ }
+ var nameType = Type(name);
+ if (nameType !== 'Symbol' && nameType !== 'String') {
+ throw new $TypeError('Assertion failed: `name` must be a Symbol or a String');
+ }
+ if (nameType === 'Symbol') {
+ var description = getSymbolDescription(name);
+ // eslint-disable-next-line no-param-reassign
+ name = typeof description === 'undefined' ? '' : '[' + description + ']';
+ }
+ if (arguments.length > 2) {
+ var prefix = arguments[2];
+ // eslint-disable-next-line no-param-reassign
+ name = prefix + ' ' + name;
+ }
+ return DefinePropertyOrThrow(F, 'name', {
+ '[[Value]]': name,
+ '[[Writable]]': false,
+ '[[Enumerable]]': false,
+ '[[Configurable]]': true
+ });
+};
diff --git a/node_modules/es-abstract/2021/SetIntegrityLevel.js b/node_modules/es-abstract/2021/SetIntegrityLevel.js
new file mode 100644
index 000000000..546f3e74f
--- /dev/null
+++ b/node_modules/es-abstract/2021/SetIntegrityLevel.js
@@ -0,0 +1,57 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $gOPD = require('gopd');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
+
+var forEach = require('../helpers/forEach');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-setintegritylevel
+
+module.exports = function SetIntegrityLevel(O, level) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (level !== 'sealed' && level !== 'frozen') {
+ throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`');
+ }
+ if (!$preventExtensions) {
+ throw new $SyntaxError('SetIntegrityLevel requires native `Object.preventExtensions` support');
+ }
+ var status = $preventExtensions(O);
+ if (!status) {
+ return false;
+ }
+ if (!$gOPN) {
+ throw new $SyntaxError('SetIntegrityLevel requires native `Object.getOwnPropertyNames` support');
+ }
+ var theKeys = $gOPN(O);
+ if (level === 'sealed') {
+ forEach(theKeys, function (k) {
+ DefinePropertyOrThrow(O, k, { configurable: false });
+ });
+ } else if (level === 'frozen') {
+ forEach(theKeys, function (k) {
+ var currentDesc = $gOPD(O, k);
+ if (typeof currentDesc !== 'undefined') {
+ var desc;
+ if (IsAccessorDescriptor(ToPropertyDescriptor(currentDesc))) {
+ desc = { configurable: false };
+ } else {
+ desc = { configurable: false, writable: false };
+ }
+ DefinePropertyOrThrow(O, k, desc);
+ }
+ });
+ }
+ return true;
+};
diff --git a/node_modules/es-abstract/2021/SpeciesConstructor.js b/node_modules/es-abstract/2021/SpeciesConstructor.js
new file mode 100644
index 000000000..491eb9b87
--- /dev/null
+++ b/node_modules/es-abstract/2021/SpeciesConstructor.js
@@ -0,0 +1,32 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $species = GetIntrinsic('%Symbol.species%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsConstructor = require('./IsConstructor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-speciesconstructor
+
+module.exports = function SpeciesConstructor(O, defaultConstructor) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ var C = O.constructor;
+ if (typeof C === 'undefined') {
+ return defaultConstructor;
+ }
+ if (Type(C) !== 'Object') {
+ throw new $TypeError('O.constructor is not an Object');
+ }
+ var S = $species ? C[$species] : void 0;
+ if (S == null) {
+ return defaultConstructor;
+ }
+ if (IsConstructor(S)) {
+ return S;
+ }
+ throw new $TypeError('no constructor found');
+};
diff --git a/node_modules/es-abstract/2021/SplitMatch.js b/node_modules/es-abstract/2021/SplitMatch.js
new file mode 100644
index 000000000..a1bc6c4d5
--- /dev/null
+++ b/node_modules/es-abstract/2021/SplitMatch.js
@@ -0,0 +1,38 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+var $charAt = callBound('String.prototype.charAt');
+
+// https://262.ecma-international.org/6.0/#sec-splitmatch
+
+module.exports = function SplitMatch(S, q, R) {
+ if (Type(S) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a String');
+ }
+ if (!IsIntegralNumber(q)) {
+ throw new $TypeError('Assertion failed: `q` must be an integer');
+ }
+ if (Type(R) !== 'String') {
+ throw new $TypeError('Assertion failed: `R` must be a String');
+ }
+ var r = R.length;
+ var s = S.length;
+ if (q + r > s) {
+ return false;
+ }
+
+ for (var i = 0; i < r; i += 1) {
+ if ($charAt(S, q + i) !== $charAt(R, i)) {
+ return false;
+ }
+ }
+
+ return q + r;
+};
diff --git a/node_modules/es-abstract/2021/StrictEqualityComparison.js b/node_modules/es-abstract/2021/StrictEqualityComparison.js
new file mode 100644
index 000000000..f3435ba9d
--- /dev/null
+++ b/node_modules/es-abstract/2021/StrictEqualityComparison.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/5.1/#sec-11.9.6
+
+module.exports = function StrictEqualityComparison(x, y) {
+ var xType = Type(x);
+ var yType = Type(y);
+ if (xType !== yType) {
+ return false;
+ }
+ if (xType === 'Undefined' || xType === 'Null') {
+ return true;
+ }
+ return x === y; // shortcut for steps 4-7
+};
diff --git a/node_modules/es-abstract/2021/StringCreate.js b/node_modules/es-abstract/2021/StringCreate.js
new file mode 100644
index 000000000..bd02820f7
--- /dev/null
+++ b/node_modules/es-abstract/2021/StringCreate.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Object = GetIntrinsic('%Object%');
+var $StringPrototype = GetIntrinsic('%String.prototype%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var Type = require('./Type');
+
+var setProto = require('../helpers/setProto');
+
+// https://262.ecma-international.org/6.0/#sec-stringcreate
+
+module.exports = function StringCreate(value, prototype) {
+ if (Type(value) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a String');
+ }
+
+ var S = $Object(value);
+ if (prototype !== $StringPrototype) {
+ if (setProto) {
+ setProto(S, prototype);
+ } else {
+ throw new $SyntaxError('StringCreate: a `proto` argument that is not `String.prototype` is not supported in an environment that does not support setting the [[Prototype]]');
+ }
+ }
+
+ var length = value.length;
+ DefinePropertyOrThrow(S, 'length', {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': false
+ });
+
+ return S;
+};
diff --git a/node_modules/es-abstract/2021/StringGetOwnProperty.js b/node_modules/es-abstract/2021/StringGetOwnProperty.js
new file mode 100644
index 000000000..ecffb0b77
--- /dev/null
+++ b/node_modules/es-abstract/2021/StringGetOwnProperty.js
@@ -0,0 +1,48 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var $charAt = callBound('String.prototype.charAt');
+var $stringToString = callBound('String.prototype.toString');
+
+var CanonicalNumericIndexString = require('./CanonicalNumericIndexString');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+var isNegativeZero = require('is-negative-zero');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-stringgetownproperty
+
+module.exports = function StringGetOwnProperty(S, P) {
+ var str;
+ if (Type(S) === 'Object') {
+ try {
+ str = $stringToString(S);
+ } catch (e) { /**/ }
+ }
+ if (Type(str) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a boxed string object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+ if (Type(P) !== 'String') {
+ return void undefined;
+ }
+ var index = CanonicalNumericIndexString(P);
+ var len = str.length;
+ if (typeof index === 'undefined' || !IsIntegralNumber(index) || isNegativeZero(index) || index < 0 || len <= index) {
+ return void undefined;
+ }
+ var resultStr = $charAt(S, index);
+ return {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': true,
+ '[[Value]]': resultStr,
+ '[[Writable]]': false
+ };
+};
diff --git a/node_modules/es-abstract/2021/StringIndexOf.js b/node_modules/es-abstract/2021/StringIndexOf.js
new file mode 100644
index 000000000..371d5aa38
--- /dev/null
+++ b/node_modules/es-abstract/2021/StringIndexOf.js
@@ -0,0 +1,39 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+var $slice = callBound('String.prototype.slice');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-stringindexof
+
+module.exports = function StringIndexOf(string, searchValue, fromIndex) {
+ if (Type(string) !== 'String') {
+ throw new $TypeError('Assertion failed: `string` must be a String');
+ }
+ if (Type(searchValue) !== 'String') {
+ throw new $TypeError('Assertion failed: `searchValue` must be a String');
+ }
+ if (!IsIntegralNumber(fromIndex) || fromIndex < 0) {
+ throw new $TypeError('Assertion failed: `fromIndex` must be a non-negative integer');
+ }
+
+ var len = string.length;
+ if (searchValue === '' && fromIndex <= len) {
+ return fromIndex;
+ }
+
+ var searchLen = searchValue.length;
+ for (var i = fromIndex; i <= (len - searchLen); i += 1) {
+ var candidate = $slice(string, i, i + searchLen);
+ if (candidate === searchValue) {
+ return i;
+ }
+ }
+ return -1;
+};
diff --git a/node_modules/es-abstract/2021/StringPad.js b/node_modules/es-abstract/2021/StringPad.js
new file mode 100644
index 000000000..cdf69001b
--- /dev/null
+++ b/node_modules/es-abstract/2021/StringPad.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var ToLength = require('./ToLength');
+var ToString = require('./ToString');
+
+var $strSlice = callBound('String.prototype.slice');
+
+// https://262.ecma-international.org/11.0/#sec-stringpad
+
+module.exports = function StringPad(O, maxLength, fillString, placement) {
+ if (placement !== 'start' && placement !== 'end') {
+ throw new $TypeError('Assertion failed: `placement` must be "start" or "end"');
+ }
+ var S = ToString(O);
+ var intMaxLength = ToLength(maxLength);
+ var stringLength = S.length;
+ if (intMaxLength <= stringLength) {
+ return S;
+ }
+ var filler = typeof fillString === 'undefined' ? ' ' : ToString(fillString);
+ if (filler === '') {
+ return S;
+ }
+ var fillLen = intMaxLength - stringLength;
+
+ // the String value consisting of repeated concatenations of filler truncated to length fillLen.
+ var truncatedStringFiller = '';
+ while (truncatedStringFiller.length < fillLen) {
+ truncatedStringFiller += filler;
+ }
+ truncatedStringFiller = $strSlice(truncatedStringFiller, 0, fillLen);
+
+ if (placement === 'start') {
+ return truncatedStringFiller + S;
+ }
+ return S + truncatedStringFiller;
+};
diff --git a/node_modules/es-abstract/2021/StringToBigInt.js b/node_modules/es-abstract/2021/StringToBigInt.js
new file mode 100644
index 000000000..0bc3cec01
--- /dev/null
+++ b/node_modules/es-abstract/2021/StringToBigInt.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+// https://262.ecma-international.org/11.0/#sec-stringtobigint
+
+module.exports = function StringToBigInt(argument) {
+ if (typeof argument !== 'string') {
+ throw new $TypeError('`argument` must be a string');
+ }
+ if (!$BigInt) {
+ throw new $SyntaxError('BigInts are not supported in this environment');
+ }
+ try {
+ return $BigInt(argument);
+ } catch (e) {
+ return NaN;
+ }
+};
diff --git a/node_modules/es-abstract/2021/StringToCodePoints.js b/node_modules/es-abstract/2021/StringToCodePoints.js
new file mode 100644
index 000000000..336bd06fb
--- /dev/null
+++ b/node_modules/es-abstract/2021/StringToCodePoints.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $push = callBound('Array.prototype.push');
+
+var CodePointAt = require('./CodePointAt');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-stringtocodepoints
+
+module.exports = function StringToCodePoints(string) {
+ if (Type(string) !== 'String') {
+ throw new $TypeError('Assertion failed: `string` must be a String');
+ }
+ var codePoints = [];
+ var size = string.length;
+ var position = 0;
+ while (position < size) {
+ var cp = CodePointAt(string, position);
+ $push(codePoints, cp['[[CodePoint]]']);
+ position += cp['[[CodeUnitCount]]'];
+ }
+ return codePoints;
+};
diff --git a/node_modules/es-abstract/2021/SymbolDescriptiveString.js b/node_modules/es-abstract/2021/SymbolDescriptiveString.js
new file mode 100644
index 000000000..1efd1316b
--- /dev/null
+++ b/node_modules/es-abstract/2021/SymbolDescriptiveString.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $SymbolToString = callBound('Symbol.prototype.toString', true);
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-symboldescriptivestring
+
+module.exports = function SymbolDescriptiveString(sym) {
+ if (Type(sym) !== 'Symbol') {
+ throw new $TypeError('Assertion failed: `sym` must be a Symbol');
+ }
+ return $SymbolToString(sym);
+};
diff --git a/node_modules/es-abstract/2021/TestIntegrityLevel.js b/node_modules/es-abstract/2021/TestIntegrityLevel.js
new file mode 100644
index 000000000..7f95a6e1d
--- /dev/null
+++ b/node_modules/es-abstract/2021/TestIntegrityLevel.js
@@ -0,0 +1,42 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $gOPD = require('gopd');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var every = require('../helpers/every');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsExtensible = require('./IsExtensible');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-testintegritylevel
+
+module.exports = function TestIntegrityLevel(O, level) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (level !== 'sealed' && level !== 'frozen') {
+ throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`');
+ }
+ var status = IsExtensible(O);
+ if (status) {
+ return false;
+ }
+ var theKeys = OwnPropertyKeys(O);
+ return theKeys.length === 0 || every(theKeys, function (k) {
+ var currentDesc = $gOPD(O, k);
+ if (typeof currentDesc !== 'undefined') {
+ if (currentDesc.configurable) {
+ return false;
+ }
+ if (level === 'frozen' && IsDataDescriptor(ToPropertyDescriptor(currentDesc)) && currentDesc.writable) {
+ return false;
+ }
+ }
+ return true;
+ });
+};
diff --git a/node_modules/es-abstract/2021/ThrowCompletion.js b/node_modules/es-abstract/2021/ThrowCompletion.js
new file mode 100644
index 000000000..b7d388a35
--- /dev/null
+++ b/node_modules/es-abstract/2021/ThrowCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/9.0/#sec-throwcompletion
+
+module.exports = function ThrowCompletion(argument) {
+ return new CompletionRecord('throw', argument);
+};
diff --git a/node_modules/es-abstract/2021/TimeClip.js b/node_modules/es-abstract/2021/TimeClip.js
new file mode 100644
index 000000000..e416cab4b
--- /dev/null
+++ b/node_modules/es-abstract/2021/TimeClip.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Date = GetIntrinsic('%Date%');
+var $Number = GetIntrinsic('%Number%');
+
+var $isFinite = require('../helpers/isFinite');
+
+var abs = require('./abs');
+var ToNumber = require('./ToNumber');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.14
+
+module.exports = function TimeClip(time) {
+ if (!$isFinite(time) || abs(time) > 8.64e15) {
+ return NaN;
+ }
+ return $Number(new $Date(ToNumber(time)));
+};
+
diff --git a/node_modules/es-abstract/2021/TimeFromYear.js b/node_modules/es-abstract/2021/TimeFromYear.js
new file mode 100644
index 000000000..f3518a41a
--- /dev/null
+++ b/node_modules/es-abstract/2021/TimeFromYear.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var msPerDay = require('../helpers/timeConstants').msPerDay;
+
+var DayFromYear = require('./DayFromYear');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.3
+
+module.exports = function TimeFromYear(y) {
+ return msPerDay * DayFromYear(y);
+};
diff --git a/node_modules/es-abstract/2021/TimeString.js b/node_modules/es-abstract/2021/TimeString.js
new file mode 100644
index 000000000..051c4728e
--- /dev/null
+++ b/node_modules/es-abstract/2021/TimeString.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $isNaN = require('../helpers/isNaN');
+var padTimeComponent = require('../helpers/padTimeComponent');
+
+var HourFromTime = require('./HourFromTime');
+var MinFromTime = require('./MinFromTime');
+var SecFromTime = require('./SecFromTime');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/9.0/#sec-timestring
+
+module.exports = function TimeString(tv) {
+ if (Type(tv) !== 'Number' || $isNaN(tv)) {
+ throw new $TypeError('Assertion failed: `tv` must be a non-NaN Number');
+ }
+ var hour = HourFromTime(tv);
+ var minute = MinFromTime(tv);
+ var second = SecFromTime(tv);
+ return padTimeComponent(hour) + ':' + padTimeComponent(minute) + ':' + padTimeComponent(second) + '\x20GMT';
+};
diff --git a/node_modules/es-abstract/2021/TimeWithinDay.js b/node_modules/es-abstract/2021/TimeWithinDay.js
new file mode 100644
index 000000000..2bba83386
--- /dev/null
+++ b/node_modules/es-abstract/2021/TimeWithinDay.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var modulo = require('./modulo');
+
+var msPerDay = require('../helpers/timeConstants').msPerDay;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.2
+
+module.exports = function TimeWithinDay(t) {
+ return modulo(t, msPerDay);
+};
+
diff --git a/node_modules/es-abstract/2021/ToBigInt.js b/node_modules/es-abstract/2021/ToBigInt.js
new file mode 100644
index 000000000..aa24d7b71
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToBigInt.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $asIntN = GetIntrinsic('%BigInt.asIntN%', true);
+var $Number = GetIntrinsic('%Number%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var ToPrimitive = require('./ToPrimitive');
+
+// https://262.ecma-international.org/11.0/#sec-tobigint
+
+module.exports = function ToBigInt(argument) {
+ if (!$BigInt) {
+ throw new $SyntaxError('BigInts are not supported in this environment');
+ }
+
+ var prim = ToPrimitive(argument, $Number);
+
+ if (typeof prim === 'number') {
+ return $asIntN(0, prim);
+ }
+ return $BigInt(prim);
+};
diff --git a/node_modules/es-abstract/2021/ToBigInt64.js b/node_modules/es-abstract/2021/ToBigInt64.js
new file mode 100644
index 000000000..65c1c55d9
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToBigInt64.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $pow = GetIntrinsic('%Math.pow%');
+
+var ToBigInt = require('./ToBigInt');
+var BigIntRemainder = require('./BigInt/remainder');
+
+var modBigInt = require('../helpers/modBigInt');
+
+// BigInt(2**63), but node v10.4-v10.8 have a bug where you can't `BigInt(x)` anything larger than MAX_SAFE_INTEGER
+var twoSixtyThree = $BigInt && (BigInt($pow(2, 32)) * BigInt($pow(2, 31)));
+
+// BigInt(2**64), but node v10.4-v10.8 have a bug where you can't `BigInt(x)` anything larger than MAX_SAFE_INTEGER
+var twoSixtyFour = $BigInt && (BigInt($pow(2, 32)) * BigInt($pow(2, 32)));
+
+// https://262.ecma-international.org/11.0/#sec-tobigint64
+
+module.exports = function ToBigInt64(argument) {
+ var n = ToBigInt(argument);
+ var int64bit = modBigInt(BigIntRemainder, n, twoSixtyFour);
+ return int64bit >= twoSixtyThree ? int64bit - twoSixtyFour : int64bit;
+};
diff --git a/node_modules/es-abstract/2021/ToBigUint64.js b/node_modules/es-abstract/2021/ToBigUint64.js
new file mode 100644
index 000000000..ff68236a8
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToBigUint64.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $pow = GetIntrinsic('%Math.pow%');
+
+var ToBigInt = require('./ToBigInt');
+var BigIntRemainder = require('./BigInt/remainder');
+
+var modBigInt = require('../helpers/modBigInt');
+
+// BigInt(2**64), but node v10.4-v10.8 have a bug where you can't `BigInt(x)` anything larger than MAX_SAFE_INTEGER
+var twoSixtyFour = $BigInt && (BigInt($pow(2, 32)) * BigInt($pow(2, 32)));
+
+// https://262.ecma-international.org/11.0/#sec-tobiguint64
+
+module.exports = function ToBigUint64(argument) {
+ var n = ToBigInt(argument);
+ var int64bit = modBigInt(BigIntRemainder, n, twoSixtyFour);
+ return int64bit;
+};
diff --git a/node_modules/es-abstract/2021/ToBoolean.js b/node_modules/es-abstract/2021/ToBoolean.js
new file mode 100644
index 000000000..466404bf9
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToBoolean.js
@@ -0,0 +1,5 @@
+'use strict';
+
+// http://262.ecma-international.org/5.1/#sec-9.2
+
+module.exports = function ToBoolean(value) { return !!value; };
diff --git a/node_modules/es-abstract/2021/ToDateString.js b/node_modules/es-abstract/2021/ToDateString.js
new file mode 100644
index 000000000..e636a9ba6
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToDateString.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Date = GetIntrinsic('%Date%');
+
+var $isNaN = require('../helpers/isNaN');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-todatestring
+
+module.exports = function ToDateString(tv) {
+ if (Type(tv) !== 'Number') {
+ throw new $TypeError('Assertion failed: `tv` must be a Number');
+ }
+ if ($isNaN(tv)) {
+ return 'Invalid Date';
+ }
+ return $Date(tv);
+};
diff --git a/node_modules/es-abstract/2021/ToIndex.js b/node_modules/es-abstract/2021/ToIndex.js
new file mode 100644
index 000000000..cc747e225
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToIndex.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RangeError = GetIntrinsic('%RangeError%');
+
+var ToIntegerOrInfinity = require('./ToIntegerOrInfinity');
+var ToLength = require('./ToLength');
+var SameValue = require('./SameValue');
+
+// https://www.ecma-international.org/ecma-262/8.0/#sec-toindex
+
+module.exports = function ToIndex(value) {
+ if (typeof value === 'undefined') {
+ return 0;
+ }
+ var integerIndex = ToIntegerOrInfinity(value);
+ if (integerIndex < 0) {
+ throw new $RangeError('index must be >= 0');
+ }
+ var index = ToLength(integerIndex);
+ if (!SameValue(integerIndex, index)) {
+ throw new $RangeError('index must be >= 0 and < 2 ** 53 - 1');
+ }
+ return index;
+};
diff --git a/node_modules/es-abstract/2021/ToInt16.js b/node_modules/es-abstract/2021/ToInt16.js
new file mode 100644
index 000000000..cb8e7934b
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToInt16.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var ToUint16 = require('./ToUint16');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-toint16
+
+module.exports = function ToInt16(argument) {
+ var int16bit = ToUint16(argument);
+ return int16bit >= 0x8000 ? int16bit - 0x10000 : int16bit;
+};
diff --git a/node_modules/es-abstract/2021/ToInt32.js b/node_modules/es-abstract/2021/ToInt32.js
new file mode 100644
index 000000000..b879ccc47
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToInt32.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ToNumber = require('./ToNumber');
+
+// http://262.ecma-international.org/5.1/#sec-9.5
+
+module.exports = function ToInt32(x) {
+ return ToNumber(x) >> 0;
+};
diff --git a/node_modules/es-abstract/2021/ToInt8.js b/node_modules/es-abstract/2021/ToInt8.js
new file mode 100644
index 000000000..bc452d826
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToInt8.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var ToUint8 = require('./ToUint8');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-toint8
+
+module.exports = function ToInt8(argument) {
+ var int8bit = ToUint8(argument);
+ return int8bit >= 0x80 ? int8bit - 0x100 : int8bit;
+};
diff --git a/node_modules/es-abstract/2021/ToIntegerOrInfinity.js b/node_modules/es-abstract/2021/ToIntegerOrInfinity.js
new file mode 100644
index 000000000..5f55e1ea0
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToIntegerOrInfinity.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var abs = require('./abs');
+var floor = require('./floor');
+var ToNumber = require('./ToNumber');
+
+var $isNaN = require('../helpers/isNaN');
+var $isFinite = require('../helpers/isFinite');
+var $sign = require('../helpers/sign');
+
+// https://262.ecma-international.org/12.0/#sec-tointegerorinfinity
+
+module.exports = function ToIntegerOrInfinity(value) {
+ var number = ToNumber(value);
+ if ($isNaN(number) || number === 0) { return 0; }
+ if (!$isFinite(number)) { return number; }
+ var integer = floor(abs(number));
+ if (integer === 0) { return 0; }
+ return $sign(number) * integer;
+};
diff --git a/node_modules/es-abstract/2021/ToLength.js b/node_modules/es-abstract/2021/ToLength.js
new file mode 100644
index 000000000..0468c3e71
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToLength.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');
+
+var ToIntegerOrInfinity = require('./ToIntegerOrInfinity');
+
+module.exports = function ToLength(argument) {
+ var len = ToIntegerOrInfinity(argument);
+ if (len <= 0) { return 0; } // includes converting -0 to +0
+ if (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; }
+ return len;
+};
diff --git a/node_modules/es-abstract/2021/ToNumber.js b/node_modules/es-abstract/2021/ToNumber.js
new file mode 100644
index 000000000..c9e29f2c4
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToNumber.js
@@ -0,0 +1,62 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Number = GetIntrinsic('%Number%');
+var $RegExp = GetIntrinsic('%RegExp%');
+var $parseInteger = GetIntrinsic('%parseInt%');
+
+var callBound = require('call-bind/callBound');
+var regexTester = require('safe-regex-test');
+var isPrimitive = require('../helpers/isPrimitive');
+
+var $strSlice = callBound('String.prototype.slice');
+var isBinary = regexTester(/^0b[01]+$/i);
+var isOctal = regexTester(/^0o[0-7]+$/i);
+var isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i);
+var nonWS = ['\u0085', '\u200b', '\ufffe'].join('');
+var nonWSregex = new $RegExp('[' + nonWS + ']', 'g');
+var hasNonWS = regexTester(nonWSregex);
+
+// whitespace from: https://es5.github.io/#x15.5.4.20
+// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324
+var ws = [
+ '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003',
+ '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028',
+ '\u2029\uFEFF'
+].join('');
+var trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');
+var $replace = callBound('String.prototype.replace');
+var $trim = function (value) {
+ return $replace(value, trimRegex, '');
+};
+
+var ToPrimitive = require('./ToPrimitive');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-tonumber
+
+module.exports = function ToNumber(argument) {
+ var value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number);
+ if (typeof value === 'symbol') {
+ throw new $TypeError('Cannot convert a Symbol value to a number');
+ }
+ if (typeof value === 'bigint') {
+ throw new $TypeError('Conversion from \'BigInt\' to \'number\' is not allowed.');
+ }
+ if (typeof value === 'string') {
+ if (isBinary(value)) {
+ return ToNumber($parseInteger($strSlice(value, 2), 2));
+ } else if (isOctal(value)) {
+ return ToNumber($parseInteger($strSlice(value, 2), 8));
+ } else if (hasNonWS(value) || isInvalidHexLiteral(value)) {
+ return NaN;
+ }
+ var trimmed = $trim(value);
+ if (trimmed !== value) {
+ return ToNumber(trimmed);
+ }
+
+ }
+ return $Number(value);
+};
diff --git a/node_modules/es-abstract/2021/ToNumeric.js b/node_modules/es-abstract/2021/ToNumeric.js
new file mode 100644
index 000000000..c18776094
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToNumeric.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Number = GetIntrinsic('%Number%');
+
+var isPrimitive = require('../helpers/isPrimitive');
+
+var ToPrimitive = require('./ToPrimitive');
+var ToNumber = require('./ToNumber');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/6.0/#sec-tonumber
+
+module.exports = function ToNumeric(argument) {
+ var primValue = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number);
+ if (Type(primValue) === 'BigInt') {
+ return primValue;
+ }
+ return ToNumber(primValue);
+};
diff --git a/node_modules/es-abstract/2021/ToObject.js b/node_modules/es-abstract/2021/ToObject.js
new file mode 100644
index 000000000..cb26bac06
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToObject.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Object = GetIntrinsic('%Object%');
+
+var RequireObjectCoercible = require('./RequireObjectCoercible');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-toobject
+
+module.exports = function ToObject(value) {
+ RequireObjectCoercible(value);
+ return $Object(value);
+};
diff --git a/node_modules/es-abstract/2021/ToPrimitive.js b/node_modules/es-abstract/2021/ToPrimitive.js
new file mode 100644
index 000000000..0fbe9b807
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToPrimitive.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var toPrimitive = require('es-to-primitive/es2015');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-toprimitive
+
+module.exports = function ToPrimitive(input) {
+ if (arguments.length > 1) {
+ return toPrimitive(input, arguments[1]);
+ }
+ return toPrimitive(input);
+};
diff --git a/node_modules/es-abstract/2021/ToPropertyDescriptor.js b/node_modules/es-abstract/2021/ToPropertyDescriptor.js
new file mode 100644
index 000000000..53db87450
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToPropertyDescriptor.js
@@ -0,0 +1,52 @@
+'use strict';
+
+var has = require('has');
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+var ToBoolean = require('./ToBoolean');
+var IsCallable = require('./IsCallable');
+
+// https://262.ecma-international.org/5.1/#sec-8.10.5
+
+module.exports = function ToPropertyDescriptor(Obj) {
+ if (Type(Obj) !== 'Object') {
+ throw new $TypeError('ToPropertyDescriptor requires an object');
+ }
+
+ var desc = {};
+ if (has(Obj, 'enumerable')) {
+ desc['[[Enumerable]]'] = ToBoolean(Obj.enumerable);
+ }
+ if (has(Obj, 'configurable')) {
+ desc['[[Configurable]]'] = ToBoolean(Obj.configurable);
+ }
+ if (has(Obj, 'value')) {
+ desc['[[Value]]'] = Obj.value;
+ }
+ if (has(Obj, 'writable')) {
+ desc['[[Writable]]'] = ToBoolean(Obj.writable);
+ }
+ if (has(Obj, 'get')) {
+ var getter = Obj.get;
+ if (typeof getter !== 'undefined' && !IsCallable(getter)) {
+ throw new $TypeError('getter must be a function');
+ }
+ desc['[[Get]]'] = getter;
+ }
+ if (has(Obj, 'set')) {
+ var setter = Obj.set;
+ if (typeof setter !== 'undefined' && !IsCallable(setter)) {
+ throw new $TypeError('setter must be a function');
+ }
+ desc['[[Set]]'] = setter;
+ }
+
+ if ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) {
+ throw new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');
+ }
+ return desc;
+};
diff --git a/node_modules/es-abstract/2021/ToPropertyKey.js b/node_modules/es-abstract/2021/ToPropertyKey.js
new file mode 100644
index 000000000..fc1bf7d86
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToPropertyKey.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $String = GetIntrinsic('%String%');
+
+var ToPrimitive = require('./ToPrimitive');
+var ToString = require('./ToString');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-topropertykey
+
+module.exports = function ToPropertyKey(argument) {
+ var key = ToPrimitive(argument, $String);
+ return typeof key === 'symbol' ? key : ToString(key);
+};
diff --git a/node_modules/es-abstract/2021/ToString.js b/node_modules/es-abstract/2021/ToString.js
new file mode 100644
index 000000000..4d494e1e2
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToString.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $String = GetIntrinsic('%String%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-tostring
+
+module.exports = function ToString(argument) {
+ if (typeof argument === 'symbol') {
+ throw new $TypeError('Cannot convert a Symbol value to a string');
+ }
+ return $String(argument);
+};
diff --git a/node_modules/es-abstract/2021/ToUint16.js b/node_modules/es-abstract/2021/ToUint16.js
new file mode 100644
index 000000000..633ca8464
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToUint16.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var abs = require('./abs');
+var floor = require('./floor');
+var modulo = require('./modulo');
+var ToNumber = require('./ToNumber');
+
+var $isNaN = require('../helpers/isNaN');
+var $isFinite = require('../helpers/isFinite');
+var $sign = require('../helpers/sign');
+
+// http://262.ecma-international.org/5.1/#sec-9.7
+
+module.exports = function ToUint16(value) {
+ var number = ToNumber(value);
+ if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }
+ var posInt = $sign(number) * floor(abs(number));
+ return modulo(posInt, 0x10000);
+};
diff --git a/node_modules/es-abstract/2021/ToUint32.js b/node_modules/es-abstract/2021/ToUint32.js
new file mode 100644
index 000000000..2a8e9dd6a
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToUint32.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ToNumber = require('./ToNumber');
+
+// http://262.ecma-international.org/5.1/#sec-9.6
+
+module.exports = function ToUint32(x) {
+ return ToNumber(x) >>> 0;
+};
diff --git a/node_modules/es-abstract/2021/ToUint8.js b/node_modules/es-abstract/2021/ToUint8.js
new file mode 100644
index 000000000..2dfd97cb3
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToUint8.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var ToNumber = require('./ToNumber');
+
+var $isNaN = require('../helpers/isNaN');
+var $isFinite = require('../helpers/isFinite');
+var $sign = require('../helpers/sign');
+
+var abs = require('./abs');
+var floor = require('./floor');
+var modulo = require('./modulo');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-touint8
+
+module.exports = function ToUint8(argument) {
+ var number = ToNumber(argument);
+ if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }
+ var posInt = $sign(number) * floor(abs(number));
+ return modulo(posInt, 0x100);
+};
diff --git a/node_modules/es-abstract/2021/ToUint8Clamp.js b/node_modules/es-abstract/2021/ToUint8Clamp.js
new file mode 100644
index 000000000..b0b8ce8ed
--- /dev/null
+++ b/node_modules/es-abstract/2021/ToUint8Clamp.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var ToNumber = require('./ToNumber');
+var floor = require('./floor');
+
+var $isNaN = require('../helpers/isNaN');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-touint8clamp
+
+module.exports = function ToUint8Clamp(argument) {
+ var number = ToNumber(argument);
+ if ($isNaN(number) || number <= 0) { return 0; }
+ if (number >= 0xFF) { return 0xFF; }
+ var f = floor(argument);
+ if (f + 0.5 < number) { return f + 1; }
+ if (number < f + 0.5) { return f; }
+ if (f % 2 !== 0) { return f + 1; }
+ return f;
+};
diff --git a/node_modules/es-abstract/2021/TrimString.js b/node_modules/es-abstract/2021/TrimString.js
new file mode 100644
index 000000000..113dcf82b
--- /dev/null
+++ b/node_modules/es-abstract/2021/TrimString.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var trimStart = require('string.prototype.trimstart');
+var trimEnd = require('string.prototype.trimend');
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var RequireObjectCoercible = require('./RequireObjectCoercible');
+var ToString = require('./ToString');
+
+// https://262.ecma-international.org/10.0/#sec-trimstring
+
+module.exports = function TrimString(string, where) {
+ var str = RequireObjectCoercible(string);
+ var S = ToString(str);
+ var T;
+ if (where === 'start') {
+ T = trimStart(S);
+ } else if (where === 'end') {
+ T = trimEnd(S);
+ } else if (where === 'start+end') {
+ T = trimStart(trimEnd(S));
+ } else {
+ throw new $TypeError('Assertion failed: invalid `where` value; must be "start", "end", or "start+end"');
+ }
+ return T;
+};
diff --git a/node_modules/es-abstract/2021/Type.js b/node_modules/es-abstract/2021/Type.js
new file mode 100644
index 000000000..555ca74ea
--- /dev/null
+++ b/node_modules/es-abstract/2021/Type.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var ES5Type = require('../5/Type');
+
+// https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values
+
+module.exports = function Type(x) {
+ if (typeof x === 'symbol') {
+ return 'Symbol';
+ }
+ if (typeof x === 'bigint') {
+ return 'BigInt';
+ }
+ return ES5Type(x);
+};
diff --git a/node_modules/es-abstract/2021/UTF16EncodeCodePoint.js b/node_modules/es-abstract/2021/UTF16EncodeCodePoint.js
new file mode 100644
index 000000000..0c7fb11e0
--- /dev/null
+++ b/node_modules/es-abstract/2021/UTF16EncodeCodePoint.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+
+var floor = require('./floor');
+var modulo = require('./modulo');
+
+var isCodePoint = require('../helpers/isCodePoint');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-utf16encoding
+
+module.exports = function UTF16EncodeCodePoint(cp) {
+ if (!isCodePoint(cp)) {
+ throw new $TypeError('Assertion failed: `cp` must be >= 0 and <= 0x10FFFF');
+ }
+ if (cp <= 65535) {
+ return $fromCharCode(cp);
+ }
+ var cu1 = $fromCharCode(floor((cp - 65536) / 1024) + 0xD800);
+ var cu2 = $fromCharCode(modulo(cp - 65536, 1024) + 0xDC00);
+ return cu1 + cu2;
+};
diff --git a/node_modules/es-abstract/2021/UTF16SurrogatePairToCodePoint.js b/node_modules/es-abstract/2021/UTF16SurrogatePairToCodePoint.js
new file mode 100644
index 000000000..6a247a239
--- /dev/null
+++ b/node_modules/es-abstract/2021/UTF16SurrogatePairToCodePoint.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+
+var isLeadingSurrogate = require('../helpers/isLeadingSurrogate');
+var isTrailingSurrogate = require('../helpers/isTrailingSurrogate');
+
+// https://tc39.es/ecma262/2020/#sec-utf16decodesurrogatepair
+
+module.exports = function UTF16SurrogatePairToCodePoint(lead, trail) {
+ if (!isLeadingSurrogate(lead) || !isTrailingSurrogate(trail)) {
+ throw new $TypeError('Assertion failed: `lead` must be a leading surrogate char code, and `trail` must be a trailing surrogate char code');
+ }
+ // var cp = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;
+ return $fromCharCode(lead) + $fromCharCode(trail);
+};
diff --git a/node_modules/es-abstract/2021/UnicodeEscape.js b/node_modules/es-abstract/2021/UnicodeEscape.js
new file mode 100644
index 000000000..b708c90df
--- /dev/null
+++ b/node_modules/es-abstract/2021/UnicodeEscape.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $charCodeAt = callBound('String.prototype.charCodeAt');
+var $numberToString = callBound('Number.prototype.toString');
+var $toLowerCase = callBound('String.prototype.toLowerCase');
+
+var StringPad = require('./StringPad');
+
+// https://262.ecma-international.org/11.0/#sec-unicodeescape
+
+module.exports = function UnicodeEscape(C) {
+ if (typeof C !== 'string' || C.length !== 1) {
+ throw new $TypeError('Assertion failed: `C` must be a single code unit');
+ }
+ var n = $charCodeAt(C, 0);
+ if (n > 0xFFFF) {
+ throw new $TypeError('`Assertion failed: numeric value of `C` must be <= 0xFFFF');
+ }
+
+ return '\\u' + StringPad($toLowerCase($numberToString(n, 16)), 4, '0', 'start');
+};
diff --git a/node_modules/es-abstract/2021/ValidateAndApplyPropertyDescriptor.js b/node_modules/es-abstract/2021/ValidateAndApplyPropertyDescriptor.js
new file mode 100644
index 000000000..a7fd218ad
--- /dev/null
+++ b/node_modules/es-abstract/2021/ValidateAndApplyPropertyDescriptor.js
@@ -0,0 +1,170 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DefineOwnProperty = require('../helpers/DefineOwnProperty');
+var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
+var isSamePropertyDescriptor = require('../helpers/isSamePropertyDescriptor');
+
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsGenericDescriptor = require('./IsGenericDescriptor');
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-validateandapplypropertydescriptor
+// https://ecma-international.org/ecma-262/8.0/#sec-validateandapplypropertydescriptor
+
+// eslint-disable-next-line max-lines-per-function, max-statements, max-params
+module.exports = function ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current) {
+ // this uses the ES2017+ logic, since it fixes a number of bugs in the ES2015 logic.
+ var oType = Type(O);
+ if (oType !== 'Undefined' && oType !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be undefined or an Object');
+ }
+ if (Type(extensible) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: extensible must be a Boolean');
+ }
+ if (!isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, Desc)) {
+ throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
+ }
+ if (Type(current) !== 'Undefined' && !isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, current)) {
+ throw new $TypeError('Assertion failed: current must be a Property Descriptor, or undefined');
+ }
+ if (oType !== 'Undefined' && !IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: if O is not undefined, P must be a Property Key');
+ }
+ if (Type(current) === 'Undefined') {
+ if (!extensible) {
+ return false;
+ }
+ if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) {
+ if (oType !== 'Undefined') {
+ DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ {
+ '[[Configurable]]': Desc['[[Configurable]]'],
+ '[[Enumerable]]': Desc['[[Enumerable]]'],
+ '[[Value]]': Desc['[[Value]]'],
+ '[[Writable]]': Desc['[[Writable]]']
+ }
+ );
+ }
+ } else {
+ if (!IsAccessorDescriptor(Desc)) {
+ throw new $TypeError('Assertion failed: Desc is not an accessor descriptor');
+ }
+ if (oType !== 'Undefined') {
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ Desc
+ );
+ }
+ }
+ return true;
+ }
+ if (IsGenericDescriptor(Desc) && !('[[Configurable]]' in Desc) && !('[[Enumerable]]' in Desc)) {
+ return true;
+ }
+ if (isSamePropertyDescriptor({ SameValue: SameValue }, Desc, current)) {
+ return true; // removed by ES2017, but should still be correct
+ }
+ // "if every field in Desc is absent, return true" can't really match the assertion that it's a Property Descriptor
+ if (!current['[[Configurable]]']) {
+ if (Desc['[[Configurable]]']) {
+ return false;
+ }
+ if ('[[Enumerable]]' in Desc && !Desc['[[Enumerable]]'] === !!current['[[Enumerable]]']) {
+ return false;
+ }
+ }
+ if (IsGenericDescriptor(Desc)) {
+ // no further validation is required.
+ } else if (IsDataDescriptor(current) !== IsDataDescriptor(Desc)) {
+ if (!current['[[Configurable]]']) {
+ return false;
+ }
+ if (IsDataDescriptor(current)) {
+ if (oType !== 'Undefined') {
+ DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ {
+ '[[Configurable]]': current['[[Configurable]]'],
+ '[[Enumerable]]': current['[[Enumerable]]'],
+ '[[Get]]': undefined
+ }
+ );
+ }
+ } else if (oType !== 'Undefined') {
+ DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ {
+ '[[Configurable]]': current['[[Configurable]]'],
+ '[[Enumerable]]': current['[[Enumerable]]'],
+ '[[Value]]': undefined
+ }
+ );
+ }
+ } else if (IsDataDescriptor(current) && IsDataDescriptor(Desc)) {
+ if (!current['[[Configurable]]'] && !current['[[Writable]]']) {
+ if ('[[Writable]]' in Desc && Desc['[[Writable]]']) {
+ return false;
+ }
+ if ('[[Value]]' in Desc && !SameValue(Desc['[[Value]]'], current['[[Value]]'])) {
+ return false;
+ }
+ return true;
+ }
+ } else if (IsAccessorDescriptor(current) && IsAccessorDescriptor(Desc)) {
+ if (!current['[[Configurable]]']) {
+ if ('[[Set]]' in Desc && !SameValue(Desc['[[Set]]'], current['[[Set]]'])) {
+ return false;
+ }
+ if ('[[Get]]' in Desc && !SameValue(Desc['[[Get]]'], current['[[Get]]'])) {
+ return false;
+ }
+ return true;
+ }
+ } else {
+ throw new $TypeError('Assertion failed: current and Desc are not both data, both accessors, or one accessor and one data.');
+ }
+ if (oType !== 'Undefined') {
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ Desc
+ );
+ }
+ return true;
+};
diff --git a/node_modules/es-abstract/2021/ValidateAtomicAccess.js b/node_modules/es-abstract/2021/ValidateAtomicAccess.js
new file mode 100644
index 000000000..45379ff17
--- /dev/null
+++ b/node_modules/es-abstract/2021/ValidateAtomicAccess.js
@@ -0,0 +1,63 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+// node 0.10 doesn't have a prototype method
+var $byteOffset = callBound('%TypedArray.prototype.byteOffset%', true) || function (x) { return x.byteOffset; };
+
+var ToIndex = require('./ToIndex');
+
+var isTypedArray = require('is-typed-array');
+var typedArrayLength = require('typed-array-length');
+var whichTypedArray = require('which-typed-array');
+
+var table60 = {
+ __proto__: null,
+ $Int8Array: 1,
+ $Uint8Array: 1,
+ $Uint8ClampedArray: 1,
+ $Int16Array: 2,
+ $Uint16Array: 2,
+ $Int32Array: 4,
+ $Uint32Array: 4,
+ $BigInt64Array: 8,
+ $BigUint64Array: 8,
+ $Float32Array: 4,
+ $Float64Array: 8
+};
+
+// https://262.ecma-international.org/12.0/#sec-validateatomicaccess
+
+module.exports = function ValidateAtomicAccess(typedArray, requestIndex) {
+ if (!isTypedArray(typedArray)) {
+ throw new $TypeError('Assertion failed: `typedArray` must be a TypedArray'); // step 1
+ }
+
+ var length = typedArrayLength(typedArray); // step 2
+
+ var accessIndex = ToIndex(requestIndex); // step 3
+
+ /*
+ // this assertion can never be reached
+ if (!(accessIndex >= 0)) {
+ throw new $TypeError('Assertion failed: accessIndex >= 0'); // step 4
+ }
+ */
+
+ if (accessIndex >= length) {
+ throw new $RangeError('index out of range'); // step 5
+ }
+
+ var arrayTypeName = whichTypedArray(typedArray); // step 6
+
+ var elementSize = table60['$' + arrayTypeName]; // step 7
+
+ var offset = $byteOffset(typedArray); // step 8
+
+ return (accessIndex * elementSize) + offset; // step 9
+};
diff --git a/node_modules/es-abstract/2021/ValidateIntegerTypedArray.js b/node_modules/es-abstract/2021/ValidateIntegerTypedArray.js
new file mode 100644
index 000000000..0bcc0aff4
--- /dev/null
+++ b/node_modules/es-abstract/2021/ValidateIntegerTypedArray.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsBigIntElementType = require('./IsBigIntElementType');
+var IsUnclampedIntegerElementType = require('./IsUnclampedIntegerElementType');
+var Type = require('./Type');
+var ValidateTypedArray = require('./ValidateTypedArray');
+
+var whichTypedArray = require('which-typed-array');
+
+// https://262.ecma-international.org/12.0/#sec-validateintegertypedarray
+
+var table60 = {
+ __proto__: null,
+ $Int8Array: 'Int8',
+ $Uint8Array: 'Uint8',
+ $Uint8ClampedArray: 'Uint8C',
+ $Int16Array: 'Int16',
+ $Uint16Array: 'Uint16',
+ $Int32Array: 'Int32',
+ $Uint32Array: 'Uint32',
+ $BigInt64Array: 'BigInt64',
+ $BigUint64Array: 'BigUint64',
+ $Float32Array: 'Float32',
+ $Float64Array: 'Float64'
+};
+
+module.exports = function ValidateIntegerTypedArray(typedArray) {
+ var waitable = arguments.length > 1 ? arguments[1] : false; // step 1
+
+ if (Type(waitable) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `waitable` must be a Boolean');
+ }
+
+ var buffer = ValidateTypedArray(typedArray); // step 2
+
+ var typeName = whichTypedArray(typedArray); // step 3
+
+ var type = table60['$' + typeName]; // step 4
+
+ if (waitable) { // step 5
+ if (typeName !== 'Int32Array' && typeName !== 'BigInt64Array') {
+ throw new $TypeError('Assertion failed: `typedArray` must be an Int32Array or BigInt64Array when `waitable` is true'); // step 5.a
+ }
+ } else if (!IsUnclampedIntegerElementType(type) && !IsBigIntElementType(type)) {
+ throw new $TypeError('Assertion failed: `typedArray` must be an integer TypedArray'); // step 6.a
+ }
+
+ return buffer; // step 7
+};
diff --git a/node_modules/es-abstract/2021/ValidateTypedArray.js b/node_modules/es-abstract/2021/ValidateTypedArray.js
new file mode 100644
index 000000000..83df3a81c
--- /dev/null
+++ b/node_modules/es-abstract/2021/ValidateTypedArray.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var $taSome = callBound('%TypedArray.prototype.some%', true);
+
+var Type = require('./Type');
+
+var isTypedArray = require('is-typed-array');
+
+// https://262.ecma-international.org/6.0/#sec-validatetypedarray
+
+module.exports = function ValidateTypedArray(O) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!isTypedArray(O)) {
+ throw new $TypeError('Assertion failed: O must be a TypedArray');
+ }
+
+ // without `.some` (like in node 0.10), there's no way to check buffer detachment, but also no way to be detached
+ if ($taSome) {
+ $taSome(O, function () { return true; });
+ }
+
+ return O.buffer;
+};
diff --git a/node_modules/es-abstract/2021/WeakRefDeref.js b/node_modules/es-abstract/2021/WeakRefDeref.js
new file mode 100644
index 000000000..66d2d1723
--- /dev/null
+++ b/node_modules/es-abstract/2021/WeakRefDeref.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $deref = callBound('WeakRef.prototype.deref', true);
+
+var isWeakRef = require('is-weakref');
+
+var AddToKeptObjects = require('./AddToKeptObjects');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-weakrefderef
+
+module.exports = function WeakRefDeref(weakRef) {
+ if (!isWeakRef(weakRef)) {
+ throw new $TypeError('Assertion failed: `weakRef` must be a WeakRef');
+ }
+ var target = $deref(weakRef);
+ if (target) {
+ AddToKeptObjects(target);
+ }
+ return target;
+};
diff --git a/node_modules/es-abstract/2021/WeekDay.js b/node_modules/es-abstract/2021/WeekDay.js
new file mode 100644
index 000000000..17cf94ca3
--- /dev/null
+++ b/node_modules/es-abstract/2021/WeekDay.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var Day = require('./Day');
+var modulo = require('./modulo');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.6
+
+module.exports = function WeekDay(t) {
+ return modulo(Day(t) + 4, 7);
+};
diff --git a/node_modules/es-abstract/2021/YearFromTime.js b/node_modules/es-abstract/2021/YearFromTime.js
new file mode 100644
index 000000000..be06ecbc3
--- /dev/null
+++ b/node_modules/es-abstract/2021/YearFromTime.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Date = GetIntrinsic('%Date%');
+
+var callBound = require('call-bind/callBound');
+
+var $getUTCFullYear = callBound('Date.prototype.getUTCFullYear');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.3
+
+module.exports = function YearFromTime(t) {
+ // largest y such that this.TimeFromYear(y) <= t
+ return $getUTCFullYear(new $Date(t));
+};
diff --git a/node_modules/es-abstract/2021/abs.js b/node_modules/es-abstract/2021/abs.js
new file mode 100644
index 000000000..8bc45434d
--- /dev/null
+++ b/node_modules/es-abstract/2021/abs.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $abs = GetIntrinsic('%Math.abs%');
+
+// http://262.ecma-international.org/5.1/#sec-5.2
+
+module.exports = function abs(x) {
+ return $abs(x);
+};
diff --git a/node_modules/es-abstract/2021/clamp.js b/node_modules/es-abstract/2021/clamp.js
new file mode 100644
index 000000000..8da139484
--- /dev/null
+++ b/node_modules/es-abstract/2021/clamp.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var max = GetIntrinsic('%Math.max%');
+var min = GetIntrinsic('%Math.min%');
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/12.0/#clamping
+
+module.exports = function clamp(x, lower, upper) {
+ if (Type(x) !== 'Number' || Type(lower) !== 'Number' || Type(upper) !== 'Number' || !(lower <= upper)) {
+ throw new $TypeError('Assertion failed: all three arguments must be MVs, and `lower` must be `<= upper`');
+ }
+ return min(max(lower, x), upper);
+};
diff --git a/node_modules/es-abstract/2021/floor.js b/node_modules/es-abstract/2021/floor.js
new file mode 100644
index 000000000..625548e93
--- /dev/null
+++ b/node_modules/es-abstract/2021/floor.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var Type = require('./Type');
+
+// var modulo = require('./modulo');
+var $floor = Math.floor;
+
+// http://262.ecma-international.org/11.0/#eqn-floor
+
+module.exports = function floor(x) {
+ // return x - modulo(x, 1);
+ if (Type(x) === 'BigInt') {
+ return x;
+ }
+ return $floor(x);
+};
diff --git a/node_modules/es-abstract/2021/max.js b/node_modules/es-abstract/2021/max.js
new file mode 100644
index 000000000..b919d4e83
--- /dev/null
+++ b/node_modules/es-abstract/2021/max.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.max%');
diff --git a/node_modules/es-abstract/2021/min.js b/node_modules/es-abstract/2021/min.js
new file mode 100644
index 000000000..909de4b0e
--- /dev/null
+++ b/node_modules/es-abstract/2021/min.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.min%');
diff --git a/node_modules/es-abstract/2021/modulo.js b/node_modules/es-abstract/2021/modulo.js
new file mode 100644
index 000000000..b94bb52bb
--- /dev/null
+++ b/node_modules/es-abstract/2021/modulo.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var mod = require('../helpers/mod');
+
+// https://262.ecma-international.org/5.1/#sec-5.2
+
+module.exports = function modulo(x, y) {
+ return mod(x, y);
+};
diff --git a/node_modules/es-abstract/2021/msFromTime.js b/node_modules/es-abstract/2021/msFromTime.js
new file mode 100644
index 000000000..a6bae767a
--- /dev/null
+++ b/node_modules/es-abstract/2021/msFromTime.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var modulo = require('./modulo');
+
+var msPerSecond = require('../helpers/timeConstants').msPerSecond;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.10
+
+module.exports = function msFromTime(t) {
+ return modulo(t, msPerSecond);
+};
diff --git a/node_modules/es-abstract/2021/substring.js b/node_modules/es-abstract/2021/substring.js
new file mode 100644
index 000000000..a2c724ad8
--- /dev/null
+++ b/node_modules/es-abstract/2021/substring.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+var callBound = require('call-bind/callBound');
+
+var $slice = callBound('String.prototype.slice');
+
+// https://262.ecma-international.org/12.0/#substring
+module.exports = function substring(S, inclusiveStart, exclusiveEnd) {
+ if (Type(S) !== 'String' || !IsIntegralNumber(inclusiveStart) || (arguments.length > 2 && !IsIntegralNumber(exclusiveEnd))) {
+ throw new $TypeError('`S` must be a String, and `inclusiveStart` and `exclusiveEnd` must be integers');
+ }
+ return $slice(S, inclusiveStart, arguments.length > 2 ? exclusiveEnd : S.length);
+};
diff --git a/node_modules/es-abstract/2021/thisBigIntValue.js b/node_modules/es-abstract/2021/thisBigIntValue.js
new file mode 100644
index 000000000..1fd12980e
--- /dev/null
+++ b/node_modules/es-abstract/2021/thisBigIntValue.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $bigIntValueOf = callBound('BigInt.prototype.valueOf', true);
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/11.0/#sec-thisbigintvalue
+
+module.exports = function thisBigIntValue(value) {
+ var type = Type(value);
+ if (type === 'BigInt') {
+ return value;
+ }
+ if (!$bigIntValueOf) {
+ throw new $TypeError('BigInt is not supported');
+ }
+ return $bigIntValueOf(value);
+};
diff --git a/node_modules/es-abstract/2021/thisBooleanValue.js b/node_modules/es-abstract/2021/thisBooleanValue.js
new file mode 100644
index 000000000..27075b9c4
--- /dev/null
+++ b/node_modules/es-abstract/2021/thisBooleanValue.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var $BooleanValueOf = require('call-bind/callBound')('Boolean.prototype.valueOf');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-boolean-prototype-object
+
+module.exports = function thisBooleanValue(value) {
+ if (Type(value) === 'Boolean') {
+ return value;
+ }
+
+ return $BooleanValueOf(value);
+};
diff --git a/node_modules/es-abstract/2021/thisNumberValue.js b/node_modules/es-abstract/2021/thisNumberValue.js
new file mode 100644
index 000000000..92968dcdf
--- /dev/null
+++ b/node_modules/es-abstract/2021/thisNumberValue.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var Type = require('./Type');
+
+var $NumberValueOf = callBound('Number.prototype.valueOf');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-number-prototype-object
+
+module.exports = function thisNumberValue(value) {
+ if (Type(value) === 'Number') {
+ return value;
+ }
+
+ return $NumberValueOf(value);
+};
+
diff --git a/node_modules/es-abstract/2021/thisStringValue.js b/node_modules/es-abstract/2021/thisStringValue.js
new file mode 100644
index 000000000..8e4274d81
--- /dev/null
+++ b/node_modules/es-abstract/2021/thisStringValue.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var $StringValueOf = require('call-bind/callBound')('String.prototype.valueOf');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-string-prototype-object
+
+module.exports = function thisStringValue(value) {
+ if (Type(value) === 'String') {
+ return value;
+ }
+
+ return $StringValueOf(value);
+};
diff --git a/node_modules/es-abstract/2021/thisSymbolValue.js b/node_modules/es-abstract/2021/thisSymbolValue.js
new file mode 100644
index 000000000..91a552542
--- /dev/null
+++ b/node_modules/es-abstract/2021/thisSymbolValue.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var $SymbolValueOf = callBound('Symbol.prototype.valueOf', true);
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/9.0/#sec-thissymbolvalue
+
+module.exports = function thisSymbolValue(value) {
+ if (!$SymbolValueOf) {
+ throw new SyntaxError('Symbols are not supported; thisSymbolValue requires that `value` be a Symbol or a Symbol object');
+ }
+ if (Type(value) === 'Symbol') {
+ return value;
+ }
+ return $SymbolValueOf(value);
+};
diff --git a/node_modules/es-abstract/2021/thisTimeValue.js b/node_modules/es-abstract/2021/thisTimeValue.js
new file mode 100644
index 000000000..a9a47ace2
--- /dev/null
+++ b/node_modules/es-abstract/2021/thisTimeValue.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('../2018/thisTimeValue');
diff --git a/node_modules/es-abstract/2022/AddEntriesFromIterable.js b/node_modules/es-abstract/2022/AddEntriesFromIterable.js
new file mode 100644
index 000000000..a0a5e71bd
--- /dev/null
+++ b/node_modules/es-abstract/2022/AddEntriesFromIterable.js
@@ -0,0 +1,52 @@
+'use strict';
+
+var inspect = require('object-inspect');
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var Get = require('./Get');
+var GetIterator = require('./GetIterator');
+var IsCallable = require('./IsCallable');
+var IteratorClose = require('./IteratorClose');
+var IteratorStep = require('./IteratorStep');
+var IteratorValue = require('./IteratorValue');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/10.0//#sec-add-entries-from-iterable
+
+module.exports = function AddEntriesFromIterable(target, iterable, adder) {
+ if (!IsCallable(adder)) {
+ throw new $TypeError('Assertion failed: `adder` is not callable');
+ }
+ if (iterable == null) {
+ throw new $TypeError('Assertion failed: `iterable` is present, and not nullish');
+ }
+ var iteratorRecord = GetIterator(iterable);
+ while (true) { // eslint-disable-line no-constant-condition
+ var next = IteratorStep(iteratorRecord);
+ if (!next) {
+ return target;
+ }
+ var nextItem = IteratorValue(next);
+ if (Type(nextItem) !== 'Object') {
+ var error = new $TypeError('iterator next must return an Object, got ' + inspect(nextItem));
+ return IteratorClose(
+ iteratorRecord,
+ function () { throw error; } // eslint-disable-line no-loop-func
+ );
+ }
+ try {
+ var k = Get(nextItem, '0');
+ var v = Get(nextItem, '1');
+ Call(adder, target, [k, v]);
+ } catch (e) {
+ return IteratorClose(
+ iteratorRecord,
+ function () { throw e; }
+ );
+ }
+ }
+};
diff --git a/node_modules/es-abstract/2022/AddToKeptObjects.js b/node_modules/es-abstract/2022/AddToKeptObjects.js
new file mode 100644
index 000000000..c3088d999
--- /dev/null
+++ b/node_modules/es-abstract/2022/AddToKeptObjects.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+var SLOT = require('internal-slot');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ClearKeptObjects = require('./ClearKeptObjects');
+var Type = require('./Type');
+
+var $push = callBound('Array.prototype.push');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-addtokeptobjects
+
+module.exports = function AddToKeptObjects(object) {
+ if (Type(object) !== 'Object') {
+ throw new $TypeError('Assertion failed: `object` must be an Object');
+ }
+ $push(SLOT.get(ClearKeptObjects, '[[es-abstract internal: KeptAlive]]'), object);
+};
diff --git a/node_modules/es-abstract/2022/AdvanceStringIndex.js b/node_modules/es-abstract/2022/AdvanceStringIndex.js
new file mode 100644
index 000000000..eeae53125
--- /dev/null
+++ b/node_modules/es-abstract/2022/AdvanceStringIndex.js
@@ -0,0 +1,34 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var CodePointAt = require('./CodePointAt');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-advancestringindex
+
+module.exports = function AdvanceStringIndex(S, index, unicode) {
+ if (Type(S) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a String');
+ }
+ if (!IsIntegralNumber(index) || index < 0 || index > MAX_SAFE_INTEGER) {
+ throw new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53');
+ }
+ if (Type(unicode) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `unicode` must be a Boolean');
+ }
+ if (!unicode) {
+ return index + 1;
+ }
+ var length = S.length;
+ if ((index + 1) >= length) {
+ return index + 1;
+ }
+ var cp = CodePointAt(S, index);
+ return index + cp['[[CodeUnitCount]]'];
+};
diff --git a/node_modules/es-abstract/2022/ApplyStringOrNumericBinaryOperator.js b/node_modules/es-abstract/2022/ApplyStringOrNumericBinaryOperator.js
new file mode 100644
index 000000000..824a10543
--- /dev/null
+++ b/node_modules/es-abstract/2022/ApplyStringOrNumericBinaryOperator.js
@@ -0,0 +1,80 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var HasOwnProperty = require('./HasOwnProperty');
+var ToNumeric = require('./ToNumeric');
+var ToPrimitive = require('./ToPrimitive');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+var NumberAdd = require('./Number/add');
+var NumberBitwiseAND = require('./Number/bitwiseAND');
+var NumberBitwiseOR = require('./Number/bitwiseOR');
+var NumberBitwiseXOR = require('./Number/bitwiseXOR');
+var NumberDivide = require('./Number/divide');
+var NumberExponentiate = require('./Number/exponentiate');
+var NumberLeftShift = require('./Number/leftShift');
+var NumberMultiply = require('./Number/multiply');
+var NumberRemainder = require('./Number/remainder');
+var NumberSignedRightShift = require('./Number/signedRightShift');
+var NumberSubtract = require('./Number/subtract');
+var NumberUnsignedRightShift = require('./Number/unsignedRightShift');
+var BigIntAdd = require('./BigInt/add');
+var BigIntBitwiseAND = require('./BigInt/bitwiseAND');
+var BigIntBitwiseOR = require('./BigInt/bitwiseOR');
+var BigIntBitwiseXOR = require('./BigInt/bitwiseXOR');
+var BigIntDivide = require('./BigInt/divide');
+var BigIntExponentiate = require('./BigInt/exponentiate');
+var BigIntLeftShift = require('./BigInt/leftShift');
+var BigIntMultiply = require('./BigInt/multiply');
+var BigIntRemainder = require('./BigInt/remainder');
+var BigIntSignedRightShift = require('./BigInt/signedRightShift');
+var BigIntSubtract = require('./BigInt/subtract');
+var BigIntUnsignedRightShift = require('./BigInt/unsignedRightShift');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-applystringornumericbinaryoperator
+
+// https://ecma-international.org/ecma-262/12.0/#step-applystringornumericbinaryoperator-operations-table
+var table = {
+ '**': [NumberExponentiate, BigIntExponentiate],
+ '*': [NumberMultiply, BigIntMultiply],
+ '/': [NumberDivide, BigIntDivide],
+ '%': [NumberRemainder, BigIntRemainder],
+ '+': [NumberAdd, BigIntAdd],
+ '-': [NumberSubtract, BigIntSubtract],
+ '<<': [NumberLeftShift, BigIntLeftShift],
+ '>>': [NumberSignedRightShift, BigIntSignedRightShift],
+ '>>>': [NumberUnsignedRightShift, BigIntUnsignedRightShift],
+ '&': [NumberBitwiseAND, BigIntBitwiseAND],
+ '^': [NumberBitwiseXOR, BigIntBitwiseXOR],
+ '|': [NumberBitwiseOR, BigIntBitwiseOR]
+};
+
+module.exports = function ApplyStringOrNumericBinaryOperator(lval, opText, rval) {
+ if (Type(opText) !== 'String' || !HasOwnProperty(table, opText)) {
+ throw new $TypeError('Assertion failed: `opText` must be a valid operation string');
+ }
+ if (opText === '+') {
+ var lprim = ToPrimitive(lval);
+ var rprim = ToPrimitive(rval);
+ if (Type(lprim) === 'String' || Type(rprim) === 'String') {
+ var lstr = ToString(lprim);
+ var rstr = ToString(rprim);
+ return lstr + rstr;
+ }
+ /* eslint no-param-reassign: 1 */
+ lval = lprim;
+ rval = rprim;
+ }
+ var lnum = ToNumeric(lval);
+ var rnum = ToNumeric(rval);
+ var T = Type(lnum);
+ if (T !== Type(rnum)) {
+ throw new $TypeError('types of ' + lnum + ' and ' + rnum + ' differ');
+ }
+ var Operation = table[opText][T === 'BigInt' ? 1 : 0];
+ return Operation(lnum, rnum);
+};
diff --git a/node_modules/es-abstract/2022/ArrayCreate.js b/node_modules/es-abstract/2022/ArrayCreate.js
new file mode 100644
index 000000000..e138d2db9
--- /dev/null
+++ b/node_modules/es-abstract/2022/ArrayCreate.js
@@ -0,0 +1,54 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $ArrayPrototype = GetIntrinsic('%Array.prototype%');
+var $RangeError = GetIntrinsic('%RangeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+
+var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
+
+var hasProto = require('has-proto')();
+
+var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || (
+ hasProto
+ ? function (O, proto) {
+ O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
+ return O;
+ }
+ : null
+);
+
+// https://www.ecma-international.org/ecma-262/12.0/#sec-arraycreate
+
+module.exports = function ArrayCreate(length) {
+ if (!IsIntegralNumber(length) || length < 0) {
+ throw new $TypeError('Assertion failed: `length` must be an integer Number >= 0');
+ }
+ if (length > MAX_ARRAY_LENGTH) {
+ throw new $RangeError('length is greater than (2**32 - 1)');
+ }
+ var proto = arguments.length > 1 ? arguments[1] : $ArrayPrototype;
+ var A = []; // steps 3, 5
+ if (proto !== $ArrayPrototype) { // step 4
+ if (!$setProto) {
+ throw new $SyntaxError('ArrayCreate: a `proto` argument that is not `Array.prototype` is not supported in an environment that does not support setting the [[Prototype]]');
+ }
+ $setProto(A, proto);
+ }
+ if (length !== 0) { // bypasses the need for step 6
+ A.length = length;
+ }
+ /* step 6, the above as a shortcut for the below
+ OrdinaryDefineOwnProperty(A, 'length', {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': true
+ });
+ */
+ return A;
+};
diff --git a/node_modules/es-abstract/2022/ArraySetLength.js b/node_modules/es-abstract/2022/ArraySetLength.js
new file mode 100644
index 000000000..08db9c2e9
--- /dev/null
+++ b/node_modules/es-abstract/2022/ArraySetLength.js
@@ -0,0 +1,85 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var assign = require('object.assign');
+
+var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
+
+var IsArray = require('./IsArray');
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var OrdinaryDefineOwnProperty = require('./OrdinaryDefineOwnProperty');
+var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty');
+var ToNumber = require('./ToNumber');
+var ToString = require('./ToString');
+var ToUint32 = require('./ToUint32');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-arraysetlength
+
+// eslint-disable-next-line max-statements, max-lines-per-function
+module.exports = function ArraySetLength(A, Desc) {
+ if (!IsArray(A)) {
+ throw new $TypeError('Assertion failed: A must be an Array');
+ }
+ if (!isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, Desc)) {
+ throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
+ }
+ if (!('[[Value]]' in Desc)) {
+ return OrdinaryDefineOwnProperty(A, 'length', Desc);
+ }
+ var newLenDesc = assign({}, Desc);
+ var newLen = ToUint32(Desc['[[Value]]']);
+ var numberLen = ToNumber(Desc['[[Value]]']);
+ if (newLen !== numberLen) {
+ throw new $RangeError('Invalid array length');
+ }
+ newLenDesc['[[Value]]'] = newLen;
+ var oldLenDesc = OrdinaryGetOwnProperty(A, 'length');
+ if (!IsDataDescriptor(oldLenDesc)) {
+ throw new $TypeError('Assertion failed: an array had a non-data descriptor on `length`');
+ }
+ var oldLen = oldLenDesc['[[Value]]'];
+ if (newLen >= oldLen) {
+ return OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
+ }
+ if (!oldLenDesc['[[Writable]]']) {
+ return false;
+ }
+ var newWritable;
+ if (!('[[Writable]]' in newLenDesc) || newLenDesc['[[Writable]]']) {
+ newWritable = true;
+ } else {
+ newWritable = false;
+ newLenDesc['[[Writable]]'] = true;
+ }
+ var succeeded = OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
+ if (!succeeded) {
+ return false;
+ }
+ while (newLen < oldLen) {
+ oldLen -= 1;
+ // eslint-disable-next-line no-param-reassign
+ var deleteSucceeded = delete A[ToString(oldLen)];
+ if (!deleteSucceeded) {
+ newLenDesc['[[Value]]'] = oldLen + 1;
+ if (!newWritable) {
+ newLenDesc['[[Writable]]'] = false;
+ OrdinaryDefineOwnProperty(A, 'length', newLenDesc);
+ return false;
+ }
+ }
+ }
+ if (!newWritable) {
+ return OrdinaryDefineOwnProperty(A, 'length', { '[[Writable]]': false });
+ }
+ return true;
+};
diff --git a/node_modules/es-abstract/2022/ArraySpeciesCreate.js b/node_modules/es-abstract/2022/ArraySpeciesCreate.js
new file mode 100644
index 000000000..d908fa351
--- /dev/null
+++ b/node_modules/es-abstract/2022/ArraySpeciesCreate.js
@@ -0,0 +1,48 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $species = GetIntrinsic('%Symbol.species%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ArrayCreate = require('./ArrayCreate');
+var Get = require('./Get');
+var IsArray = require('./IsArray');
+var IsConstructor = require('./IsConstructor');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-arrayspeciescreate
+
+module.exports = function ArraySpeciesCreate(originalArray, length) {
+ if (!IsIntegralNumber(length) || length < 0) {
+ throw new $TypeError('Assertion failed: length must be an integer >= 0');
+ }
+
+ var isArray = IsArray(originalArray);
+ if (!isArray) {
+ return ArrayCreate(length);
+ }
+
+ var C = Get(originalArray, 'constructor');
+ // TODO: figure out how to make a cross-realm normal Array, a same-realm Array
+ // if (IsConstructor(C)) {
+ // if C is another realm's Array, C = undefined
+ // Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ?
+ // }
+ if ($species && Type(C) === 'Object') {
+ C = Get(C, $species);
+ if (C === null) {
+ C = void 0;
+ }
+ }
+
+ if (typeof C === 'undefined') {
+ return ArrayCreate(length);
+ }
+ if (!IsConstructor(C)) {
+ throw new $TypeError('C must be a constructor');
+ }
+ return new C(length); // Construct(C, length);
+};
+
diff --git a/node_modules/es-abstract/2022/AsyncFromSyncIteratorContinuation.js b/node_modules/es-abstract/2022/AsyncFromSyncIteratorContinuation.js
new file mode 100644
index 000000000..c1cc7a111
--- /dev/null
+++ b/node_modules/es-abstract/2022/AsyncFromSyncIteratorContinuation.js
@@ -0,0 +1,45 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Promise = GetIntrinsic('%Promise%', true);
+
+var callBound = require('call-bind/callBound');
+
+var CreateIterResultObject = require('./CreateIterResultObject');
+var IteratorComplete = require('./IteratorComplete');
+var IteratorValue = require('./IteratorValue');
+var PromiseResolve = require('./PromiseResolve');
+var Type = require('./Type');
+
+var $then = callBound('Promise.prototype.then', true);
+
+// https://ecma-international.org/ecma-262/10.0/#sec-asyncfromsynciteratorcontinuation
+
+module.exports = function AsyncFromSyncIteratorContinuation(result) {
+ if (Type(result) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (arguments.length > 1) {
+ throw new $SyntaxError('although AsyncFromSyncIteratorContinuation should take a second argument, it is not used in this implementation');
+ }
+
+ if (!$Promise) {
+ throw new $SyntaxError('This environment does not support Promises.');
+ }
+
+ return new Promise(function (resolve) {
+ var done = IteratorComplete(result); // step 2
+ var value = IteratorValue(result); // step 4
+ var valueWrapper = PromiseResolve($Promise, value); // step 6
+
+ // eslint-disable-next-line no-shadow
+ var onFulfilled = function (value) { // steps 8-9
+ return CreateIterResultObject(value, done); // step 8.a
+ };
+ resolve($then(valueWrapper, onFulfilled)); // step 11
+ }); // step 12
+};
diff --git a/node_modules/es-abstract/2022/AsyncIteratorClose.js b/node_modules/es-abstract/2022/AsyncIteratorClose.js
new file mode 100644
index 000000000..1ae42c0c5
--- /dev/null
+++ b/node_modules/es-abstract/2022/AsyncIteratorClose.js
@@ -0,0 +1,68 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Promise = GetIntrinsic('%Promise%', true);
+
+var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
+var GetMethod = require('./GetMethod');
+var Type = require('./Type');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var callBound = require('call-bind/callBound');
+
+var $then = callBound('Promise.prototype.then', true);
+
+// https://262.ecma-international.org/12.0/#sec-asynciteratorclose
+
+module.exports = function AsyncIteratorClose(iteratorRecord, completion) {
+ assertRecord(Type, 'Iterator Record', 'iteratorRecord', iteratorRecord); // step 1
+
+ if (!(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a Completion Record instance'); // step 2
+ }
+
+ if (!$then) {
+ throw new $SyntaxError('This environment does not support Promises.');
+ }
+
+ var iterator = iteratorRecord['[[Iterator]]']; // step 3
+
+ return $then(
+ $then(
+ $then(
+ new $Promise(function (resolve) {
+ resolve(GetMethod(iterator, 'return')); // step 4
+ // resolve(Call(ret, iterator, [])); // step 6
+ }),
+ function (returnV) { // step 5.a
+ if (typeof returnV === 'undefined') {
+ return completion; // step 5.b
+ }
+ return Call(returnV, iterator); // step 5.c, 5.d.
+ }
+ ),
+ null,
+ function (e) {
+ if (completion.type() === 'throw') {
+ completion['?'](); // step 6
+ } else {
+ throw e; // step 7
+ }
+ }
+ ),
+ function (innerResult) { // step 8
+ if (completion.type() === 'throw') {
+ completion['?'](); // step 6
+ }
+ if (Type(innerResult) !== 'Object') {
+ throw new $TypeError('`innerResult` must be an Object'); // step 10
+ }
+ return completion;
+ }
+ );
+};
diff --git a/node_modules/es-abstract/2022/BigInt/add.js b/node_modules/es-abstract/2022/BigInt/add.js
new file mode 100644
index 000000000..22b5db4b3
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/add.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-add
+
+module.exports = function BigIntAdd(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ // shortcut for the actual spec mechanics
+ return x + y;
+};
diff --git a/node_modules/es-abstract/2022/BigInt/bitwiseAND.js b/node_modules/es-abstract/2022/BigInt/bitwiseAND.js
new file mode 100644
index 000000000..83cd2c3ca
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/bitwiseAND.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var BigIntBitwiseOp = require('../BigIntBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseAND
+
+module.exports = function BigIntBitwiseAND(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+ return BigIntBitwiseOp('&', x, y);
+};
diff --git a/node_modules/es-abstract/2022/BigInt/bitwiseNOT.js b/node_modules/es-abstract/2022/BigInt/bitwiseNOT.js
new file mode 100644
index 000000000..9a444dfea
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/bitwiseNOT.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseNOT
+
+module.exports = function BigIntBitwiseNOT(x) {
+ if (Type(x) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` argument must be a BigInt');
+ }
+ return -x - $BigInt(1);
+};
diff --git a/node_modules/es-abstract/2022/BigInt/bitwiseOR.js b/node_modules/es-abstract/2022/BigInt/bitwiseOR.js
new file mode 100644
index 000000000..3c1b57193
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/bitwiseOR.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var BigIntBitwiseOp = require('../BigIntBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseOR
+
+module.exports = function BigIntBitwiseOR(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+ return BigIntBitwiseOp('|', x, y);
+};
diff --git a/node_modules/es-abstract/2022/BigInt/bitwiseXOR.js b/node_modules/es-abstract/2022/BigInt/bitwiseXOR.js
new file mode 100644
index 000000000..45f8217ef
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/bitwiseXOR.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var BigIntBitwiseOp = require('../BigIntBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseXOR
+
+module.exports = function BigIntBitwiseXOR(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+ return BigIntBitwiseOp('^', x, y);
+};
diff --git a/node_modules/es-abstract/2022/BigInt/divide.js b/node_modules/es-abstract/2022/BigInt/divide.js
new file mode 100644
index 000000000..5706e7d72
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/divide.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-divide
+
+module.exports = function BigIntDivide(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+ if (y === $BigInt(0)) {
+ throw new $RangeError('Division by zero');
+ }
+ // shortcut for the actual spec mechanics
+ return x / y;
+};
diff --git a/node_modules/es-abstract/2022/BigInt/equal.js b/node_modules/es-abstract/2022/BigInt/equal.js
new file mode 100644
index 000000000..a28826d67
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/equal.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-equal
+
+module.exports = function BigIntEqual(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+ // shortcut for the actual spec mechanics
+ return x === y;
+};
diff --git a/node_modules/es-abstract/2022/BigInt/exponentiate.js b/node_modules/es-abstract/2022/BigInt/exponentiate.js
new file mode 100644
index 000000000..2365838c2
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/exponentiate.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-exponentiate
+
+module.exports = function BigIntExponentiate(base, exponent) {
+ if (Type(base) !== 'BigInt' || Type(exponent) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `base` and `exponent` arguments must be BigInts');
+ }
+ if (exponent < $BigInt(0)) {
+ throw new $RangeError('Exponent must be positive');
+ }
+ if (/* base === $BigInt(0) && */ exponent === $BigInt(0)) {
+ return $BigInt(1);
+ }
+
+ var square = base;
+ var remaining = exponent;
+ while (remaining > $BigInt(0)) {
+ square += exponent;
+ --remaining; // eslint-disable-line no-plusplus
+ }
+ return square;
+};
diff --git a/node_modules/es-abstract/2022/BigInt/index.js b/node_modules/es-abstract/2022/BigInt/index.js
new file mode 100644
index 000000000..63ec52da6
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/index.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var add = require('./add');
+var bitwiseAND = require('./bitwiseAND');
+var bitwiseNOT = require('./bitwiseNOT');
+var bitwiseOR = require('./bitwiseOR');
+var bitwiseXOR = require('./bitwiseXOR');
+var divide = require('./divide');
+var equal = require('./equal');
+var exponentiate = require('./exponentiate');
+var leftShift = require('./leftShift');
+var lessThan = require('./lessThan');
+var multiply = require('./multiply');
+var remainder = require('./remainder');
+var sameValue = require('./sameValue');
+var sameValueZero = require('./sameValueZero');
+var signedRightShift = require('./signedRightShift');
+var subtract = require('./subtract');
+var toString = require('./toString');
+var unaryMinus = require('./unaryMinus');
+var unsignedRightShift = require('./unsignedRightShift');
+
+module.exports = {
+ add: add,
+ bitwiseAND: bitwiseAND,
+ bitwiseNOT: bitwiseNOT,
+ bitwiseOR: bitwiseOR,
+ bitwiseXOR: bitwiseXOR,
+ divide: divide,
+ equal: equal,
+ exponentiate: exponentiate,
+ leftShift: leftShift,
+ lessThan: lessThan,
+ multiply: multiply,
+ remainder: remainder,
+ sameValue: sameValue,
+ sameValueZero: sameValueZero,
+ signedRightShift: signedRightShift,
+ subtract: subtract,
+ toString: toString,
+ unaryMinus: unaryMinus,
+ unsignedRightShift: unsignedRightShift
+};
diff --git a/node_modules/es-abstract/2022/BigInt/leftShift.js b/node_modules/es-abstract/2022/BigInt/leftShift.js
new file mode 100644
index 000000000..d2a570223
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/leftShift.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-leftShift
+
+module.exports = function BigIntLeftShift(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ // shortcut for the actual spec mechanics
+ return x << y;
+};
diff --git a/node_modules/es-abstract/2022/BigInt/lessThan.js b/node_modules/es-abstract/2022/BigInt/lessThan.js
new file mode 100644
index 000000000..0b3cd6ba0
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/lessThan.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-lessThan
+
+module.exports = function BigIntLessThan(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ // shortcut for the actual spec mechanics
+ return x < y;
+};
diff --git a/node_modules/es-abstract/2022/BigInt/multiply.js b/node_modules/es-abstract/2022/BigInt/multiply.js
new file mode 100644
index 000000000..6e5d56c83
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/multiply.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-multiply
+
+module.exports = function BigIntMultiply(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ // shortcut for the actual spec mechanics
+ return x * y;
+};
diff --git a/node_modules/es-abstract/2022/BigInt/remainder.js b/node_modules/es-abstract/2022/BigInt/remainder.js
new file mode 100644
index 000000000..d2dc678ca
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/remainder.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+var zero = $BigInt && $BigInt(0);
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-remainder
+
+module.exports = function BigIntRemainder(n, d) {
+ if (Type(n) !== 'BigInt' || Type(d) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `n` and `d` arguments must be BigInts');
+ }
+
+ if (d === zero) {
+ throw new $RangeError('Division by zero');
+ }
+
+ if (n === zero) {
+ return zero;
+ }
+
+ // shortcut for the actual spec mechanics
+ return n % d;
+};
diff --git a/node_modules/es-abstract/2022/BigInt/sameValue.js b/node_modules/es-abstract/2022/BigInt/sameValue.js
new file mode 100644
index 000000000..63ff06393
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/sameValue.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+var BigIntEqual = require('./equal');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-sameValue
+
+module.exports = function BigIntSameValue(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ return BigIntEqual(x, y);
+};
diff --git a/node_modules/es-abstract/2022/BigInt/sameValueZero.js b/node_modules/es-abstract/2022/BigInt/sameValueZero.js
new file mode 100644
index 000000000..39f262c6d
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/sameValueZero.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+var BigIntEqual = require('./equal');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-sameValueZero
+
+module.exports = function BigIntSameValueZero(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ return BigIntEqual(x, y);
+};
diff --git a/node_modules/es-abstract/2022/BigInt/signedRightShift.js b/node_modules/es-abstract/2022/BigInt/signedRightShift.js
new file mode 100644
index 000000000..f63c642f0
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/signedRightShift.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+var BigIntLeftShift = require('./leftShift');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-signedRightShift
+
+module.exports = function BigIntSignedRightShift(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ return BigIntLeftShift(x, -y);
+};
diff --git a/node_modules/es-abstract/2022/BigInt/subtract.js b/node_modules/es-abstract/2022/BigInt/subtract.js
new file mode 100644
index 000000000..0490784f6
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/subtract.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-subtract
+
+module.exports = function BigIntSubtract(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ // shortcut for the actual spec mechanics
+ return x - y;
+};
diff --git a/node_modules/es-abstract/2022/BigInt/toString.js b/node_modules/es-abstract/2022/BigInt/toString.js
new file mode 100644
index 000000000..858d95545
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/toString.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $String = GetIntrinsic('%String%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-tostring
+
+module.exports = function BigIntToString(x) {
+ if (Type(x) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` must be a BigInt');
+ }
+
+ return $String(x);
+};
diff --git a/node_modules/es-abstract/2022/BigInt/unaryMinus.js b/node_modules/es-abstract/2022/BigInt/unaryMinus.js
new file mode 100644
index 000000000..ee0f7ef19
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/unaryMinus.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+var zero = $BigInt && $BigInt(0);
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-unaryMinus
+
+module.exports = function BigIntUnaryMinus(x) {
+ if (Type(x) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` argument must be a BigInt');
+ }
+
+ if (x === zero) {
+ return zero;
+ }
+
+ return -x;
+};
diff --git a/node_modules/es-abstract/2022/BigInt/unsignedRightShift.js b/node_modules/es-abstract/2022/BigInt/unsignedRightShift.js
new file mode 100644
index 000000000..7ad94f7a8
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigInt/unsignedRightShift.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-unsignedRightShift
+
+module.exports = function BigIntUnsignedRightShift(x, y) {
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be BigInts');
+ }
+
+ throw new $TypeError('BigInts have no unsigned right shift, use >> instead');
+};
diff --git a/node_modules/es-abstract/2022/BigIntBitwiseOp.js b/node_modules/es-abstract/2022/BigIntBitwiseOp.js
new file mode 100644
index 000000000..0b1c03a91
--- /dev/null
+++ b/node_modules/es-abstract/2022/BigIntBitwiseOp.js
@@ -0,0 +1,66 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+// var $BigInt = GetIntrinsic('%BigInt%', true);
+// var $pow = GetIntrinsic('%Math.pow%');
+
+// var BinaryAnd = require('./BinaryAnd');
+// var BinaryOr = require('./BinaryOr');
+// var BinaryXor = require('./BinaryXor');
+var Type = require('./Type');
+// var modulo = require('./modulo');
+
+// var zero = $BigInt && $BigInt(0);
+// var negOne = $BigInt && $BigInt(-1);
+// var two = $BigInt && $BigInt(2);
+
+// https://262.ecma-international.org/11.0/#sec-bigintbitwiseop
+
+module.exports = function BigIntBitwiseOp(op, x, y) {
+ if (op !== '&' && op !== '|' && op !== '^') {
+ throw new $TypeError('Assertion failed: `op` must be `&`, `|`, or `^`');
+ }
+ if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
+ throw new $TypeError('`x` and `y` must be BigInts');
+ }
+
+ if (op === '&') {
+ return x & y;
+ }
+ if (op === '|') {
+ return x | y;
+ }
+ return x ^ y;
+ /*
+ var result = zero;
+ var shift = 0;
+ while (x !== zero && x !== negOne && y !== zero && y !== negOne) {
+ var xDigit = modulo(x, two);
+ var yDigit = modulo(y, two);
+ if (op === '&') {
+ result += $pow(2, shift) * BinaryAnd(xDigit, yDigit);
+ } else if (op === '|') {
+ result += $pow(2, shift) * BinaryOr(xDigit, yDigit);
+ } else if (op === '^') {
+ result += $pow(2, shift) * BinaryXor(xDigit, yDigit);
+ }
+ shift += 1;
+ x = (x - xDigit) / two;
+ y = (y - yDigit) / two;
+ }
+ var tmp;
+ if (op === '&') {
+ tmp = BinaryAnd(modulo(x, two), modulo(y, two));
+ } else if (op === '|') {
+ tmp = BinaryAnd(modulo(x, two), modulo(y, two));
+ } else {
+ tmp = BinaryXor(modulo(x, two), modulo(y, two));
+ }
+ if (tmp !== 0) {
+ result -= $pow(2, shift);
+ }
+ return result;
+ */
+};
diff --git a/node_modules/es-abstract/2022/BinaryAnd.js b/node_modules/es-abstract/2022/BinaryAnd.js
new file mode 100644
index 000000000..c617f388d
--- /dev/null
+++ b/node_modules/es-abstract/2022/BinaryAnd.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+// https://262.ecma-international.org/11.0/#sec-binaryand
+
+module.exports = function BinaryAnd(x, y) {
+ if ((x !== 0 && x !== 1) || (y !== 0 && y !== 1)) {
+ throw new $TypeError('Assertion failed: `x` and `y` must be either 0 or 1');
+ }
+ return x & y;
+};
diff --git a/node_modules/es-abstract/2022/BinaryOr.js b/node_modules/es-abstract/2022/BinaryOr.js
new file mode 100644
index 000000000..6de0955f1
--- /dev/null
+++ b/node_modules/es-abstract/2022/BinaryOr.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+// https://262.ecma-international.org/11.0/#sec-binaryor
+
+module.exports = function BinaryOr(x, y) {
+ if ((x !== 0 && x !== 1) || (y !== 0 && y !== 1)) {
+ throw new $TypeError('Assertion failed: `x` and `y` must be either 0 or 1');
+ }
+ return x | y;
+};
diff --git a/node_modules/es-abstract/2022/BinaryXor.js b/node_modules/es-abstract/2022/BinaryXor.js
new file mode 100644
index 000000000..189d7d846
--- /dev/null
+++ b/node_modules/es-abstract/2022/BinaryXor.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+// https://262.ecma-international.org/11.0/#sec-binaryxor
+
+module.exports = function BinaryXor(x, y) {
+ if ((x !== 0 && x !== 1) || (y !== 0 && y !== 1)) {
+ throw new $TypeError('Assertion failed: `x` and `y` must be either 0 or 1');
+ }
+ return x ^ y;
+};
diff --git a/node_modules/es-abstract/2022/ByteListBitwiseOp.js b/node_modules/es-abstract/2022/ByteListBitwiseOp.js
new file mode 100644
index 000000000..4e3c1f10b
--- /dev/null
+++ b/node_modules/es-abstract/2022/ByteListBitwiseOp.js
@@ -0,0 +1,44 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $push = callBound('Array.prototype.push');
+
+var IsArray = require('./IsArray');
+
+var isByteValue = require('../helpers/isByteValue');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-bytelistbitwiseop
+
+module.exports = function ByteListBitwiseOp(op, xBytes, yBytes) {
+ if (op !== '&' && op !== '^' && op !== '|') {
+ throw new $TypeError('Assertion failed: `op` must be `&`, `^`, or `|`');
+ }
+ if (!IsArray(xBytes) || !IsArray(yBytes) || xBytes.length !== yBytes.length) {
+ throw new $TypeError('Assertion failed: `xBytes` and `yBytes` must be same-length sequences of byte values (an integer 0-255, inclusive)');
+ }
+
+ var result = [];
+
+ for (var i = 0; i < xBytes.length; i += 1) {
+ var xByte = xBytes[i];
+ var yByte = yBytes[i];
+ if (!isByteValue(xByte) || !isByteValue(yByte)) {
+ throw new $TypeError('Assertion failed: `xBytes` and `yBytes` must be same-length sequences of byte values (an integer 0-255, inclusive)');
+ }
+ var resultByte;
+ if (op === '&') {
+ resultByte = xByte & yByte;
+ } else if (op === '^') {
+ resultByte = xByte ^ yByte;
+ } else {
+ resultByte = xByte | yByte;
+ }
+ $push(result, resultByte);
+ }
+
+ return result;
+};
diff --git a/node_modules/es-abstract/2022/ByteListEqual.js b/node_modules/es-abstract/2022/ByteListEqual.js
new file mode 100644
index 000000000..adc2378e7
--- /dev/null
+++ b/node_modules/es-abstract/2022/ByteListEqual.js
@@ -0,0 +1,33 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsArray = require('./IsArray');
+
+var isByteValue = require('../helpers/isByteValue');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-bytelistequal
+
+module.exports = function ByteListEqual(xBytes, yBytes) {
+ if (!IsArray(xBytes) || !IsArray(yBytes)) {
+ throw new $TypeError('Assertion failed: `xBytes` and `yBytes` must be sequences of byte values (an integer 0-255, inclusive)');
+ }
+
+ if (xBytes.length !== yBytes.length) {
+ return false;
+ }
+
+ for (var i = 0; i < xBytes.length; i += 1) {
+ var xByte = xBytes[i];
+ var yByte = yBytes[i];
+ if (!isByteValue(xByte) || !isByteValue(yByte)) {
+ throw new $TypeError('Assertion failed: `xBytes` and `yBytes` must be sequences of byte values (an integer 0-255, inclusive)');
+ }
+ if (xByte !== yByte) {
+ return false;
+ }
+ }
+ return true;
+};
diff --git a/node_modules/es-abstract/2022/Call.js b/node_modules/es-abstract/2022/Call.js
new file mode 100644
index 000000000..4b238c691
--- /dev/null
+++ b/node_modules/es-abstract/2022/Call.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsArray = require('./IsArray');
+
+var $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('%Function.prototype.apply%');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-call
+
+module.exports = function Call(F, V) {
+ var argumentsList = arguments.length > 2 ? arguments[2] : [];
+ if (!IsArray(argumentsList)) {
+ throw new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');
+ }
+ return $apply(F, V, argumentsList);
+};
diff --git a/node_modules/es-abstract/2022/CanonicalNumericIndexString.js b/node_modules/es-abstract/2022/CanonicalNumericIndexString.js
new file mode 100644
index 000000000..feb878c03
--- /dev/null
+++ b/node_modules/es-abstract/2022/CanonicalNumericIndexString.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var SameValue = require('./SameValue');
+var ToNumber = require('./ToNumber');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring
+
+module.exports = function CanonicalNumericIndexString(argument) {
+ if (Type(argument) !== 'String') {
+ throw new $TypeError('Assertion failed: `argument` must be a String');
+ }
+ if (argument === '-0') { return -0; }
+ var n = ToNumber(argument);
+ if (SameValue(ToString(n), argument)) { return n; }
+ return void 0;
+};
diff --git a/node_modules/es-abstract/2022/CharacterRange.js b/node_modules/es-abstract/2022/CharacterRange.js
new file mode 100644
index 000000000..70e4b5235
--- /dev/null
+++ b/node_modules/es-abstract/2022/CharacterRange.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $charCodeAt = callBound('%String.prototype.charCodeAt%');
+var $push = callBound('%Array.prototype.push%');
+
+module.exports = function CharacterRange(A, B) {
+ if (A.length !== 1 || B.length !== 1) {
+ throw new $TypeError('Assertion failed: CharSets A and B contain exactly one character');
+ }
+
+ var a = A[0];
+ var b = B[0];
+
+ var i = $charCodeAt(a, 0);
+ var j = $charCodeAt(b, 0);
+
+ if (!(i <= j)) {
+ throw new $TypeError('Assertion failed: i is not <= j');
+ }
+
+ var arr = [];
+ for (var k = i; k <= j; k += 1) {
+ $push(arr, $fromCharCode(k));
+ }
+ return arr;
+};
diff --git a/node_modules/es-abstract/2022/ClearKeptObjects.js b/node_modules/es-abstract/2022/ClearKeptObjects.js
new file mode 100644
index 000000000..9397f5966
--- /dev/null
+++ b/node_modules/es-abstract/2022/ClearKeptObjects.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var SLOT = require('internal-slot');
+var keptObjects = [];
+
+// https://ecma-international.org/ecma-262/12.0/#sec-clear-kept-objects
+
+module.exports = function ClearKeptObjects() {
+ keptObjects.length = 0;
+};
+
+SLOT.set(module.exports, '[[es-abstract internal: KeptAlive]]', keptObjects);
diff --git a/node_modules/es-abstract/2022/CodePointAt.js b/node_modules/es-abstract/2022/CodePointAt.js
new file mode 100644
index 000000000..7a9ac1be7
--- /dev/null
+++ b/node_modules/es-abstract/2022/CodePointAt.js
@@ -0,0 +1,58 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var callBound = require('call-bind/callBound');
+var isLeadingSurrogate = require('../helpers/isLeadingSurrogate');
+var isTrailingSurrogate = require('../helpers/isTrailingSurrogate');
+
+var Type = require('./Type');
+var UTF16SurrogatePairToCodePoint = require('./UTF16SurrogatePairToCodePoint');
+
+var $charAt = callBound('String.prototype.charAt');
+var $charCodeAt = callBound('String.prototype.charCodeAt');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-codepointat
+
+module.exports = function CodePointAt(string, position) {
+ if (Type(string) !== 'String') {
+ throw new $TypeError('Assertion failed: `string` must be a String');
+ }
+ var size = string.length;
+ if (position < 0 || position >= size) {
+ throw new $TypeError('Assertion failed: `position` must be >= 0, and < the length of `string`');
+ }
+ var first = $charCodeAt(string, position);
+ var cp = $charAt(string, position);
+ var firstIsLeading = isLeadingSurrogate(first);
+ var firstIsTrailing = isTrailingSurrogate(first);
+ if (!firstIsLeading && !firstIsTrailing) {
+ return {
+ '[[CodePoint]]': cp,
+ '[[CodeUnitCount]]': 1,
+ '[[IsUnpairedSurrogate]]': false
+ };
+ }
+ if (firstIsTrailing || (position + 1 === size)) {
+ return {
+ '[[CodePoint]]': cp,
+ '[[CodeUnitCount]]': 1,
+ '[[IsUnpairedSurrogate]]': true
+ };
+ }
+ var second = $charCodeAt(string, position + 1);
+ if (!isTrailingSurrogate(second)) {
+ return {
+ '[[CodePoint]]': cp,
+ '[[CodeUnitCount]]': 1,
+ '[[IsUnpairedSurrogate]]': true
+ };
+ }
+
+ return {
+ '[[CodePoint]]': UTF16SurrogatePairToCodePoint(first, second),
+ '[[CodeUnitCount]]': 2,
+ '[[IsUnpairedSurrogate]]': false
+ };
+};
diff --git a/node_modules/es-abstract/2022/CodePointsToString.js b/node_modules/es-abstract/2022/CodePointsToString.js
new file mode 100644
index 000000000..403126cd2
--- /dev/null
+++ b/node_modules/es-abstract/2022/CodePointsToString.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var UTF16EncodeCodePoint = require('./UTF16EncodeCodePoint');
+var IsArray = require('./IsArray');
+
+var forEach = require('../helpers/forEach');
+var isCodePoint = require('../helpers/isCodePoint');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-codepointstostring
+
+module.exports = function CodePointsToString(text) {
+ if (!IsArray(text)) {
+ throw new $TypeError('Assertion failed: `text` must be a sequence of Unicode Code Points');
+ }
+ var result = '';
+ forEach(text, function (cp) {
+ if (!isCodePoint(cp)) {
+ throw new $TypeError('Assertion failed: `text` must be a sequence of Unicode Code Points');
+ }
+ result += UTF16EncodeCodePoint(cp);
+ });
+ return result;
+};
diff --git a/node_modules/es-abstract/2022/CompletePropertyDescriptor.js b/node_modules/es-abstract/2022/CompletePropertyDescriptor.js
new file mode 100644
index 000000000..548bf415a
--- /dev/null
+++ b/node_modules/es-abstract/2022/CompletePropertyDescriptor.js
@@ -0,0 +1,39 @@
+'use strict';
+
+var has = require('has');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsGenericDescriptor = require('./IsGenericDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor
+
+module.exports = function CompletePropertyDescriptor(Desc) {
+ /* eslint no-param-reassign: 0 */
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
+
+ if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) {
+ if (!has(Desc, '[[Value]]')) {
+ Desc['[[Value]]'] = void 0;
+ }
+ if (!has(Desc, '[[Writable]]')) {
+ Desc['[[Writable]]'] = false;
+ }
+ } else {
+ if (!has(Desc, '[[Get]]')) {
+ Desc['[[Get]]'] = void 0;
+ }
+ if (!has(Desc, '[[Set]]')) {
+ Desc['[[Set]]'] = void 0;
+ }
+ }
+ if (!has(Desc, '[[Enumerable]]')) {
+ Desc['[[Enumerable]]'] = false;
+ }
+ if (!has(Desc, '[[Configurable]]')) {
+ Desc['[[Configurable]]'] = false;
+ }
+ return Desc;
+};
diff --git a/node_modules/es-abstract/2022/CompletionRecord.js b/node_modules/es-abstract/2022/CompletionRecord.js
new file mode 100644
index 000000000..370a5677f
--- /dev/null
+++ b/node_modules/es-abstract/2022/CompletionRecord.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var SLOT = require('internal-slot');
+
+// https://262.ecma-international.org/7.0/#sec-completion-record-specification-type
+
+var CompletionRecord = function CompletionRecord(type, value) {
+ if (!(this instanceof CompletionRecord)) {
+ return new CompletionRecord(type, value);
+ }
+ if (type !== 'normal' && type !== 'break' && type !== 'continue' && type !== 'return' && type !== 'throw') {
+ throw new $SyntaxError('Assertion failed: `type` must be one of "normal", "break", "continue", "return", or "throw"');
+ }
+ SLOT.set(this, '[[Type]]', type);
+ SLOT.set(this, '[[Value]]', value);
+ // [[Target]] slot?
+};
+
+CompletionRecord.prototype.type = function Type() {
+ return SLOT.get(this, '[[Type]]');
+};
+
+CompletionRecord.prototype.value = function Value() {
+ return SLOT.get(this, '[[Value]]');
+};
+
+CompletionRecord.prototype['?'] = function ReturnIfAbrupt() {
+ var type = SLOT.get(this, '[[Type]]');
+ var value = SLOT.get(this, '[[Value]]');
+
+ if (type === 'normal') {
+ return value;
+ }
+ if (type === 'throw') {
+ throw value;
+ }
+ throw new $SyntaxError('Completion Record is not of type "normal" or "throw": other types not supported');
+};
+
+CompletionRecord.prototype['!'] = function assert() {
+ var type = SLOT.get(this, '[[Type]]');
+
+ if (type !== 'normal') {
+ throw new $SyntaxError('Assertion failed: Completion Record is not of type "normal"');
+ }
+ return SLOT.get(this, '[[Value]]');
+};
+
+module.exports = CompletionRecord;
diff --git a/node_modules/es-abstract/2022/CopyDataProperties.js b/node_modules/es-abstract/2022/CopyDataProperties.js
new file mode 100644
index 000000000..bbb5d6f0a
--- /dev/null
+++ b/node_modules/es-abstract/2022/CopyDataProperties.js
@@ -0,0 +1,70 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var forEach = require('../helpers/forEach');
+var every = require('../helpers/every');
+var some = require('../helpers/some');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
+
+var CreateDataPropertyOrThrow = require('./CreateDataPropertyOrThrow');
+var Get = require('./Get');
+var IsArray = require('./IsArray');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var ToNumber = require('./ToNumber');
+var ToObject = require('./ToObject');
+var Type = require('./Type');
+
+// https://www.ecma-international.org/ecma-262/12.0/#sec-copydataproperties
+
+module.exports = function CopyDataProperties(target, source, excludedItems) {
+ if (Type(target) !== 'Object') {
+ throw new $TypeError('Assertion failed: "target" must be an Object');
+ }
+
+ if (!IsArray(excludedItems) || !every(excludedItems, IsPropertyKey)) {
+ throw new $TypeError('Assertion failed: "excludedItems" must be a List of Property Keys');
+ }
+
+ if (typeof source === 'undefined' || source === null) {
+ return target;
+ }
+
+ var from = ToObject(source);
+
+ var keys = OwnPropertyKeys(from);
+ forEach(keys, function (nextKey) {
+ var excluded = some(excludedItems, function (e) {
+ return SameValue(e, nextKey) === true;
+ });
+ /*
+ var excluded = false;
+
+ forEach(excludedItems, function (e) {
+ if (SameValue(e, nextKey) === true) {
+ excluded = true;
+ }
+ });
+ */
+
+ var enumerable = $isEnumerable(from, nextKey) || (
+ // this is to handle string keys being non-enumerable in older engines
+ typeof source === 'string'
+ && nextKey >= 0
+ && IsIntegralNumber(ToNumber(nextKey))
+ );
+ if (excluded === false && enumerable) {
+ var propValue = Get(from, nextKey);
+ CreateDataPropertyOrThrow(target, nextKey, propValue);
+ }
+ });
+
+ return target;
+};
diff --git a/node_modules/es-abstract/2022/CreateAsyncFromSyncIterator.js b/node_modules/es-abstract/2022/CreateAsyncFromSyncIterator.js
new file mode 100644
index 000000000..693321d51
--- /dev/null
+++ b/node_modules/es-abstract/2022/CreateAsyncFromSyncIterator.js
@@ -0,0 +1,121 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var AsyncFromSyncIteratorContinuation = require('./AsyncFromSyncIteratorContinuation');
+var Call = require('./Call');
+var CreateIterResultObject = require('./CreateIterResultObject');
+var Get = require('./Get');
+var GetMethod = require('./GetMethod');
+var IteratorNext = require('./IteratorNext');
+var OrdinaryObjectCreate = require('./OrdinaryObjectCreate');
+var Type = require('./Type');
+
+var SLOT = require('internal-slot');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var $AsyncFromSyncIteratorPrototype = GetIntrinsic('%AsyncFromSyncIteratorPrototype%', true) || {
+ next: function next(value) {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var argsLength = arguments.length;
+
+ return new Promise(function (resolve) { // step 3
+ var syncIteratorRecord = SLOT.get(O, '[[SyncIteratorRecord]]'); // step 4
+ var result;
+ if (argsLength > 0) {
+ result = IteratorNext(syncIteratorRecord['[[Iterator]]'], value); // step 5.a
+ } else { // step 6
+ result = IteratorNext(syncIteratorRecord['[[Iterator]]']);// step 6.a
+ }
+ resolve(AsyncFromSyncIteratorContinuation(result)); // step 8
+ });
+ },
+ 'return': function () {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var valueIsPresent = arguments.length > 0;
+ var value = valueIsPresent ? arguments[0] : void undefined;
+
+ return new Promise(function (resolve, reject) { // step 3
+ var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4
+ var iteratorReturn = GetMethod(syncIterator, 'return'); // step 5
+
+ if (typeof iteratorReturn === 'undefined') { // step 7
+ var iterResult = CreateIterResultObject(value, true); // step 7.a
+ Call(resolve, undefined, [iterResult]); // step 7.b
+ return;
+ }
+ var result;
+ if (valueIsPresent) { // step 8
+ result = Call(iteratorReturn, syncIterator, [value]); // step 8.a
+ } else { // step 9
+ result = Call(iteratorReturn, syncIterator); // step 9.a
+ }
+ if (Type(result) !== 'Object') { // step 11
+ Call(reject, undefined, [new $TypeError('Iterator `return` method returned a non-object value.')]); // step 11.a
+ return;
+ }
+
+ resolve(AsyncFromSyncIteratorContinuation(result)); // step 12
+ });
+ },
+ 'throw': function () {
+ var O = this; // step 1
+
+ SLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2
+
+ var valueIsPresent = arguments.length > 0;
+ var value = valueIsPresent ? arguments[0] : void undefined;
+
+ return new Promise(function (resolve, reject) { // step 3
+ var syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4
+
+ var throwMethod = GetMethod(syncIterator, 'throw'); // step 5
+
+ if (typeof throwMethod === 'undefined') { // step 7
+ Call(reject, undefined, [value]); // step 7.a
+ return;
+ }
+
+ var result;
+ if (valueIsPresent) { // step 8
+ result = Call(throwMethod, syncIterator, [value]); // step 8.a
+ } else { // step 9
+ result = Call(throwMethod, syncIterator); // step 9.a
+ }
+ if (Type(result) !== 'Object') { // step 11
+ Call(reject, undefined, [new $TypeError('Iterator `throw` method returned a non-object value.')]); // step 11.a
+ return;
+ }
+
+ resolve(AsyncFromSyncIteratorContinuation(result/* , promiseCapability */)); // step 12
+ });
+ }
+};
+
+// https://ecma-international.org/ecma-262/11.0/#sec-createasyncfromsynciterator
+
+module.exports = function CreateAsyncFromSyncIterator(syncIteratorRecord) {
+ assertRecord(Type, 'Iterator Record', 'syncIteratorRecord', syncIteratorRecord);
+
+ // var asyncIterator = OrdinaryObjectCreate(%AsyncFromSyncIteratorPrototype%, « [[SyncIteratorRecord]] »); // step 1
+ var asyncIterator = OrdinaryObjectCreate($AsyncFromSyncIteratorPrototype);
+
+ SLOT.set(asyncIterator, '[[SyncIteratorRecord]]', syncIteratorRecord); // step 2
+
+ var nextMethod = Get(asyncIterator, 'next'); // step 3
+
+ return { // steps 3-4
+ '[[Iterator]]': asyncIterator,
+ '[[NextMethod]]': nextMethod,
+ '[[Done]]': false
+ };
+};
diff --git a/node_modules/es-abstract/2022/CreateDataProperty.js b/node_modules/es-abstract/2022/CreateDataProperty.js
new file mode 100644
index 000000000..02c6cd1f8
--- /dev/null
+++ b/node_modules/es-abstract/2022/CreateDataProperty.js
@@ -0,0 +1,45 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DefineOwnProperty = require('../helpers/DefineOwnProperty');
+
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsExtensible = require('./IsExtensible');
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-createdataproperty
+
+module.exports = function CreateDataProperty(O, P, V) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+ var oldDesc = OrdinaryGetOwnProperty(O, P);
+ var extensible = !oldDesc || IsExtensible(O);
+ var nonConfigurable = oldDesc && !oldDesc['[[Configurable]]'];
+ if (nonConfigurable || !extensible) {
+ return false;
+ }
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ {
+ '[[Configurable]]': true,
+ '[[Enumerable]]': true,
+ '[[Value]]': V,
+ '[[Writable]]': true
+ }
+ );
+};
diff --git a/node_modules/es-abstract/2022/CreateDataPropertyOrThrow.js b/node_modules/es-abstract/2022/CreateDataPropertyOrThrow.js
new file mode 100644
index 000000000..2f7c410ba
--- /dev/null
+++ b/node_modules/es-abstract/2022/CreateDataPropertyOrThrow.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var CreateDataProperty = require('./CreateDataProperty');
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// // https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow
+
+module.exports = function CreateDataPropertyOrThrow(O, P, V) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+ var success = CreateDataProperty(O, P, V);
+ if (!success) {
+ throw new $TypeError('unable to create data property');
+ }
+ return success;
+};
diff --git a/node_modules/es-abstract/2022/CreateHTML.js b/node_modules/es-abstract/2022/CreateHTML.js
new file mode 100644
index 000000000..ccded1e65
--- /dev/null
+++ b/node_modules/es-abstract/2022/CreateHTML.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $replace = callBound('String.prototype.replace');
+
+var RequireObjectCoercible = require('./RequireObjectCoercible');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-createhtml
+
+module.exports = function CreateHTML(string, tag, attribute, value) {
+ if (Type(tag) !== 'String' || Type(attribute) !== 'String') {
+ throw new $TypeError('Assertion failed: `tag` and `attribute` must be strings');
+ }
+ var str = RequireObjectCoercible(string);
+ var S = ToString(str);
+ var p1 = '<' + tag;
+ if (attribute !== '') {
+ var V = ToString(value);
+ var escapedV = $replace(V, /\x22/g, '"');
+ p1 += '\x20' + attribute + '\x3D\x22' + escapedV + '\x22';
+ }
+ return p1 + '>' + S + '' + tag + '>';
+};
diff --git a/node_modules/es-abstract/2022/CreateIterResultObject.js b/node_modules/es-abstract/2022/CreateIterResultObject.js
new file mode 100644
index 000000000..eea77a512
--- /dev/null
+++ b/node_modules/es-abstract/2022/CreateIterResultObject.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject
+
+module.exports = function CreateIterResultObject(value, done) {
+ if (Type(done) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: Type(done) is not Boolean');
+ }
+ return {
+ value: value,
+ done: done
+ };
+};
diff --git a/node_modules/es-abstract/2022/CreateListFromArrayLike.js b/node_modules/es-abstract/2022/CreateListFromArrayLike.js
new file mode 100644
index 000000000..40293127d
--- /dev/null
+++ b/node_modules/es-abstract/2022/CreateListFromArrayLike.js
@@ -0,0 +1,44 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $indexOf = callBound('Array.prototype.indexOf', true) || callBound('String.prototype.indexOf');
+var $push = callBound('Array.prototype.push');
+
+var Get = require('./Get');
+var IsArray = require('./IsArray');
+var LengthOfArrayLike = require('./LengthOfArrayLike');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/11.0/#sec-createlistfromarraylike
+
+module.exports = function CreateListFromArrayLike(obj) {
+ var elementTypes = arguments.length > 1
+ ? arguments[1]
+ : ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'BigInt', 'Object'];
+
+ if (Type(obj) !== 'Object') {
+ throw new $TypeError('Assertion failed: `obj` must be an Object');
+ }
+ if (!IsArray(elementTypes)) {
+ throw new $TypeError('Assertion failed: `elementTypes`, if provided, must be an array');
+ }
+ var len = LengthOfArrayLike(obj);
+ var list = [];
+ var index = 0;
+ while (index < len) {
+ var indexName = ToString(index);
+ var next = Get(obj, indexName);
+ var nextType = Type(next);
+ if ($indexOf(elementTypes, nextType) < 0) {
+ throw new $TypeError('item type ' + nextType + ' is not a valid elementType');
+ }
+ $push(list, next);
+ index += 1;
+ }
+ return list;
+};
diff --git a/node_modules/es-abstract/2022/CreateMethodProperty.js b/node_modules/es-abstract/2022/CreateMethodProperty.js
new file mode 100644
index 000000000..53274a561
--- /dev/null
+++ b/node_modules/es-abstract/2022/CreateMethodProperty.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DefineOwnProperty = require('../helpers/DefineOwnProperty');
+
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-createmethodproperty
+
+module.exports = function CreateMethodProperty(O, P, V) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+
+ var newDesc = {
+ '[[Configurable]]': true,
+ '[[Enumerable]]': false,
+ '[[Value]]': V,
+ '[[Writable]]': true
+ };
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ newDesc
+ );
+};
diff --git a/node_modules/es-abstract/2022/CreateNonEnumerableDataPropertyOrThrow.js b/node_modules/es-abstract/2022/CreateNonEnumerableDataPropertyOrThrow.js
new file mode 100644
index 000000000..59a16ef00
--- /dev/null
+++ b/node_modules/es-abstract/2022/CreateNonEnumerableDataPropertyOrThrow.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/13.0/#sec-createnonenumerabledatapropertyorthrow
+
+module.exports = function CreateNonEnumerableDataPropertyOrThrow(O, P, V) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+
+ var newDesc = {
+ '[[Configurable]]': true,
+ '[[Enumerable]]': false,
+ '[[Value]]': V,
+ '[[Writable]]': true
+ };
+ return DefinePropertyOrThrow(O, P, newDesc);
+};
diff --git a/node_modules/es-abstract/2022/CreateRegExpStringIterator.js b/node_modules/es-abstract/2022/CreateRegExpStringIterator.js
new file mode 100644
index 000000000..cdfae5621
--- /dev/null
+++ b/node_modules/es-abstract/2022/CreateRegExpStringIterator.js
@@ -0,0 +1,100 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var hasSymbols = require('has-symbols')();
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var IteratorPrototype = GetIntrinsic('%IteratorPrototype%', true);
+
+var AdvanceStringIndex = require('./AdvanceStringIndex');
+var CreateIterResultObject = require('./CreateIterResultObject');
+var CreateMethodProperty = require('./CreateMethodProperty');
+var Get = require('./Get');
+var OrdinaryObjectCreate = require('./OrdinaryObjectCreate');
+var RegExpExec = require('./RegExpExec');
+var Set = require('./Set');
+var ToLength = require('./ToLength');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+var SLOT = require('internal-slot');
+var setToStringTag = require('es-set-tostringtag');
+
+var RegExpStringIterator = function RegExpStringIterator(R, S, global, fullUnicode) {
+ if (Type(S) !== 'String') {
+ throw new $TypeError('`S` must be a string');
+ }
+ if (Type(global) !== 'Boolean') {
+ throw new $TypeError('`global` must be a boolean');
+ }
+ if (Type(fullUnicode) !== 'Boolean') {
+ throw new $TypeError('`fullUnicode` must be a boolean');
+ }
+ SLOT.set(this, '[[IteratingRegExp]]', R);
+ SLOT.set(this, '[[IteratedString]]', S);
+ SLOT.set(this, '[[Global]]', global);
+ SLOT.set(this, '[[Unicode]]', fullUnicode);
+ SLOT.set(this, '[[Done]]', false);
+};
+
+if (IteratorPrototype) {
+ RegExpStringIterator.prototype = OrdinaryObjectCreate(IteratorPrototype);
+}
+
+var RegExpStringIteratorNext = function next() {
+ var O = this; // eslint-disable-line no-invalid-this
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('receiver must be an object');
+ }
+ if (
+ !(O instanceof RegExpStringIterator)
+ || !SLOT.has(O, '[[IteratingRegExp]]')
+ || !SLOT.has(O, '[[IteratedString]]')
+ || !SLOT.has(O, '[[Global]]')
+ || !SLOT.has(O, '[[Unicode]]')
+ || !SLOT.has(O, '[[Done]]')
+ ) {
+ throw new $TypeError('"this" value must be a RegExpStringIterator instance');
+ }
+ if (SLOT.get(O, '[[Done]]')) {
+ return CreateIterResultObject(undefined, true);
+ }
+ var R = SLOT.get(O, '[[IteratingRegExp]]');
+ var S = SLOT.get(O, '[[IteratedString]]');
+ var global = SLOT.get(O, '[[Global]]');
+ var fullUnicode = SLOT.get(O, '[[Unicode]]');
+ var match = RegExpExec(R, S);
+ if (match === null) {
+ SLOT.set(O, '[[Done]]', true);
+ return CreateIterResultObject(undefined, true);
+ }
+ if (global) {
+ var matchStr = ToString(Get(match, '0'));
+ if (matchStr === '') {
+ var thisIndex = ToLength(Get(R, 'lastIndex'));
+ var nextIndex = AdvanceStringIndex(S, thisIndex, fullUnicode);
+ Set(R, 'lastIndex', nextIndex, true);
+ }
+ return CreateIterResultObject(match, false);
+ }
+ SLOT.set(O, '[[Done]]', true);
+ return CreateIterResultObject(match, false);
+};
+CreateMethodProperty(RegExpStringIterator.prototype, 'next', RegExpStringIteratorNext);
+
+if (hasSymbols) {
+ setToStringTag(RegExpStringIterator.prototype, 'RegExp String Iterator');
+
+ if (Symbol.iterator && typeof RegExpStringIterator.prototype[Symbol.iterator] !== 'function') {
+ var iteratorFn = function SymbolIterator() {
+ return this;
+ };
+ CreateMethodProperty(RegExpStringIterator.prototype, Symbol.iterator, iteratorFn);
+ }
+}
+
+// https://262.ecma-international.org/11.0/#sec-createregexpstringiterator
+module.exports = function CreateRegExpStringIterator(R, S, global, fullUnicode) {
+ // assert R.global === global && R.unicode === fullUnicode?
+ return new RegExpStringIterator(R, S, global, fullUnicode);
+};
diff --git a/node_modules/es-abstract/2022/DateFromTime.js b/node_modules/es-abstract/2022/DateFromTime.js
new file mode 100644
index 000000000..20e4f2e4d
--- /dev/null
+++ b/node_modules/es-abstract/2022/DateFromTime.js
@@ -0,0 +1,54 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $EvalError = GetIntrinsic('%EvalError%');
+
+var DayWithinYear = require('./DayWithinYear');
+var InLeapYear = require('./InLeapYear');
+var MonthFromTime = require('./MonthFromTime');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.5
+
+module.exports = function DateFromTime(t) {
+ var m = MonthFromTime(t);
+ var d = DayWithinYear(t);
+ if (m === 0) {
+ return d + 1;
+ }
+ if (m === 1) {
+ return d - 30;
+ }
+ var leap = InLeapYear(t);
+ if (m === 2) {
+ return d - 58 - leap;
+ }
+ if (m === 3) {
+ return d - 89 - leap;
+ }
+ if (m === 4) {
+ return d - 119 - leap;
+ }
+ if (m === 5) {
+ return d - 150 - leap;
+ }
+ if (m === 6) {
+ return d - 180 - leap;
+ }
+ if (m === 7) {
+ return d - 211 - leap;
+ }
+ if (m === 8) {
+ return d - 242 - leap;
+ }
+ if (m === 9) {
+ return d - 272 - leap;
+ }
+ if (m === 10) {
+ return d - 303 - leap;
+ }
+ if (m === 11) {
+ return d - 333 - leap;
+ }
+ throw new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m);
+};
diff --git a/node_modules/es-abstract/2022/DateString.js b/node_modules/es-abstract/2022/DateString.js
new file mode 100644
index 000000000..939c14c0c
--- /dev/null
+++ b/node_modules/es-abstract/2022/DateString.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
+var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
+
+var $isNaN = require('../helpers/isNaN');
+var padTimeComponent = require('../helpers/padTimeComponent');
+
+var Type = require('./Type');
+var WeekDay = require('./WeekDay');
+var MonthFromTime = require('./MonthFromTime');
+var YearFromTime = require('./YearFromTime');
+var DateFromTime = require('./DateFromTime');
+
+// https://262.ecma-international.org/9.0/#sec-datestring
+
+module.exports = function DateString(tv) {
+ if (Type(tv) !== 'Number' || $isNaN(tv)) {
+ throw new $TypeError('Assertion failed: `tv` must be a non-NaN Number');
+ }
+ var weekday = weekdays[WeekDay(tv)];
+ var month = months[MonthFromTime(tv)];
+ var day = padTimeComponent(DateFromTime(tv));
+ var year = padTimeComponent(YearFromTime(tv), 4);
+ return weekday + '\x20' + month + '\x20' + day + '\x20' + year;
+};
diff --git a/node_modules/es-abstract/2022/Day.js b/node_modules/es-abstract/2022/Day.js
new file mode 100644
index 000000000..51d01033c
--- /dev/null
+++ b/node_modules/es-abstract/2022/Day.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var floor = require('./floor');
+
+var msPerDay = require('../helpers/timeConstants').msPerDay;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.2
+
+module.exports = function Day(t) {
+ return floor(t / msPerDay);
+};
diff --git a/node_modules/es-abstract/2022/DayFromYear.js b/node_modules/es-abstract/2022/DayFromYear.js
new file mode 100644
index 000000000..341bf22a6
--- /dev/null
+++ b/node_modules/es-abstract/2022/DayFromYear.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var floor = require('./floor');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.3
+
+module.exports = function DayFromYear(y) {
+ return (365 * (y - 1970)) + floor((y - 1969) / 4) - floor((y - 1901) / 100) + floor((y - 1601) / 400);
+};
+
diff --git a/node_modules/es-abstract/2022/DayWithinYear.js b/node_modules/es-abstract/2022/DayWithinYear.js
new file mode 100644
index 000000000..4c580940a
--- /dev/null
+++ b/node_modules/es-abstract/2022/DayWithinYear.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var Day = require('./Day');
+var DayFromYear = require('./DayFromYear');
+var YearFromTime = require('./YearFromTime');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.4
+
+module.exports = function DayWithinYear(t) {
+ return Day(t) - DayFromYear(YearFromTime(t));
+};
diff --git a/node_modules/es-abstract/2022/DaysInYear.js b/node_modules/es-abstract/2022/DaysInYear.js
new file mode 100644
index 000000000..7116c6902
--- /dev/null
+++ b/node_modules/es-abstract/2022/DaysInYear.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var modulo = require('./modulo');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.3
+
+module.exports = function DaysInYear(y) {
+ if (modulo(y, 4) !== 0) {
+ return 365;
+ }
+ if (modulo(y, 100) !== 0) {
+ return 366;
+ }
+ if (modulo(y, 400) !== 0) {
+ return 365;
+ }
+ return 366;
+};
diff --git a/node_modules/es-abstract/2022/DefinePropertyOrThrow.js b/node_modules/es-abstract/2022/DefinePropertyOrThrow.js
new file mode 100644
index 000000000..26f2714bb
--- /dev/null
+++ b/node_modules/es-abstract/2022/DefinePropertyOrThrow.js
@@ -0,0 +1,50 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
+var DefineOwnProperty = require('../helpers/DefineOwnProperty');
+
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow
+
+module.exports = function DefinePropertyOrThrow(O, P, desc) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+
+ var Desc = isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, desc) ? desc : ToPropertyDescriptor(desc);
+ if (!isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, Desc)) {
+ throw new $TypeError('Assertion failed: Desc is not a valid Property Descriptor');
+ }
+
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ Desc
+ );
+};
diff --git a/node_modules/es-abstract/2022/DeletePropertyOrThrow.js b/node_modules/es-abstract/2022/DeletePropertyOrThrow.js
new file mode 100644
index 000000000..30d5e57c7
--- /dev/null
+++ b/node_modules/es-abstract/2022/DeletePropertyOrThrow.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow
+
+module.exports = function DeletePropertyOrThrow(O, P) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ var success = delete O[P];
+ if (!success) {
+ throw new $TypeError('Attempt to delete property failed.');
+ }
+ return success;
+};
diff --git a/node_modules/es-abstract/2022/DetachArrayBuffer.js b/node_modules/es-abstract/2022/DetachArrayBuffer.js
new file mode 100644
index 000000000..03284729b
--- /dev/null
+++ b/node_modules/es-abstract/2022/DetachArrayBuffer.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isArrayBuffer = require('is-array-buffer');
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+var MessageChannel;
+try {
+ // eslint-disable-next-line global-require
+ MessageChannel = require('worker_threads').MessageChannel;
+} catch (e) { /**/ }
+
+// https://262.ecma-international.org/9.0/#sec-detacharraybuffer
+
+/* globals postMessage */
+
+module.exports = function DetachArrayBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer) || isSharedArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot, and not a Shared Array Buffer');
+ }
+
+ // commented out since there's no way to set or access this key
+ // var key = arguments.length > 1 ? arguments[1] : void undefined;
+
+ // if (!SameValue(arrayBuffer[[ArrayBufferDetachKey]], key)) {
+ // throw new $TypeError('Assertion failed: `key` must be the value of the [[ArrayBufferDetachKey]] internal slot of `arrayBuffer`');
+ // }
+
+ if (typeof structuredClone === 'function') {
+ structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
+ } else if (typeof postMessage === 'function') {
+ postMessage('', '/', [arrayBuffer]); // TODO: see if this might trigger listeners
+ } else if (MessageChannel) {
+ (new MessageChannel()).port1.postMessage(null, [arrayBuffer]);
+ } else {
+ throw new $SyntaxError('DetachArrayBuffer is not supported in this environment');
+ }
+ return null;
+};
diff --git a/node_modules/es-abstract/2022/EnumerableOwnPropertyNames.js b/node_modules/es-abstract/2022/EnumerableOwnPropertyNames.js
new file mode 100644
index 000000000..8e3177b6a
--- /dev/null
+++ b/node_modules/es-abstract/2022/EnumerableOwnPropertyNames.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var objectKeys = require('object-keys');
+
+var callBound = require('call-bind/callBound');
+
+var callBind = require('call-bind');
+
+var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
+var $pushApply = callBind.apply(GetIntrinsic('%Array.prototype.push%'));
+
+var forEach = require('../helpers/forEach');
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/8.0/#sec-enumerableownproperties
+
+module.exports = function EnumerableOwnPropertyNames(O, kind) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ var keys = objectKeys(O);
+ if (kind === 'key') {
+ return keys;
+ }
+ if (kind === 'value' || kind === 'key+value') {
+ var results = [];
+ forEach(keys, function (key) {
+ if ($isEnumerable(O, key)) {
+ $pushApply(results, [
+ kind === 'value' ? O[key] : [key, O[key]]
+ ]);
+ }
+ });
+ return results;
+ }
+ throw new $TypeError('Assertion failed: "kind" is not "key", "value", or "key+value": ' + kind);
+};
diff --git a/node_modules/es-abstract/2022/FlattenIntoArray.js b/node_modules/es-abstract/2022/FlattenIntoArray.js
new file mode 100644
index 000000000..6429ee797
--- /dev/null
+++ b/node_modules/es-abstract/2022/FlattenIntoArray.js
@@ -0,0 +1,58 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');
+
+var Call = require('./Call');
+var CreateDataPropertyOrThrow = require('./CreateDataPropertyOrThrow');
+var Get = require('./Get');
+var HasProperty = require('./HasProperty');
+var IsArray = require('./IsArray');
+var LengthOfArrayLike = require('./LengthOfArrayLike');
+var ToString = require('./ToString');
+
+// https://262.ecma-international.org/11.0/#sec-flattenintoarray
+
+// eslint-disable-next-line max-params
+module.exports = function FlattenIntoArray(target, source, sourceLen, start, depth) {
+ var mapperFunction;
+ if (arguments.length > 5) {
+ mapperFunction = arguments[5];
+ }
+
+ var targetIndex = start;
+ var sourceIndex = 0;
+ while (sourceIndex < sourceLen) {
+ var P = ToString(sourceIndex);
+ var exists = HasProperty(source, P);
+ if (exists === true) {
+ var element = Get(source, P);
+ if (typeof mapperFunction !== 'undefined') {
+ if (arguments.length <= 6) {
+ throw new $TypeError('Assertion failed: thisArg is required when mapperFunction is provided');
+ }
+ element = Call(mapperFunction, arguments[6], [element, sourceIndex, source]);
+ }
+ var shouldFlatten = false;
+ if (depth > 0) {
+ shouldFlatten = IsArray(element);
+ }
+ if (shouldFlatten) {
+ var elementLen = LengthOfArrayLike(element);
+ targetIndex = FlattenIntoArray(target, element, elementLen, targetIndex, depth - 1);
+ } else {
+ if (targetIndex >= MAX_SAFE_INTEGER) {
+ throw new $TypeError('index too large');
+ }
+ CreateDataPropertyOrThrow(target, ToString(targetIndex), element);
+ targetIndex += 1;
+ }
+ }
+ sourceIndex += 1;
+ }
+
+ return targetIndex;
+};
diff --git a/node_modules/es-abstract/2022/FromPropertyDescriptor.js b/node_modules/es-abstract/2022/FromPropertyDescriptor.js
new file mode 100644
index 000000000..e142ed582
--- /dev/null
+++ b/node_modules/es-abstract/2022/FromPropertyDescriptor.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var assertRecord = require('../helpers/assertRecord');
+var fromPropertyDescriptor = require('../helpers/fromPropertyDescriptor');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor
+
+module.exports = function FromPropertyDescriptor(Desc) {
+ if (typeof Desc !== 'undefined') {
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
+ }
+
+ return fromPropertyDescriptor(Desc);
+};
diff --git a/node_modules/es-abstract/2022/Get.js b/node_modules/es-abstract/2022/Get.js
new file mode 100644
index 000000000..297968643
--- /dev/null
+++ b/node_modules/es-abstract/2022/Get.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var inspect = require('object-inspect');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p
+
+module.exports = function Get(O, P) {
+ // 7.3.1.1
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ // 7.3.1.2
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));
+ }
+ // 7.3.1.3
+ return O[P];
+};
diff --git a/node_modules/es-abstract/2022/GetGlobalObject.js b/node_modules/es-abstract/2022/GetGlobalObject.js
new file mode 100644
index 000000000..0541ede0c
--- /dev/null
+++ b/node_modules/es-abstract/2022/GetGlobalObject.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var getGlobal = require('globalthis/polyfill');
+
+// https://262.ecma-international.org/6.0/#sec-getglobalobject
+
+module.exports = function GetGlobalObject() {
+ return getGlobal();
+};
diff --git a/node_modules/es-abstract/2022/GetIterator.js b/node_modules/es-abstract/2022/GetIterator.js
new file mode 100644
index 000000000..51439e448
--- /dev/null
+++ b/node_modules/es-abstract/2022/GetIterator.js
@@ -0,0 +1,65 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $asyncIterator = GetIntrinsic('%Symbol.asyncIterator%', true);
+
+var inspect = require('object-inspect');
+var hasSymbols = require('has-symbols')();
+
+var getIteratorMethod = require('../helpers/getIteratorMethod');
+var AdvanceStringIndex = require('./AdvanceStringIndex');
+var Call = require('./Call');
+var GetMethod = require('./GetMethod');
+var IsArray = require('./IsArray');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/9.0/#sec-getiterator
+module.exports = function GetIterator(obj, hint, method) {
+ var actualHint = hint;
+ if (arguments.length < 2) {
+ actualHint = 'sync';
+ }
+ if (actualHint !== 'sync' && actualHint !== 'async') {
+ throw new $TypeError("Assertion failed: `hint` must be one of 'sync' or 'async', got " + inspect(hint));
+ }
+
+ var actualMethod = method;
+ if (arguments.length < 3) {
+ if (actualHint === 'async') {
+ if (hasSymbols && $asyncIterator) {
+ actualMethod = GetMethod(obj, $asyncIterator);
+ }
+ if (actualMethod === undefined) {
+ throw new $SyntaxError("async from sync iterators aren't currently supported");
+ }
+ } else {
+ actualMethod = getIteratorMethod(
+ {
+ AdvanceStringIndex: AdvanceStringIndex,
+ GetMethod: GetMethod,
+ IsArray: IsArray
+ },
+ obj
+ );
+ }
+ }
+ var iterator = Call(actualMethod, obj);
+ if (Type(iterator) !== 'Object') {
+ throw new $TypeError('iterator must return an object');
+ }
+
+ return iterator;
+
+ // TODO: This should return an IteratorRecord
+ /*
+ var nextMethod = GetV(iterator, 'next');
+ return {
+ '[[Iterator]]': iterator,
+ '[[NextMethod]]': nextMethod,
+ '[[Done]]': false
+ };
+ */
+};
diff --git a/node_modules/es-abstract/2022/GetMatchIndexPair.js b/node_modules/es-abstract/2022/GetMatchIndexPair.js
new file mode 100644
index 000000000..14bcb612f
--- /dev/null
+++ b/node_modules/es-abstract/2022/GetMatchIndexPair.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+
+var assertRecord = require('../helpers/assertRecord');
+
+// https://ecma-international.org/ecma-262/13.0/#sec-getmatchindexpair
+
+module.exports = function GetMatchIndexPair(S, match) {
+ if (Type(S) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a String');
+ }
+ assertRecord(Type, 'Match Record', 'match', match);
+
+ if (!(match['[[StartIndex]]'] <= S.length)) {
+ throw new $TypeError('`match` [[StartIndex]] must be a non-negative integer <= the length of S');
+ }
+ if (!(match['[[EndIndex]]'] <= S.length)) {
+ throw new $TypeError('`match` [[EndIndex]] must be an integer between [[StartIndex]] and the length of S, inclusive');
+ }
+ return [match['[[StartIndex]]'], match['[[EndIndex]]']];
+};
diff --git a/node_modules/es-abstract/2022/GetMatchString.js b/node_modules/es-abstract/2022/GetMatchString.js
new file mode 100644
index 000000000..ba49306e7
--- /dev/null
+++ b/node_modules/es-abstract/2022/GetMatchString.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var substring = require('./substring');
+var Type = require('./Type');
+
+var assertRecord = require('../helpers/assertRecord');
+
+// https://ecma-international.org/ecma-262/13.0/#sec-getmatchstring
+
+module.exports = function GetMatchString(S, match) {
+ if (Type(S) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a String');
+ }
+ assertRecord(Type, 'Match Record', 'match', match);
+
+ if (!(match['[[StartIndex]]'] <= S.length)) {
+ throw new $TypeError('`match` [[StartIndex]] must be a non-negative integer <= the length of S');
+ }
+ if (!(match['[[EndIndex]]'] <= S.length)) {
+ throw new $TypeError('`match` [[EndIndex]] must be an integer between [[StartIndex]] and the length of S, inclusive');
+ }
+ return substring(S, match['[[StartIndex]]'], match['[[EndIndex]]']);
+};
diff --git a/node_modules/es-abstract/2022/GetMethod.js b/node_modules/es-abstract/2022/GetMethod.js
new file mode 100644
index 000000000..d3775178e
--- /dev/null
+++ b/node_modules/es-abstract/2022/GetMethod.js
@@ -0,0 +1,36 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var GetV = require('./GetV');
+var IsCallable = require('./IsCallable');
+var IsPropertyKey = require('./IsPropertyKey');
+
+var debug = require('object-inspect');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getmethod
+
+module.exports = function GetMethod(O, P) {
+ // 7.3.9.1
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+
+ // 7.3.9.2
+ var func = GetV(O, P);
+
+ // 7.3.9.4
+ if (func == null) {
+ return void 0;
+ }
+
+ // 7.3.9.5
+ if (!IsCallable(func)) {
+ throw new $TypeError(P + ' is not a function: ' + debug(func));
+ }
+
+ // 7.3.9.6
+ return func;
+};
diff --git a/node_modules/es-abstract/2022/GetOwnPropertyKeys.js b/node_modules/es-abstract/2022/GetOwnPropertyKeys.js
new file mode 100644
index 000000000..40c0b367f
--- /dev/null
+++ b/node_modules/es-abstract/2022/GetOwnPropertyKeys.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var hasSymbols = require('has-symbols')();
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
+var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%', true);
+var keys = require('object-keys');
+
+var esType = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys
+
+module.exports = function GetOwnPropertyKeys(O, Type) {
+ if (esType(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (Type === 'Symbol') {
+ return $gOPS ? $gOPS(O) : [];
+ }
+ if (Type === 'String') {
+ if (!$gOPN) {
+ return keys(O);
+ }
+ return $gOPN(O);
+ }
+ throw new $TypeError('Assertion failed: `Type` must be `"String"` or `"Symbol"`');
+};
diff --git a/node_modules/es-abstract/2022/GetPromiseResolve.js b/node_modules/es-abstract/2022/GetPromiseResolve.js
new file mode 100644
index 000000000..6efc10288
--- /dev/null
+++ b/node_modules/es-abstract/2022/GetPromiseResolve.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var IsConstructor = require('./IsConstructor');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-getpromiseresolve
+
+module.exports = function GetPromiseResolve(promiseConstructor) {
+ if (!IsConstructor(promiseConstructor)) {
+ throw new $TypeError('Assertion failed: `promiseConstructor` must be a constructor');
+ }
+ var promiseResolve = Get(promiseConstructor, 'resolve');
+ if (IsCallable(promiseResolve) === false) {
+ throw new $TypeError('`resolve` method is not callable');
+ }
+ return promiseResolve;
+};
diff --git a/node_modules/es-abstract/2022/GetPrototypeFromConstructor.js b/node_modules/es-abstract/2022/GetPrototypeFromConstructor.js
new file mode 100644
index 000000000..25ee12f35
--- /dev/null
+++ b/node_modules/es-abstract/2022/GetPrototypeFromConstructor.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Function = GetIntrinsic('%Function%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var Get = require('./Get');
+var IsConstructor = require('./IsConstructor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getprototypefromconstructor
+
+module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) {
+ var intrinsic = GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic
+ if (!IsConstructor(constructor)) {
+ throw new $TypeError('Assertion failed: `constructor` must be a constructor');
+ }
+ var proto = Get(constructor, 'prototype');
+ if (Type(proto) !== 'Object') {
+ if (!(constructor instanceof $Function)) {
+ // ignore other realms, for now
+ throw new $SyntaxError('cross-realm constructors not currently supported');
+ }
+ proto = intrinsic;
+ }
+ return proto;
+};
diff --git a/node_modules/es-abstract/2022/GetStringIndex.js b/node_modules/es-abstract/2022/GetStringIndex.js
new file mode 100644
index 000000000..e596d438a
--- /dev/null
+++ b/node_modules/es-abstract/2022/GetStringIndex.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+var StringToCodePoints = require('./StringToCodePoints');
+var Type = require('./Type');
+
+var $indexOf = callBound('String.prototype.indexOf');
+
+// https://ecma-international.org/ecma-262/13.0/#sec-getstringindex
+
+module.exports = function GetStringIndex(S, e) {
+ if (Type(S) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a String');
+ }
+ if (!IsIntegralNumber(e) || e < 0) {
+ throw new $TypeError('Assertion failed: `e` must be a non-negative integer');
+ }
+
+ if (S === '') {
+ return 0;
+ }
+ var codepoints = StringToCodePoints(S);
+ var eUTF = e >= codepoints.length ? S.length : $indexOf(S, codepoints[e]);
+ return eUTF;
+};
diff --git a/node_modules/es-abstract/2022/GetSubstitution.js b/node_modules/es-abstract/2022/GetSubstitution.js
new file mode 100644
index 000000000..6ac3ec7f3
--- /dev/null
+++ b/node_modules/es-abstract/2022/GetSubstitution.js
@@ -0,0 +1,128 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var regexTester = require('safe-regex-test');
+var every = require('../helpers/every');
+
+var $charAt = callBound('String.prototype.charAt');
+var $strSlice = callBound('String.prototype.slice');
+var $indexOf = callBound('String.prototype.indexOf');
+var $parseInt = parseInt;
+
+var isDigit = regexTester(/^[0-9]$/);
+
+var inspect = require('object-inspect');
+
+var Get = require('./Get');
+var IsArray = require('./IsArray');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var ToObject = require('./ToObject');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+var canDistinguishSparseFromUndefined = 0 in [undefined]; // IE 6 - 8 have a bug where this returns false
+
+var isStringOrHole = function (capture, index, arr) {
+ return Type(capture) === 'String' || (canDistinguishSparseFromUndefined ? !(index in arr) : Type(capture) === 'Undefined');
+};
+
+// http://www.ecma-international.org/ecma-262/12.0/#sec-getsubstitution
+
+// eslint-disable-next-line max-statements, max-params, max-lines-per-function
+module.exports = function GetSubstitution(matched, str, position, captures, namedCaptures, replacement) {
+ if (Type(matched) !== 'String') {
+ throw new $TypeError('Assertion failed: `matched` must be a String');
+ }
+ var matchLength = matched.length;
+
+ if (Type(str) !== 'String') {
+ throw new $TypeError('Assertion failed: `str` must be a String');
+ }
+ var stringLength = str.length;
+
+ if (!IsIntegralNumber(position) || position < 0 || position > stringLength) {
+ throw new $TypeError('Assertion failed: `position` must be a nonnegative integer, and less than or equal to the length of `string`, got ' + inspect(position));
+ }
+
+ if (!IsArray(captures) || !every(captures, isStringOrHole)) {
+ throw new $TypeError('Assertion failed: `captures` must be a possibly-empty List of Strings, got ' + inspect(captures));
+ }
+
+ if (Type(replacement) !== 'String') {
+ throw new $TypeError('Assertion failed: `replacement` must be a String');
+ }
+
+ var tailPos = position + matchLength;
+ var m = captures.length;
+ if (Type(namedCaptures) !== 'Undefined') {
+ namedCaptures = ToObject(namedCaptures); // eslint-disable-line no-param-reassign
+ }
+
+ var result = '';
+ for (var i = 0; i < replacement.length; i += 1) {
+ // if this is a $, and it's not the end of the replacement
+ var current = $charAt(replacement, i);
+ var isLast = (i + 1) >= replacement.length;
+ var nextIsLast = (i + 2) >= replacement.length;
+ if (current === '$' && !isLast) {
+ var next = $charAt(replacement, i + 1);
+ if (next === '$') {
+ result += '$';
+ i += 1;
+ } else if (next === '&') {
+ result += matched;
+ i += 1;
+ } else if (next === '`') {
+ result += position === 0 ? '' : $strSlice(str, 0, position - 1);
+ i += 1;
+ } else if (next === "'") {
+ result += tailPos >= stringLength ? '' : $strSlice(str, tailPos);
+ i += 1;
+ } else {
+ var nextNext = nextIsLast ? null : $charAt(replacement, i + 2);
+ if (isDigit(next) && next !== '0' && (nextIsLast || !isDigit(nextNext))) {
+ // $1 through $9, and not followed by a digit
+ var n = $parseInt(next, 10);
+ // if (n > m, impl-defined)
+ result += n <= m && Type(captures[n - 1]) === 'Undefined' ? '' : captures[n - 1];
+ i += 1;
+ } else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) {
+ // $00 through $99
+ var nn = next + nextNext;
+ var nnI = $parseInt(nn, 10) - 1;
+ // if nn === '00' or nn > m, impl-defined
+ result += nn <= m && Type(captures[nnI]) === 'Undefined' ? '' : captures[nnI];
+ i += 2;
+ } else if (next === '<') {
+ // eslint-disable-next-line max-depth
+ if (Type(namedCaptures) === 'Undefined') {
+ result += '$<';
+ i += 2;
+ } else {
+ var endIndex = $indexOf(replacement, '>', i);
+ // eslint-disable-next-line max-depth
+ if (endIndex > -1) {
+ var groupName = $strSlice(replacement, i + '$<'.length, endIndex);
+ var capture = Get(namedCaptures, groupName);
+ // eslint-disable-next-line max-depth
+ if (Type(capture) !== 'Undefined') {
+ result += ToString(capture);
+ }
+ i += ('<' + groupName + '>').length;
+ }
+ }
+ } else {
+ result += '$';
+ }
+ }
+ } else {
+ // the final $, or else not a $
+ result += $charAt(replacement, i);
+ }
+ }
+ return result;
+};
diff --git a/node_modules/es-abstract/2022/GetV.js b/node_modules/es-abstract/2022/GetV.js
new file mode 100644
index 000000000..2dcddb351
--- /dev/null
+++ b/node_modules/es-abstract/2022/GetV.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var ToObject = require('./ToObject');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-getv
+
+module.exports = function GetV(V, P) {
+ // 7.3.2.1
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+
+ // 7.3.2.2-3
+ var O = ToObject(V);
+
+ // 7.3.2.4
+ return O[P];
+};
diff --git a/node_modules/es-abstract/2022/HasOwnProperty.js b/node_modules/es-abstract/2022/HasOwnProperty.js
new file mode 100644
index 000000000..04d28495f
--- /dev/null
+++ b/node_modules/es-abstract/2022/HasOwnProperty.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var has = require('has');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-hasownproperty
+
+module.exports = function HasOwnProperty(O, P) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: `O` must be an Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: `P` must be a Property Key');
+ }
+ return has(O, P);
+};
diff --git a/node_modules/es-abstract/2022/HasProperty.js b/node_modules/es-abstract/2022/HasProperty.js
new file mode 100644
index 000000000..b341654e7
--- /dev/null
+++ b/node_modules/es-abstract/2022/HasProperty.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty
+
+module.exports = function HasProperty(O, P) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: `O` must be an Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: `P` must be a Property Key');
+ }
+ return P in O;
+};
diff --git a/node_modules/es-abstract/2022/HourFromTime.js b/node_modules/es-abstract/2022/HourFromTime.js
new file mode 100644
index 000000000..f963bfb68
--- /dev/null
+++ b/node_modules/es-abstract/2022/HourFromTime.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var floor = require('./floor');
+var modulo = require('./modulo');
+
+var timeConstants = require('../helpers/timeConstants');
+var msPerHour = timeConstants.msPerHour;
+var HoursPerDay = timeConstants.HoursPerDay;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.10
+
+module.exports = function HourFromTime(t) {
+ return modulo(floor(t / msPerHour), HoursPerDay);
+};
diff --git a/node_modules/es-abstract/2022/InLeapYear.js b/node_modules/es-abstract/2022/InLeapYear.js
new file mode 100644
index 000000000..bfe0c451f
--- /dev/null
+++ b/node_modules/es-abstract/2022/InLeapYear.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $EvalError = GetIntrinsic('%EvalError%');
+
+var DaysInYear = require('./DaysInYear');
+var YearFromTime = require('./YearFromTime');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.3
+
+module.exports = function InLeapYear(t) {
+ var days = DaysInYear(YearFromTime(t));
+ if (days === 365) {
+ return 0;
+ }
+ if (days === 366) {
+ return 1;
+ }
+ throw new $EvalError('Assertion failed: there are not 365 or 366 days in a year, got: ' + days);
+};
diff --git a/node_modules/es-abstract/2022/InstallErrorCause.js b/node_modules/es-abstract/2022/InstallErrorCause.js
new file mode 100644
index 000000000..949ecc77e
--- /dev/null
+++ b/node_modules/es-abstract/2022/InstallErrorCause.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var CreateNonEnumerableDataPropertyOrThrow = require('./CreateNonEnumerableDataPropertyOrThrow');
+var Get = require('./Get');
+var HasProperty = require('./HasProperty');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/13.0/#sec-installerrorcause
+
+module.exports = function InstallErrorCause(O, options) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ if (Type(options) === 'Object' && HasProperty(options, 'cause')) {
+ var cause = Get(options, 'cause');
+ CreateNonEnumerableDataPropertyOrThrow(O, 'cause', cause);
+ }
+};
diff --git a/node_modules/es-abstract/2022/InstanceofOperator.js b/node_modules/es-abstract/2022/InstanceofOperator.js
new file mode 100644
index 000000000..a3c4d2375
--- /dev/null
+++ b/node_modules/es-abstract/2022/InstanceofOperator.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $hasInstance = GetIntrinsic('Symbol.hasInstance', true);
+
+var Call = require('./Call');
+var GetMethod = require('./GetMethod');
+var IsCallable = require('./IsCallable');
+var OrdinaryHasInstance = require('./OrdinaryHasInstance');
+var ToBoolean = require('./ToBoolean');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-instanceofoperator
+
+module.exports = function InstanceofOperator(O, C) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ var instOfHandler = $hasInstance ? GetMethod(C, $hasInstance) : void 0;
+ if (typeof instOfHandler !== 'undefined') {
+ return ToBoolean(Call(instOfHandler, C, [O]));
+ }
+ if (!IsCallable(C)) {
+ throw new $TypeError('`C` is not Callable');
+ }
+ return OrdinaryHasInstance(C, O);
+};
diff --git a/node_modules/es-abstract/2022/Invoke.js b/node_modules/es-abstract/2022/Invoke.js
new file mode 100644
index 000000000..d4214ee51
--- /dev/null
+++ b/node_modules/es-abstract/2022/Invoke.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var IsArray = require('./IsArray');
+var GetV = require('./GetV');
+var IsPropertyKey = require('./IsPropertyKey');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-invoke
+
+module.exports = function Invoke(O, P) {
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: P must be a Property Key');
+ }
+ var argumentsList = arguments.length > 2 ? arguments[2] : [];
+ if (!IsArray(argumentsList)) {
+ throw new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');
+ }
+ var func = GetV(O, P);
+ return Call(func, O, argumentsList);
+};
diff --git a/node_modules/es-abstract/2022/IsAccessorDescriptor.js b/node_modules/es-abstract/2022/IsAccessorDescriptor.js
new file mode 100644
index 000000000..78563e7ec
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsAccessorDescriptor.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var has = require('has');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor
+
+module.exports = function IsAccessorDescriptor(Desc) {
+ if (typeof Desc === 'undefined') {
+ return false;
+ }
+
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
+
+ if (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) {
+ return false;
+ }
+
+ return true;
+};
diff --git a/node_modules/es-abstract/2022/IsArray.js b/node_modules/es-abstract/2022/IsArray.js
new file mode 100644
index 000000000..600ffa002
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsArray.js
@@ -0,0 +1,4 @@
+'use strict';
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isarray
+module.exports = require('../helpers/IsArray');
diff --git a/node_modules/es-abstract/2022/IsBigIntElementType.js b/node_modules/es-abstract/2022/IsBigIntElementType.js
new file mode 100644
index 000000000..e3f58a949
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsBigIntElementType.js
@@ -0,0 +1,7 @@
+'use strict';
+
+// https://262.ecma-international.org/11.0/#sec-isbigintelementtype
+
+module.exports = function IsBigIntElementType(type) {
+ return type === 'BigUint64' || type === 'BigInt64';
+};
diff --git a/node_modules/es-abstract/2022/IsCallable.js b/node_modules/es-abstract/2022/IsCallable.js
new file mode 100644
index 000000000..3a69b1926
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsCallable.js
@@ -0,0 +1,5 @@
+'use strict';
+
+// http://262.ecma-international.org/5.1/#sec-9.11
+
+module.exports = require('is-callable');
diff --git a/node_modules/es-abstract/2022/IsCompatiblePropertyDescriptor.js b/node_modules/es-abstract/2022/IsCompatiblePropertyDescriptor.js
new file mode 100644
index 000000000..48e719f3c
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsCompatiblePropertyDescriptor.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
+
+// https://262.ecma-international.org/13.0/#sec-iscompatiblepropertydescriptor
+
+module.exports = function IsCompatiblePropertyDescriptor(Extensible, Desc, Current) {
+ return ValidateAndApplyPropertyDescriptor(undefined, '', Extensible, Desc, Current);
+};
diff --git a/node_modules/es-abstract/2022/IsConcatSpreadable.js b/node_modules/es-abstract/2022/IsConcatSpreadable.js
new file mode 100644
index 000000000..141b33414
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsConcatSpreadable.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true);
+
+var Get = require('./Get');
+var IsArray = require('./IsArray');
+var ToBoolean = require('./ToBoolean');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable
+
+module.exports = function IsConcatSpreadable(O) {
+ if (Type(O) !== 'Object') {
+ return false;
+ }
+ if ($isConcatSpreadable) {
+ var spreadable = Get(O, $isConcatSpreadable);
+ if (typeof spreadable !== 'undefined') {
+ return ToBoolean(spreadable);
+ }
+ }
+ return IsArray(O);
+};
diff --git a/node_modules/es-abstract/2022/IsConstructor.js b/node_modules/es-abstract/2022/IsConstructor.js
new file mode 100644
index 000000000..fe626e183
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsConstructor.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var GetIntrinsic = require('../GetIntrinsic.js');
+
+var $construct = GetIntrinsic('%Reflect.construct%', true);
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+try {
+ DefinePropertyOrThrow({}, '', { '[[Get]]': function () {} });
+} catch (e) {
+ // Accessor properties aren't supported
+ DefinePropertyOrThrow = null;
+}
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isconstructor
+
+if (DefinePropertyOrThrow && $construct) {
+ var isConstructorMarker = {};
+ var badArrayLike = {};
+ DefinePropertyOrThrow(badArrayLike, 'length', {
+ '[[Get]]': function () {
+ throw isConstructorMarker;
+ },
+ '[[Enumerable]]': true
+ });
+
+ module.exports = function IsConstructor(argument) {
+ try {
+ // `Reflect.construct` invokes `IsConstructor(target)` before `Get(args, 'length')`:
+ $construct(argument, badArrayLike);
+ } catch (err) {
+ return err === isConstructorMarker;
+ }
+ };
+} else {
+ module.exports = function IsConstructor(argument) {
+ // unfortunately there's no way to truly check this without try/catch `new argument` in old environments
+ return typeof argument === 'function' && !!argument.prototype;
+ };
+}
diff --git a/node_modules/es-abstract/2022/IsDataDescriptor.js b/node_modules/es-abstract/2022/IsDataDescriptor.js
new file mode 100644
index 000000000..00d14a60e
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsDataDescriptor.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var has = require('has');
+
+var assertRecord = require('../helpers/assertRecord');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor
+
+module.exports = function IsDataDescriptor(Desc) {
+ if (typeof Desc === 'undefined') {
+ return false;
+ }
+
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
+
+ if (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) {
+ return false;
+ }
+
+ return true;
+};
diff --git a/node_modules/es-abstract/2022/IsDetachedBuffer.js b/node_modules/es-abstract/2022/IsDetachedBuffer.js
new file mode 100644
index 000000000..4b373e9ab
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsDetachedBuffer.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $byteLength = callBound('%ArrayBuffer.prototype.byteLength%', true)
+ || function byteLength(ab) { return ab.byteLength; }; // in node < 0.11, byteLength is an own nonconfigurable property
+
+var isArrayBuffer = require('is-array-buffer');
+
+var availableTypedArrays = require('available-typed-arrays')();
+
+// https://262.ecma-international.org/6.0/#sec-isdetachedbuffer
+
+module.exports = function IsDetachedBuffer(arrayBuffer) {
+ if (!isArrayBuffer(arrayBuffer)) {
+ throw new $TypeError('Assertion failed: `arrayBuffer` must be an Object with an [[ArrayBufferData]] internal slot');
+ }
+ if ($byteLength(arrayBuffer) === 0) {
+ try {
+ new global[availableTypedArrays[0]](arrayBuffer); // eslint-disable-line no-new
+ } catch (error) {
+ return error.name === 'TypeError';
+ }
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2022/IsExtensible.js b/node_modules/es-abstract/2022/IsExtensible.js
new file mode 100644
index 000000000..d6e363840
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsExtensible.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $isExtensible = GetIntrinsic('%Object.isExtensible%', true);
+
+var isPrimitive = require('../helpers/isPrimitive');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o
+
+module.exports = $preventExtensions
+ ? function IsExtensible(obj) {
+ return !isPrimitive(obj) && $isExtensible(obj);
+ }
+ : function IsExtensible(obj) {
+ return !isPrimitive(obj);
+ };
diff --git a/node_modules/es-abstract/2022/IsGenericDescriptor.js b/node_modules/es-abstract/2022/IsGenericDescriptor.js
new file mode 100644
index 000000000..95b1d353c
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsGenericDescriptor.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var assertRecord = require('../helpers/assertRecord');
+
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor
+
+module.exports = function IsGenericDescriptor(Desc) {
+ if (typeof Desc === 'undefined') {
+ return false;
+ }
+
+ assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
+
+ if (!IsAccessorDescriptor(Desc) && !IsDataDescriptor(Desc)) {
+ return true;
+ }
+
+ return false;
+};
diff --git a/node_modules/es-abstract/2022/IsIntegralNumber.js b/node_modules/es-abstract/2022/IsIntegralNumber.js
new file mode 100644
index 000000000..0a02bfe0f
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsIntegralNumber.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var abs = require('./abs');
+var floor = require('./floor');
+var Type = require('./Type');
+
+var $isNaN = require('../helpers/isNaN');
+var $isFinite = require('../helpers/isFinite');
+
+// https://tc39.es/ecma262/#sec-isintegralnumber
+
+module.exports = function IsIntegralNumber(argument) {
+ if (Type(argument) !== 'Number' || $isNaN(argument) || !$isFinite(argument)) {
+ return false;
+ }
+ var absValue = abs(argument);
+ return floor(absValue) === absValue;
+};
diff --git a/node_modules/es-abstract/2022/IsLessThan.js b/node_modules/es-abstract/2022/IsLessThan.js
new file mode 100644
index 000000000..326b5a08c
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsLessThan.js
@@ -0,0 +1,90 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Number = GetIntrinsic('%Number%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $isNaN = require('../helpers/isNaN');
+
+var IsStringPrefix = require('./IsStringPrefix');
+var StringToBigInt = require('./StringToBigInt');
+var ToNumeric = require('./ToNumeric');
+var ToPrimitive = require('./ToPrimitive');
+var Type = require('./Type');
+
+var BigIntLessThan = require('./BigInt/lessThan');
+var NumberLessThan = require('./Number/lessThan');
+
+// https://262.ecma-international.org/13.0/#sec-islessthan
+
+// eslint-disable-next-line max-statements, max-lines-per-function
+module.exports = function IsLessThan(x, y, LeftFirst) {
+ if (Type(LeftFirst) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean');
+ }
+ var px;
+ var py;
+ if (LeftFirst) {
+ px = ToPrimitive(x, $Number);
+ py = ToPrimitive(y, $Number);
+ } else {
+ py = ToPrimitive(y, $Number);
+ px = ToPrimitive(x, $Number);
+ }
+ var pxType = Type(px);
+ var pyType = Type(py);
+ if (pxType === 'String' && pyType === 'String') {
+ if (IsStringPrefix(py, px)) {
+ return false;
+ }
+ if (IsStringPrefix(px, py)) {
+ return true;
+ }
+ /*
+ c. Let k be the smallest non-negative integer such that the code unit at index k within px is different from the code unit at index k within py. (There must be such a k, for neither String is a prefix of the other.)
+ d. Let m be the integer that is the numeric value of the code unit at index k within px.
+ e. Let n be the integer that is the numeric value of the code unit at index k within py.
+ f. If m < n, return true. Otherwise, return false.
+ */
+ return px < py; // both strings, neither a prefix of the other. shortcut for steps 3 c-f
+ }
+
+ var nx;
+ var ny;
+ if (pxType === 'BigInt' && pyType === 'String') {
+ ny = StringToBigInt(py);
+ if (typeof ny === 'undefined') {
+ return void undefined;
+ }
+ return BigIntLessThan(px, ny);
+ }
+ if (pxType === 'String' && pyType === 'BigInt') {
+ nx = StringToBigInt(px);
+ if (typeof nx === 'undefined') {
+ return void undefined;
+ }
+ return BigIntLessThan(nx, py);
+ }
+
+ nx = ToNumeric(px);
+ ny = ToNumeric(py);
+
+ var nxType = Type(nx);
+ if (nxType === Type(ny)) {
+ return nxType === 'Number' ? NumberLessThan(nx, ny) : BigIntLessThan(nx, ny);
+ }
+
+ if ($isNaN(nx) || $isNaN(ny)) {
+ return void undefined;
+ }
+
+ if (nx === -Infinity || ny === Infinity) {
+ return true;
+ }
+ if (nx === Infinity || ny === -Infinity) {
+ return false;
+ }
+
+ return nx < ny; // by now, these are both nonzero, finite, and not equal
+};
diff --git a/node_modules/es-abstract/2022/IsLooselyEqual.js b/node_modules/es-abstract/2022/IsLooselyEqual.js
new file mode 100644
index 000000000..9d254ba68
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsLooselyEqual.js
@@ -0,0 +1,58 @@
+'use strict';
+
+var isFinite = require('../helpers/isFinite');
+
+var IsStrictlyEqual = require('./IsStrictlyEqual');
+var StringToBigInt = require('./StringToBigInt');
+var ToNumber = require('./ToNumber');
+var ToPrimitive = require('./ToPrimitive');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/13.0/#sec-islooselyequal
+
+module.exports = function IsLooselyEqual(x, y) {
+ var xType = Type(x);
+ var yType = Type(y);
+ if (xType === yType) {
+ return IsStrictlyEqual(x, y);
+ }
+ if (x == null && y == null) {
+ return true;
+ }
+ if (xType === 'Number' && yType === 'String') {
+ return IsLooselyEqual(x, ToNumber(y));
+ }
+ if (xType === 'String' && yType === 'Number') {
+ return IsLooselyEqual(ToNumber(x), y);
+ }
+ if (xType === 'BigInt' && yType === 'String') {
+ var n = StringToBigInt(y);
+ if (typeof n === 'undefined') {
+ return false;
+ }
+ return IsLooselyEqual(x, n);
+ }
+ if (xType === 'String' && yType === 'BigInt') {
+ return IsLooselyEqual(y, x);
+ }
+ if (xType === 'Boolean') {
+ return IsLooselyEqual(ToNumber(x), y);
+ }
+ if (yType === 'Boolean') {
+ return IsLooselyEqual(x, ToNumber(y));
+ }
+ if ((xType === 'String' || xType === 'Number' || xType === 'Symbol' || xType === 'BigInt') && yType === 'Object') {
+ return IsLooselyEqual(x, ToPrimitive(y));
+ }
+ if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'Symbol' || yType === 'BigInt')) {
+ return IsLooselyEqual(ToPrimitive(x), y);
+ }
+ if ((xType === 'BigInt' && yType === 'Number') || (xType === 'Number' && yType === 'BigInt')) {
+ if (!isFinite(x) || !isFinite(y)) {
+ return false;
+ }
+ // eslint-disable-next-line eqeqeq
+ return x == y; // shortcut for step 13.b.
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2022/IsNoTearConfiguration.js b/node_modules/es-abstract/2022/IsNoTearConfiguration.js
new file mode 100644
index 000000000..f0d280873
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsNoTearConfiguration.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var IsUnclampedIntegerElementType = require('./IsUnclampedIntegerElementType');
+var IsBigIntElementType = require('./IsBigIntElementType');
+
+// https://262.ecma-international.org/11.0/#sec-isnotearconfiguration
+
+module.exports = function IsNoTearConfiguration(type, order) {
+ if (IsUnclampedIntegerElementType(type)) {
+ return true;
+ }
+ if (IsBigIntElementType(type) && order !== 'Init' && order !== 'Unordered') {
+ return true;
+ }
+ return false;
+};
diff --git a/node_modules/es-abstract/2022/IsPromise.js b/node_modules/es-abstract/2022/IsPromise.js
new file mode 100644
index 000000000..a551ae0c8
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsPromise.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var $PromiseThen = callBound('Promise.prototype.then', true);
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ispromise
+
+module.exports = function IsPromise(x) {
+ if (Type(x) !== 'Object') {
+ return false;
+ }
+ if (!$PromiseThen) { // Promises are not supported
+ return false;
+ }
+ try {
+ $PromiseThen(x); // throws if not a promise
+ } catch (e) {
+ return false;
+ }
+ return true;
+};
diff --git a/node_modules/es-abstract/2022/IsPropertyKey.js b/node_modules/es-abstract/2022/IsPropertyKey.js
new file mode 100644
index 000000000..f43ab581c
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsPropertyKey.js
@@ -0,0 +1,7 @@
+'use strict';
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey
+
+module.exports = function IsPropertyKey(argument) {
+ return typeof argument === 'string' || typeof argument === 'symbol';
+};
diff --git a/node_modules/es-abstract/2022/IsRegExp.js b/node_modules/es-abstract/2022/IsRegExp.js
new file mode 100644
index 000000000..e1054813f
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsRegExp.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $match = GetIntrinsic('%Symbol.match%', true);
+
+var hasRegExpMatcher = require('is-regex');
+
+var ToBoolean = require('./ToBoolean');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-isregexp
+
+module.exports = function IsRegExp(argument) {
+ if (!argument || typeof argument !== 'object') {
+ return false;
+ }
+ if ($match) {
+ var isRegExp = argument[$match];
+ if (typeof isRegExp !== 'undefined') {
+ return ToBoolean(isRegExp);
+ }
+ }
+ return hasRegExpMatcher(argument);
+};
diff --git a/node_modules/es-abstract/2022/IsSharedArrayBuffer.js b/node_modules/es-abstract/2022/IsSharedArrayBuffer.js
new file mode 100644
index 000000000..8e96e33f3
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsSharedArrayBuffer.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+
+var isSharedArrayBuffer = require('is-shared-array-buffer');
+
+// https://262.ecma-international.org/8.0/#sec-issharedarraybuffer
+
+module.exports = function IsSharedArrayBuffer(obj) {
+ if (Type(obj) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+
+ return isSharedArrayBuffer(obj);
+};
diff --git a/node_modules/es-abstract/2022/IsStrictlyEqual.js b/node_modules/es-abstract/2022/IsStrictlyEqual.js
new file mode 100644
index 000000000..6f5e86a2f
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsStrictlyEqual.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var SameValueNonNumeric = require('./SameValueNonNumeric');
+var Type = require('./Type');
+var BigIntEqual = require('./BigInt/equal');
+var NumberEqual = require('./Number/equal');
+
+// https://262.ecma-international.org/13.0/#sec-isstrictlyequal
+
+module.exports = function IsStrictlyEqual(x, y) {
+ var xType = Type(x);
+ var yType = Type(y);
+ if (xType !== yType) {
+ return false;
+ }
+ if (xType === 'Number' || xType === 'BigInt') {
+ return xType === 'Number' ? NumberEqual(x, y) : BigIntEqual(x, y);
+ }
+ return SameValueNonNumeric(x, y);
+};
diff --git a/node_modules/es-abstract/2022/IsStringPrefix.js b/node_modules/es-abstract/2022/IsStringPrefix.js
new file mode 100644
index 000000000..bb99c944e
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsStringPrefix.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var StringIndexOf = require('./StringIndexOf');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/13.0/#sec-isstringprefix
+
+module.exports = function IsStringPrefix(p, q) {
+ if (Type(p) !== 'String') {
+ throw new $TypeError('Assertion failed: "p" must be a String');
+ }
+
+ if (Type(q) !== 'String') {
+ throw new $TypeError('Assertion failed: "q" must be a String');
+ }
+
+ return StringIndexOf(q, p, 0) === 0;
+};
diff --git a/node_modules/es-abstract/2022/IsStringWellFormedUnicode.js b/node_modules/es-abstract/2022/IsStringWellFormedUnicode.js
new file mode 100644
index 000000000..72213f659
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsStringWellFormedUnicode.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var CodePointAt = require('./CodePointAt');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/13.0/#sec-isstringwellformedunicode
+
+module.exports = function IsStringWellFormedUnicode(string) {
+ if (Type(string) !== 'String') {
+ throw new $TypeError('Assertion failed: `string` must be a String');
+ }
+ var strLen = string.length; // step 1
+ var k = 0; // step 2
+ while (k !== strLen) { // step 3
+ var cp = CodePointAt(string, k); // step 3.a
+ if (cp['[[IsUnpairedSurrogate]]']) {
+ return false; // step 3.b
+ }
+ k += cp['[[CodeUnitCount]]']; // step 3.c
+ }
+ return true; // step 4
+};
diff --git a/node_modules/es-abstract/2022/IsUnclampedIntegerElementType.js b/node_modules/es-abstract/2022/IsUnclampedIntegerElementType.js
new file mode 100644
index 000000000..4e3a38425
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsUnclampedIntegerElementType.js
@@ -0,0 +1,12 @@
+'use strict';
+
+// https://262.ecma-international.org/11.0/#sec-isunclampedintegerelementtype
+
+module.exports = function IsUnclampedIntegerElementType(type) {
+ return type === 'Int8'
+ || type === 'Uint8'
+ || type === 'Int16'
+ || type === 'Uint16'
+ || type === 'Int32'
+ || type === 'Uint32';
+};
diff --git a/node_modules/es-abstract/2022/IsUnsignedElementType.js b/node_modules/es-abstract/2022/IsUnsignedElementType.js
new file mode 100644
index 000000000..b1ff194d7
--- /dev/null
+++ b/node_modules/es-abstract/2022/IsUnsignedElementType.js
@@ -0,0 +1,11 @@
+'use strict';
+
+// https://262.ecma-international.org/11.0/#sec-isunsignedelementtype
+
+module.exports = function IsUnsignedElementType(type) {
+ return type === 'Uint8'
+ || type === 'Uint8C'
+ || type === 'Uint16'
+ || type === 'Uint32'
+ || type === 'BigUint64';
+};
diff --git a/node_modules/es-abstract/2022/IterableToList.js b/node_modules/es-abstract/2022/IterableToList.js
new file mode 100644
index 000000000..320ab4712
--- /dev/null
+++ b/node_modules/es-abstract/2022/IterableToList.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+var $arrayPush = callBound('Array.prototype.push');
+
+var GetIterator = require('./GetIterator');
+var IteratorStep = require('./IteratorStep');
+var IteratorValue = require('./IteratorValue');
+
+// https://262.ecma-international.org/12.0/#sec-iterabletolist
+
+module.exports = function IterableToList(items) {
+ var iterator;
+ if (arguments.length > 1) {
+ iterator = GetIterator(items, 'sync', arguments[1]);
+ } else {
+ iterator = GetIterator(items, 'sync');
+ }
+ var values = [];
+ var next = true;
+ while (next) {
+ next = IteratorStep(iterator);
+ if (next) {
+ var nextValue = IteratorValue(next);
+ $arrayPush(values, nextValue);
+ }
+ }
+ return values;
+};
diff --git a/node_modules/es-abstract/2022/IteratorClose.js b/node_modules/es-abstract/2022/IteratorClose.js
new file mode 100644
index 000000000..f703ea632
--- /dev/null
+++ b/node_modules/es-abstract/2022/IteratorClose.js
@@ -0,0 +1,51 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var CompletionRecord = require('./CompletionRecord');
+var GetMethod = require('./GetMethod');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose
+
+module.exports = function IteratorClose(iterator, completion) {
+ if (Type(iterator) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(iterator) is not Object');
+ }
+ if (!IsCallable(completion) && !(completion instanceof CompletionRecord)) {
+ throw new $TypeError('Assertion failed: completion is not a thunk representing a Completion Record, nor a Completion Record instance');
+ }
+ var completionThunk = completion instanceof CompletionRecord ? function () { return completion['?'](); } : completion;
+
+ var iteratorReturn = GetMethod(iterator, 'return');
+
+ if (typeof iteratorReturn === 'undefined') {
+ return completionThunk();
+ }
+
+ var completionRecord;
+ try {
+ var innerResult = Call(iteratorReturn, iterator, []);
+ } catch (e) {
+ // if we hit here, then "e" is the innerResult completion that needs re-throwing
+
+ // if the completion is of type "throw", this will throw.
+ completionThunk();
+ completionThunk = null; // ensure it's not called twice.
+
+ // if not, then return the innerResult completion
+ throw e;
+ }
+ completionRecord = completionThunk(); // if innerResult worked, then throw if the completion does
+ completionThunk = null; // ensure it's not called twice.
+
+ if (Type(innerResult) !== 'Object') {
+ throw new $TypeError('iterator .return must return an object');
+ }
+
+ return completionRecord;
+};
diff --git a/node_modules/es-abstract/2022/IteratorComplete.js b/node_modules/es-abstract/2022/IteratorComplete.js
new file mode 100644
index 000000000..ed4efa37d
--- /dev/null
+++ b/node_modules/es-abstract/2022/IteratorComplete.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Get = require('./Get');
+var ToBoolean = require('./ToBoolean');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete
+
+module.exports = function IteratorComplete(iterResult) {
+ if (Type(iterResult) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(iterResult) is not Object');
+ }
+ return ToBoolean(Get(iterResult, 'done'));
+};
diff --git a/node_modules/es-abstract/2022/IteratorNext.js b/node_modules/es-abstract/2022/IteratorNext.js
new file mode 100644
index 000000000..cf80655b9
--- /dev/null
+++ b/node_modules/es-abstract/2022/IteratorNext.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Invoke = require('./Invoke');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-iteratornext
+
+module.exports = function IteratorNext(iterator, value) {
+ var result = Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]);
+ if (Type(result) !== 'Object') {
+ throw new $TypeError('iterator next must return an object');
+ }
+ return result;
+};
diff --git a/node_modules/es-abstract/2022/IteratorStep.js b/node_modules/es-abstract/2022/IteratorStep.js
new file mode 100644
index 000000000..41b9d1b25
--- /dev/null
+++ b/node_modules/es-abstract/2022/IteratorStep.js
@@ -0,0 +1,13 @@
+'use strict';
+
+var IteratorComplete = require('./IteratorComplete');
+var IteratorNext = require('./IteratorNext');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep
+
+module.exports = function IteratorStep(iterator) {
+ var result = IteratorNext(iterator);
+ var done = IteratorComplete(result);
+ return done === true ? false : result;
+};
+
diff --git a/node_modules/es-abstract/2022/IteratorValue.js b/node_modules/es-abstract/2022/IteratorValue.js
new file mode 100644
index 000000000..d15d8aebb
--- /dev/null
+++ b/node_modules/es-abstract/2022/IteratorValue.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Get = require('./Get');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue
+
+module.exports = function IteratorValue(iterResult) {
+ if (Type(iterResult) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(iterResult) is not Object');
+ }
+ return Get(iterResult, 'value');
+};
+
diff --git a/node_modules/es-abstract/2022/LengthOfArrayLike.js b/node_modules/es-abstract/2022/LengthOfArrayLike.js
new file mode 100644
index 000000000..132c4d584
--- /dev/null
+++ b/node_modules/es-abstract/2022/LengthOfArrayLike.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Get = require('./Get');
+var ToLength = require('./ToLength');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/11.0/#sec-lengthofarraylike
+
+module.exports = function LengthOfArrayLike(obj) {
+ if (Type(obj) !== 'Object') {
+ throw new $TypeError('Assertion failed: `obj` must be an Object');
+ }
+ return ToLength(Get(obj, 'length'));
+};
+
+// TODO: use this all over
diff --git a/node_modules/es-abstract/2022/MakeDate.js b/node_modules/es-abstract/2022/MakeDate.js
new file mode 100644
index 000000000..efeb6452e
--- /dev/null
+++ b/node_modules/es-abstract/2022/MakeDate.js
@@ -0,0 +1,13 @@
+'use strict';
+
+var $isFinite = require('../helpers/isFinite');
+var msPerDay = require('../helpers/timeConstants').msPerDay;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.13
+
+module.exports = function MakeDate(day, time) {
+ if (!$isFinite(day) || !$isFinite(time)) {
+ return NaN;
+ }
+ return (day * msPerDay) + time;
+};
diff --git a/node_modules/es-abstract/2022/MakeDay.js b/node_modules/es-abstract/2022/MakeDay.js
new file mode 100644
index 000000000..db78bbc74
--- /dev/null
+++ b/node_modules/es-abstract/2022/MakeDay.js
@@ -0,0 +1,36 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $DateUTC = GetIntrinsic('%Date.UTC%');
+
+var $isFinite = require('../helpers/isFinite');
+
+var DateFromTime = require('./DateFromTime');
+var Day = require('./Day');
+var floor = require('./floor');
+var modulo = require('./modulo');
+var MonthFromTime = require('./MonthFromTime');
+var ToIntegerOrInfinity = require('./ToIntegerOrInfinity');
+var YearFromTime = require('./YearFromTime');
+
+// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12
+
+module.exports = function MakeDay(year, month, date) {
+ if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) {
+ return NaN;
+ }
+ var y = ToIntegerOrInfinity(year);
+ var m = ToIntegerOrInfinity(month);
+ var dt = ToIntegerOrInfinity(date);
+ var ym = y + floor(m / 12);
+ if (!$isFinite(ym)) {
+ return NaN;
+ }
+ var mn = modulo(m, 12);
+ var t = $DateUTC(ym, mn, 1);
+ if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) {
+ return NaN;
+ }
+ return Day(t) + dt - 1;
+};
diff --git a/node_modules/es-abstract/2022/MakeMatchIndicesIndexPairArray.js b/node_modules/es-abstract/2022/MakeMatchIndicesIndexPairArray.js
new file mode 100644
index 000000000..3424203f9
--- /dev/null
+++ b/node_modules/es-abstract/2022/MakeMatchIndicesIndexPairArray.js
@@ -0,0 +1,69 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ArrayCreate = require('./ArrayCreate');
+var CreateDataPropertyOrThrow = require('./CreateDataPropertyOrThrow');
+var GetMatchIndexPair = require('./GetMatchIndexPair');
+var IsArray = require('./IsArray');
+var OrdinaryObjectCreate = require('./OrdinaryObjectCreate');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+var every = require('../helpers/every');
+var isMatchRecord = require('../helpers/isMatchRecord');
+
+var isStringOrUndefined = function isStringOrUndefined(s) {
+ return typeof s === 'undefined' || typeof s === 'string';
+};
+
+var isMatchRecordOrUndefined = function isMatchRecordOrUndefined(m) {
+ return typeof m === 'undefined' || isMatchRecord(m);
+};
+
+var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1;
+
+// https://ecma-international.org/ecma-262/13.0/#sec-getmatchindexpair
+
+module.exports = function MakeMatchIndicesIndexPairArray(S, indices, groupNames, hasGroups) {
+ if (Type(S) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a String');
+ }
+ if (!IsArray(indices) || !every(indices, isMatchRecordOrUndefined)) {
+ throw new $TypeError('Assertion failed: `indices` must be a List of either Match Records or `undefined`');
+ }
+ if (!IsArray(groupNames) || !every(groupNames, isStringOrUndefined)) {
+ throw new $TypeError('Assertion failed: `groupNames` must be a List of either Strings or `undefined`');
+ }
+ if (Type(hasGroups) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `hasGroups` must be a Boolean');
+ }
+
+ var n = indices.length; // step 1
+ if (!(n < MAX_ARRAY_LENGTH)) {
+ throw new $TypeError('Assertion failed: `indices` length must be less than the max array size, 2**32 - 1');
+ }
+ if (groupNames.length !== n - 1) {
+ throw new $TypeError('Assertion failed: `groupNames` must have exactly one fewer item than `indices`');
+ }
+
+ var A = ArrayCreate(n); // step 5
+ var groups = hasGroups ? OrdinaryObjectCreate(null) : void undefined; // step 6-7
+ CreateDataPropertyOrThrow(A, 'groups', groups); // step 8
+
+ for (var i = 0; i < n; i += 1) { // step 9
+ var matchIndices = indices[i]; // step 9.a
+ // eslint-disable-next-line no-negated-condition
+ var matchIndexPair = typeof matchIndices !== 'undefined' ? GetMatchIndexPair(S, matchIndices) : void undefined; // step 9.b-9.c
+ CreateDataPropertyOrThrow(A, ToString(i), matchIndexPair); // step 9.d
+ if (i > 0 && typeof groupNames[i - 1] !== 'undefined') { // step 9.e
+ if (!groups) {
+ throw new $TypeError('if `hasGroups` is `false`, `groupNames` can only contain `undefined` values');
+ }
+ CreateDataPropertyOrThrow(groups, groupNames[i - 1], matchIndexPair); // step 9.e.i
+ }
+ }
+ return A; // step 10
+};
diff --git a/node_modules/es-abstract/2022/MakeTime.js b/node_modules/es-abstract/2022/MakeTime.js
new file mode 100644
index 000000000..330d3bdbc
--- /dev/null
+++ b/node_modules/es-abstract/2022/MakeTime.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var $isFinite = require('../helpers/isFinite');
+var timeConstants = require('../helpers/timeConstants');
+var msPerSecond = timeConstants.msPerSecond;
+var msPerMinute = timeConstants.msPerMinute;
+var msPerHour = timeConstants.msPerHour;
+
+var ToIntegerOrInfinity = require('./ToIntegerOrInfinity');
+
+// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11
+
+module.exports = function MakeTime(hour, min, sec, ms) {
+ if (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) {
+ return NaN;
+ }
+ var h = ToIntegerOrInfinity(hour);
+ var m = ToIntegerOrInfinity(min);
+ var s = ToIntegerOrInfinity(sec);
+ var milli = ToIntegerOrInfinity(ms);
+ var t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli;
+ return t;
+};
diff --git a/node_modules/es-abstract/2022/MinFromTime.js b/node_modules/es-abstract/2022/MinFromTime.js
new file mode 100644
index 000000000..a0c631d4c
--- /dev/null
+++ b/node_modules/es-abstract/2022/MinFromTime.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var floor = require('./floor');
+var modulo = require('./modulo');
+
+var timeConstants = require('../helpers/timeConstants');
+var msPerMinute = timeConstants.msPerMinute;
+var MinutesPerHour = timeConstants.MinutesPerHour;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.10
+
+module.exports = function MinFromTime(t) {
+ return modulo(floor(t / msPerMinute), MinutesPerHour);
+};
diff --git a/node_modules/es-abstract/2022/MonthFromTime.js b/node_modules/es-abstract/2022/MonthFromTime.js
new file mode 100644
index 000000000..a482a7df9
--- /dev/null
+++ b/node_modules/es-abstract/2022/MonthFromTime.js
@@ -0,0 +1,47 @@
+'use strict';
+
+var DayWithinYear = require('./DayWithinYear');
+var InLeapYear = require('./InLeapYear');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.4
+
+module.exports = function MonthFromTime(t) {
+ var day = DayWithinYear(t);
+ if (0 <= day && day < 31) {
+ return 0;
+ }
+ var leap = InLeapYear(t);
+ if (31 <= day && day < (59 + leap)) {
+ return 1;
+ }
+ if ((59 + leap) <= day && day < (90 + leap)) {
+ return 2;
+ }
+ if ((90 + leap) <= day && day < (120 + leap)) {
+ return 3;
+ }
+ if ((120 + leap) <= day && day < (151 + leap)) {
+ return 4;
+ }
+ if ((151 + leap) <= day && day < (181 + leap)) {
+ return 5;
+ }
+ if ((181 + leap) <= day && day < (212 + leap)) {
+ return 6;
+ }
+ if ((212 + leap) <= day && day < (243 + leap)) {
+ return 7;
+ }
+ if ((243 + leap) <= day && day < (273 + leap)) {
+ return 8;
+ }
+ if ((273 + leap) <= day && day < (304 + leap)) {
+ return 9;
+ }
+ if ((304 + leap) <= day && day < (334 + leap)) {
+ return 10;
+ }
+ if ((334 + leap) <= day && day < (365 + leap)) {
+ return 11;
+ }
+};
diff --git a/node_modules/es-abstract/2022/NormalCompletion.js b/node_modules/es-abstract/2022/NormalCompletion.js
new file mode 100644
index 000000000..1e429dd65
--- /dev/null
+++ b/node_modules/es-abstract/2022/NormalCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/6.0/#sec-normalcompletion
+
+module.exports = function NormalCompletion(value) {
+ return new CompletionRecord('normal', value);
+};
diff --git a/node_modules/es-abstract/2022/Number/add.js b/node_modules/es-abstract/2022/Number/add.js
new file mode 100644
index 000000000..8d6271f54
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/add.js
@@ -0,0 +1,36 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isFinite = require('../../helpers/isFinite');
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-add
+
+module.exports = function NumberAdd(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ if (isNaN(x) || isNaN(y) || (x === Infinity && y === -Infinity) || (x === -Infinity && y === Infinity)) {
+ return NaN;
+ }
+
+ if (!isFinite(x)) {
+ return x;
+ }
+ if (!isFinite(y)) {
+ return y;
+ }
+
+ if (x === y && x === 0) { // both zeroes
+ return Infinity / x === -Infinity && Infinity / y === -Infinity ? -0 : +0;
+ }
+
+ // shortcut for the actual spec mechanics
+ return x + y;
+};
diff --git a/node_modules/es-abstract/2022/Number/bitwiseAND.js b/node_modules/es-abstract/2022/Number/bitwiseAND.js
new file mode 100644
index 000000000..a7159802d
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/bitwiseAND.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var NumberBitwiseOp = require('../NumberBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseAND
+
+module.exports = function NumberBitwiseAND(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ return NumberBitwiseOp('&', x, y);
+};
diff --git a/node_modules/es-abstract/2022/Number/bitwiseNOT.js b/node_modules/es-abstract/2022/Number/bitwiseNOT.js
new file mode 100644
index 000000000..ae8032a78
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/bitwiseNOT.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToInt32 = require('../ToInt32');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseNOT
+
+module.exports = function NumberBitwiseNOT(x) {
+ if (Type(x) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` argument must be a Number');
+ }
+ var oldValue = ToInt32(x);
+ // Return the result of applying the bitwise operator op to lnum and rnum. The result is a signed 32-bit integer.
+ return ~oldValue;
+};
diff --git a/node_modules/es-abstract/2022/Number/bitwiseOR.js b/node_modules/es-abstract/2022/Number/bitwiseOR.js
new file mode 100644
index 000000000..c5e67b968
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/bitwiseOR.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var NumberBitwiseOp = require('../NumberBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseOR
+
+module.exports = function NumberBitwiseOR(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ return NumberBitwiseOp('|', x, y);
+};
diff --git a/node_modules/es-abstract/2022/Number/bitwiseXOR.js b/node_modules/es-abstract/2022/Number/bitwiseXOR.js
new file mode 100644
index 000000000..a4030e9a4
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/bitwiseXOR.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var NumberBitwiseOp = require('../NumberBitwiseOp');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseXOR
+
+module.exports = function NumberBitwiseXOR(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ return NumberBitwiseOp('^', x, y);
+};
diff --git a/node_modules/es-abstract/2022/Number/divide.js b/node_modules/es-abstract/2022/Number/divide.js
new file mode 100644
index 000000000..65244625d
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/divide.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isFinite = require('../../helpers/isFinite');
+var isNaN = require('../../helpers/isNaN');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-divide
+
+module.exports = function NumberDivide(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ if (isNaN(x) || isNaN(y) || (!isFinite(x) && !isFinite(y))) {
+ return NaN;
+ }
+ // shortcut for the actual spec mechanics
+ return x / y;
+};
diff --git a/node_modules/es-abstract/2022/Number/equal.js b/node_modules/es-abstract/2022/Number/equal.js
new file mode 100644
index 000000000..db68afa46
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/equal.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-equal
+
+module.exports = function NumberEqual(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ if (isNaN(x) || isNaN(y)) {
+ return false;
+ }
+ // shortcut for the actual spec mechanics
+ return x === y;
+};
diff --git a/node_modules/es-abstract/2022/Number/exponentiate.js b/node_modules/es-abstract/2022/Number/exponentiate.js
new file mode 100644
index 000000000..256865103
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/exponentiate.js
@@ -0,0 +1,77 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+// var isNegativeZero = require('is-negative-zero');
+
+var $pow = GetIntrinsic('%Math.pow%');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+/*
+var abs = require('../../helpers/abs');
+var isFinite = require('../../helpers/isFinite');
+var isNaN = require('../../helpers/isNaN');
+
+var IsInteger = require('../IsInteger');
+*/
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-exponentiate
+
+/* eslint max-lines-per-function: 0, max-statements: 0 */
+
+module.exports = function NumberExponentiate(base, exponent) {
+ if (Type(base) !== 'Number' || Type(exponent) !== 'Number') {
+ throw new $TypeError('Assertion failed: `base` and `exponent` arguments must be Numbers');
+ }
+ return $pow(base, exponent);
+ /*
+ if (isNaN(exponent)) {
+ return NaN;
+ }
+ if (exponent === 0) {
+ return 1;
+ }
+ if (isNaN(base)) {
+ return NaN;
+ }
+ var aB = abs(base);
+ if (aB > 1 && exponent === Infinity) {
+ return Infinity;
+ }
+ if (aB > 1 && exponent === -Infinity) {
+ return 0;
+ }
+ if (aB === 1 && (exponent === Infinity || exponent === -Infinity)) {
+ return NaN;
+ }
+ if (aB < 1 && exponent === Infinity) {
+ return +0;
+ }
+ if (aB < 1 && exponent === -Infinity) {
+ return Infinity;
+ }
+ if (base === Infinity) {
+ return exponent > 0 ? Infinity : 0;
+ }
+ if (base === -Infinity) {
+ var isOdd = true;
+ if (exponent > 0) {
+ return isOdd ? -Infinity : Infinity;
+ }
+ return isOdd ? -0 : 0;
+ }
+ if (exponent > 0) {
+ return isNegativeZero(base) ? Infinity : 0;
+ }
+ if (isNegativeZero(base)) {
+ if (exponent > 0) {
+ return isOdd ? -0 : 0;
+ }
+ return isOdd ? -Infinity : Infinity;
+ }
+ if (base < 0 && isFinite(base) && isFinite(exponent) && !IsInteger(exponent)) {
+ return NaN;
+ }
+ */
+};
diff --git a/node_modules/es-abstract/2022/Number/index.js b/node_modules/es-abstract/2022/Number/index.js
new file mode 100644
index 000000000..63ec52da6
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/index.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var add = require('./add');
+var bitwiseAND = require('./bitwiseAND');
+var bitwiseNOT = require('./bitwiseNOT');
+var bitwiseOR = require('./bitwiseOR');
+var bitwiseXOR = require('./bitwiseXOR');
+var divide = require('./divide');
+var equal = require('./equal');
+var exponentiate = require('./exponentiate');
+var leftShift = require('./leftShift');
+var lessThan = require('./lessThan');
+var multiply = require('./multiply');
+var remainder = require('./remainder');
+var sameValue = require('./sameValue');
+var sameValueZero = require('./sameValueZero');
+var signedRightShift = require('./signedRightShift');
+var subtract = require('./subtract');
+var toString = require('./toString');
+var unaryMinus = require('./unaryMinus');
+var unsignedRightShift = require('./unsignedRightShift');
+
+module.exports = {
+ add: add,
+ bitwiseAND: bitwiseAND,
+ bitwiseNOT: bitwiseNOT,
+ bitwiseOR: bitwiseOR,
+ bitwiseXOR: bitwiseXOR,
+ divide: divide,
+ equal: equal,
+ exponentiate: exponentiate,
+ leftShift: leftShift,
+ lessThan: lessThan,
+ multiply: multiply,
+ remainder: remainder,
+ sameValue: sameValue,
+ sameValueZero: sameValueZero,
+ signedRightShift: signedRightShift,
+ subtract: subtract,
+ toString: toString,
+ unaryMinus: unaryMinus,
+ unsignedRightShift: unsignedRightShift
+};
diff --git a/node_modules/es-abstract/2022/Number/leftShift.js b/node_modules/es-abstract/2022/Number/leftShift.js
new file mode 100644
index 000000000..023b3390f
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/leftShift.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToInt32 = require('../ToInt32');
+var ToUint32 = require('../ToUint32');
+var modulo = require('../modulo');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-leftShift
+
+module.exports = function NumberLeftShift(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ var lnum = ToInt32(x);
+ var rnum = ToUint32(y);
+
+ var shiftCount = modulo(rnum, 32);
+
+ return lnum << shiftCount;
+};
diff --git a/node_modules/es-abstract/2022/Number/lessThan.js b/node_modules/es-abstract/2022/Number/lessThan.js
new file mode 100644
index 000000000..5fcac24e9
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/lessThan.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-lessThan
+
+module.exports = function NumberLessThan(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ // If x is NaN, return undefined.
+ // If y is NaN, return undefined.
+ if (isNaN(x) || isNaN(y)) {
+ return void undefined;
+ }
+
+ // shortcut for the actual spec mechanics
+ return x < y;
+};
diff --git a/node_modules/es-abstract/2022/Number/multiply.js b/node_modules/es-abstract/2022/Number/multiply.js
new file mode 100644
index 000000000..2a6c478a5
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/multiply.js
@@ -0,0 +1,33 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-multiply
+
+module.exports = function NumberMultiply(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ if (isNaN(x) || isNaN(y) || (x === 0 && !isFinite(y)) || (!isFinite(x) && y === 0)) {
+ return NaN;
+ }
+ if (!isFinite(x) && !isFinite(y)) {
+ return x === y ? Infinity : -Infinity;
+ }
+ if (!isFinite(x) && y !== 0) {
+ return x > 0 ? Infinity : -Infinity;
+ }
+ if (!isFinite(y) && x !== 0) {
+ return y > 0 ? Infinity : -Infinity;
+ }
+
+ // shortcut for the actual spec mechanics
+ return x * y;
+};
diff --git a/node_modules/es-abstract/2022/Number/remainder.js b/node_modules/es-abstract/2022/Number/remainder.js
new file mode 100644
index 000000000..c9a7c2d7d
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/remainder.js
@@ -0,0 +1,32 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-remainder
+
+module.exports = function NumberRemainder(n, d) {
+ if (Type(n) !== 'Number' || Type(d) !== 'Number') {
+ throw new $TypeError('Assertion failed: `n` and `d` arguments must be Numbers');
+ }
+
+ // If either operand is NaN, the result is NaN.
+ // If the dividend is an infinity, or the divisor is a zero, or both, the result is NaN.
+ if (isNaN(n) || isNaN(d) || !isFinite(n) || d === 0) {
+ return NaN;
+ }
+
+ // If the dividend is finite and the divisor is an infinity, the result equals the dividend.
+ // If the dividend is a zero and the divisor is nonzero and finite, the result is the same as the dividend.
+ if (!isFinite(d) || n === 0) {
+ return n;
+ }
+
+ // In the remaining cases, where neither an infinity, nor a zero, nor NaN is involved…
+ return n % d;
+};
diff --git a/node_modules/es-abstract/2022/Number/sameValue.js b/node_modules/es-abstract/2022/Number/sameValue.js
new file mode 100644
index 000000000..19efc379d
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/sameValue.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var isNegativeZero = require('is-negative-zero');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+var NumberSameValueZero = require('./sameValueZero');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-sameValue
+
+module.exports = function NumberSameValue(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ if (x === 0 && y === 0) {
+ return !(isNegativeZero(x) ^ isNegativeZero(y));
+ }
+ return NumberSameValueZero(x, y);
+};
diff --git a/node_modules/es-abstract/2022/Number/sameValueZero.js b/node_modules/es-abstract/2022/Number/sameValueZero.js
new file mode 100644
index 000000000..5688198fe
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/sameValueZero.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-sameValueZero
+
+module.exports = function NumberSameValueZero(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ var xNaN = isNaN(x);
+ var yNaN = isNaN(y);
+ if (xNaN || yNaN) {
+ return xNaN === yNaN;
+ }
+ return x === y;
+};
diff --git a/node_modules/es-abstract/2022/Number/signedRightShift.js b/node_modules/es-abstract/2022/Number/signedRightShift.js
new file mode 100644
index 000000000..025f39a1c
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/signedRightShift.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToInt32 = require('../ToInt32');
+var ToUint32 = require('../ToUint32');
+var modulo = require('../modulo');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-signedRightShift
+
+module.exports = function NumberSignedRightShift(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ var lnum = ToInt32(x);
+ var rnum = ToUint32(y);
+
+ var shiftCount = modulo(rnum, 32);
+
+ return lnum >> shiftCount;
+};
diff --git a/node_modules/es-abstract/2022/Number/subtract.js b/node_modules/es-abstract/2022/Number/subtract.js
new file mode 100644
index 000000000..29a29e619
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/subtract.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+var NumberAdd = require('./add');
+var NumberUnaryMinus = require('./unaryMinus');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-subtract
+
+module.exports = function NumberSubtract(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ return NumberAdd(x, NumberUnaryMinus(y));
+};
diff --git a/node_modules/es-abstract/2022/Number/toString.js b/node_modules/es-abstract/2022/Number/toString.js
new file mode 100644
index 000000000..4f133160a
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/toString.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $String = GetIntrinsic('%String%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-tostring
+
+module.exports = function NumberToString(x) {
+ if (Type(x) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` must be a Number');
+ }
+
+ return $String(x);
+};
diff --git a/node_modules/es-abstract/2022/Number/unaryMinus.js b/node_modules/es-abstract/2022/Number/unaryMinus.js
new file mode 100644
index 000000000..794582ad8
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/unaryMinus.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isNaN = require('../../helpers/isNaN');
+
+var Type = require('../Type');
+
+// https://262.ecma-international.org/11.0/#sec-numeric-types-number-unaryMinus
+
+module.exports = function NumberUnaryMinus(x) {
+ if (Type(x) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` argument must be a Number');
+ }
+ if (isNaN(x)) {
+ return NaN;
+ }
+ return -x;
+};
diff --git a/node_modules/es-abstract/2022/Number/unsignedRightShift.js b/node_modules/es-abstract/2022/Number/unsignedRightShift.js
new file mode 100644
index 000000000..2eb967ac2
--- /dev/null
+++ b/node_modules/es-abstract/2022/Number/unsignedRightShift.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToInt32 = require('../ToInt32');
+var ToUint32 = require('../ToUint32');
+var modulo = require('../modulo');
+var Type = require('../Type');
+
+// https://262.ecma-international.org/12.0/#sec-numeric-types-number-unsignedRightShift
+
+module.exports = function NumberUnsignedRightShift(x, y) {
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+
+ var lnum = ToInt32(x);
+ var rnum = ToUint32(y);
+
+ var shiftCount = modulo(rnum, 32);
+
+ return lnum >>> shiftCount;
+};
diff --git a/node_modules/es-abstract/2022/NumberBitwiseOp.js b/node_modules/es-abstract/2022/NumberBitwiseOp.js
new file mode 100644
index 000000000..11425ffde
--- /dev/null
+++ b/node_modules/es-abstract/2022/NumberBitwiseOp.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var ToInt32 = require('./ToInt32');
+var ToUint32 = require('./ToUint32');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/11.0/#sec-numberbitwiseop
+
+module.exports = function NumberBitwiseOp(op, x, y) {
+ if (op !== '&' && op !== '|' && op !== '^') {
+ throw new $TypeError('Assertion failed: `op` must be `&`, `|`, or `^`');
+ }
+ if (Type(x) !== 'Number' || Type(y) !== 'Number') {
+ throw new $TypeError('Assertion failed: `x` and `y` arguments must be Numbers');
+ }
+ var lnum = ToInt32(x);
+ var rnum = ToUint32(y);
+ if (op === '&') {
+ return lnum & rnum;
+ }
+ if (op === '|') {
+ return lnum | rnum;
+ }
+ return lnum ^ rnum;
+};
diff --git a/node_modules/es-abstract/2022/NumberToBigInt.js b/node_modules/es-abstract/2022/NumberToBigInt.js
new file mode 100644
index 000000000..9ed8ed9a9
--- /dev/null
+++ b/node_modules/es-abstract/2022/NumberToBigInt.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $RangeError = GetIntrinsic('%RangeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/12.0/#sec-numbertobigint
+
+module.exports = function NumberToBigInt(number) {
+ if (Type(number) !== 'Number') {
+ throw new $TypeError('Assertion failed: `number` must be a String');
+ }
+ if (!IsIntegralNumber(number)) {
+ throw new $RangeError('The number ' + number + ' cannot be converted to a BigInt because it is not an integer');
+ }
+ if (!$BigInt) {
+ throw new $SyntaxError('BigInts are not supported in this environment');
+ }
+ return $BigInt(number);
+};
diff --git a/node_modules/es-abstract/2022/NumericToRawBytes.js b/node_modules/es-abstract/2022/NumericToRawBytes.js
new file mode 100644
index 000000000..91549fb99
--- /dev/null
+++ b/node_modules/es-abstract/2022/NumericToRawBytes.js
@@ -0,0 +1,209 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $floor = GetIntrinsic('%Math.floor%');
+var $log = GetIntrinsic('%Math.log%');
+var $log2E = GetIntrinsic('%Math.LOG2E%');
+var $log2 = GetIntrinsic('%Math.log2%', true) || function log2(x) {
+ return $log(x) * $log2E;
+};
+var $parseInt = GetIntrinsic('%parseInt%');
+var $pow = GetIntrinsic('%Math.pow%');
+var $Number = GetIntrinsic('%Number%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $BigInt = GetIntrinsic('%BigInt%', true);
+
+var callBound = require('call-bind/callBound');
+
+var $reverse = callBound('Array.prototype.reverse');
+var $numberToString = callBound('Number.prototype.toString');
+var $strSlice = callBound('String.prototype.slice');
+
+var abs = require('./abs');
+var hasOwnProperty = require('./HasOwnProperty');
+var ToBigInt64 = require('./ToBigInt64');
+var ToBigUint64 = require('./ToBigUint64');
+var ToInt16 = require('./ToInt16');
+var ToInt32 = require('./ToInt32');
+var ToInt8 = require('./ToInt8');
+var ToUint16 = require('./ToUint16');
+var ToUint32 = require('./ToUint32');
+var ToUint8 = require('./ToUint8');
+var ToUint8Clamp = require('./ToUint8Clamp');
+var Type = require('./Type');
+
+var isNaN = require('../helpers/isNaN');
+var isFinite = require('../helpers/isFinite');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/11.0/#table-the-typedarray-constructors
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ BigInt64: 8,
+ BigUint64: 8,
+ Float32: 4,
+ Float64: 8
+};
+
+var TypeToAO = {
+ __proto__: null,
+ Int8: ToInt8,
+ Uint8: ToUint8,
+ Uint8C: ToUint8Clamp,
+ Int16: ToInt16,
+ Uint16: ToUint16,
+ Int32: ToInt32,
+ Uint32: ToUint32,
+ BigInt64: ToBigInt64,
+ BigUint64: ToBigUint64
+};
+
+// https://262.ecma-international.org/11.0/#sec-numerictorawbytes
+
+module.exports = function NumericToRawBytes(type, value, isLittleEndian) {
+ if (typeof type !== 'string' || !hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (Type(value) !== 'Number' && Type(value) !== 'BigInt') {
+ throw new $TypeError('Assertion failed: `value` must be a Number or a BigInt');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var rawBytes = [];
+ var exponent;
+
+ if (type === 'Float32') { // step 1
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 192, 127] : [127, 192, 0, 0]; // hardcoded
+ }
+
+ var leastSig;
+
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, leastSig] : [leastSig, 0, 0, 0];
+ }
+
+ if (!isFinite(value)) {
+ leastSig = value < 0 ? 255 : 127;
+ return isLittleEndian ? [0, 0, 128, leastSig] : [leastSig, 128, 0, 0];
+ }
+
+ var sign = value < 0 ? 1 : 0;
+ value = abs(value); // eslint-disable-line no-param-reassign
+
+ exponent = 0;
+ while (value >= 2) {
+ exponent += 1;
+ value /= 2; // eslint-disable-line no-param-reassign
+ }
+
+ while (value < 1) {
+ exponent -= 1;
+ value *= 2; // eslint-disable-line no-param-reassign
+ }
+
+ var mantissa = value - 1;
+ mantissa *= $pow(2, 23);
+ mantissa = $floor(mantissa);
+
+ exponent += 127;
+ exponent = exponent << 23;
+
+ var result = sign << 31;
+ result |= exponent;
+ result |= mantissa;
+
+ var byte0 = result & 255;
+ result = result >> 8;
+ var byte1 = result & 255;
+ result = result >> 8;
+ var byte2 = result & 255;
+ result = result >> 8;
+ var byte3 = result & 255;
+
+ if (isLittleEndian) {
+ return [byte0, byte1, byte2, byte3];
+ }
+ return [byte3, byte2, byte1, byte0];
+ } else if (type === 'Float64') { // step 2
+ if (value === 0) {
+ leastSig = Object.is(value, -0) ? 0x80 : 0;
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 0, leastSig] : [leastSig, 0, 0, 0, 0, 0, 0, 0];
+ }
+ if (isNaN(value)) {
+ return isLittleEndian ? [0, 0, 0, 0, 0, 0, 248, 127] : [127, 248, 0, 0, 0, 0, 0, 0];
+ }
+ if (!isFinite(value)) {
+ var infBytes = value < 0 ? [0, 0, 0, 0, 0, 0, 240, 255] : [0, 0, 0, 0, 0, 0, 240, 127];
+ return isLittleEndian ? infBytes : $reverse(infBytes);
+ }
+
+ var isNegative = value < 0;
+ if (isNegative) { value = -value; } // eslint-disable-line no-param-reassign
+
+ exponent = $floor($log2(value));
+ var significand = (value / $pow(2, exponent)) - 1;
+
+ var bitString = '';
+ for (var i = 0; i < 52; i++) {
+ significand *= 2;
+ if (significand >= 1) {
+ bitString += '1';
+ significand -= 1;
+ } else {
+ bitString += '0';
+ }
+ }
+
+ exponent += 1023;
+ var exponentBits = $numberToString(exponent, 2);
+ while (exponentBits.length < 11) { exponentBits = '0' + exponentBits; }
+
+ var fullBitString = (isNegative ? '1' : '0') + exponentBits + bitString;
+ while (fullBitString.length < 64) { fullBitString = '0' + fullBitString; }
+
+ for (i = 0; i < 8; i++) {
+ rawBytes[i] = $parseInt($strSlice(fullBitString, i * 8, (i + 1) * 8), 2);
+ }
+
+ return isLittleEndian ? $reverse(rawBytes) : rawBytes;
+ } // step 3
+
+ var n = TypeToSizes[type]; // step 3.a
+
+ var convOp = TypeToAO[type]; // step 3.b
+
+ var intValue = convOp(value); // step 3.c
+
+ var isBigInt = type === 'BigInt64' || type === 'BigUint64';
+ /*
+ if (intValue >= 0) { // step 3.d
+ // Let rawBytes be a List containing the n-byte binary encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ } else { // step 3.e
+ // Let rawBytes be a List containing the n-byte binary 2's complement encoding of intValue. If isLittleEndian is false, the bytes are ordered in big endian order. Otherwise, the bytes are ordered in little endian order.
+ }
+ */
+ if (intValue < 0) {
+ intValue = intValue >>> 0;
+ }
+ var OxFF = isBigInt ? $BigInt(0xFF) : 0xFF;
+ var eight = isBigInt ? $BigInt(8) : 8;
+ for (i = 0; i < n; i++) {
+ rawBytes[isLittleEndian ? i : n - 1 - i] = $Number(intValue & OxFF);
+ intValue = intValue >> eight;
+ }
+
+ return rawBytes; // step 4
+};
diff --git a/node_modules/es-abstract/2022/ObjectDefineProperties.js b/node_modules/es-abstract/2022/ObjectDefineProperties.js
new file mode 100644
index 000000000..f096f1ede
--- /dev/null
+++ b/node_modules/es-abstract/2022/ObjectDefineProperties.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var Get = require('./Get');
+var ToObject = require('./ToObject');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+
+var forEach = require('../helpers/forEach');
+var getOwnPropertyDescriptor = require('gopd');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var $push = callBound('Array.prototype.push');
+
+// https://262.ecma-international.org/6.0/#sec-objectdefineproperties
+module.exports = function ObjectDefineProperties(O, Properties) {
+ var props = ToObject(Properties); // step 1
+ var keys = OwnPropertyKeys(props); // step 2
+ var descriptors = []; // step 3
+
+ forEach(keys, function (nextKey) { // step 4
+ var propDesc = ToPropertyDescriptor(getOwnPropertyDescriptor(props, nextKey)); // step 4.a
+ if (typeof propDesc !== 'undefined' && propDesc['[[Enumerable]]']) { // step 4.b
+ var descObj = Get(props, nextKey); // step 4.b.i
+ var desc = ToPropertyDescriptor(descObj); // step 4.b.ii
+ $push(descriptors, [nextKey, desc]); // step 4.b.iii
+ }
+ });
+
+ forEach(descriptors, function (pair) { // step 5
+ var P = pair[0]; // step 5.a
+ var desc = pair[1]; // step 5.b
+ desc = FromPropertyDescriptor(desc); // TODO: remove this once DefinePropertyOrThrow is fixed
+ DefinePropertyOrThrow(O, P, desc); // step 5.c
+ });
+
+ return O; // step 6
+};
diff --git a/node_modules/es-abstract/2022/OrdinaryCreateFromConstructor.js b/node_modules/es-abstract/2022/OrdinaryCreateFromConstructor.js
new file mode 100644
index 000000000..8f3bb829d
--- /dev/null
+++ b/node_modules/es-abstract/2022/OrdinaryCreateFromConstructor.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var GetPrototypeFromConstructor = require('./GetPrototypeFromConstructor');
+var IsArray = require('./IsArray');
+var OrdinaryObjectCreate = require('./OrdinaryObjectCreate');
+
+// https://262.ecma-international.org/6.0/#sec-ordinarycreatefromconstructor
+
+module.exports = function OrdinaryCreateFromConstructor(constructor, intrinsicDefaultProto) {
+ GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic
+ var proto = GetPrototypeFromConstructor(constructor, intrinsicDefaultProto);
+ var slots = arguments.length < 3 ? [] : arguments[2];
+ if (!IsArray(slots)) {
+ throw new $TypeError('Assertion failed: if provided, `internalSlotsList` must be a List');
+ }
+ return OrdinaryObjectCreate(proto, slots);
+};
diff --git a/node_modules/es-abstract/2022/OrdinaryDefineOwnProperty.js b/node_modules/es-abstract/2022/OrdinaryDefineOwnProperty.js
new file mode 100644
index 000000000..34f029f7e
--- /dev/null
+++ b/node_modules/es-abstract/2022/OrdinaryDefineOwnProperty.js
@@ -0,0 +1,61 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $gOPD = require('gopd');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
+
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsExtensible = require('./IsExtensible');
+var IsPropertyKey = require('./IsPropertyKey');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty
+
+module.exports = function OrdinaryDefineOwnProperty(O, P, Desc) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: P must be a Property Key');
+ }
+ if (!isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, Desc)) {
+ throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
+ }
+ if (!$gOPD) {
+ // ES3/IE 8 fallback
+ if (IsAccessorDescriptor(Desc)) {
+ throw new $SyntaxError('This environment does not support accessor property descriptors.');
+ }
+ var creatingNormalDataProperty = !(P in O)
+ && Desc['[[Writable]]']
+ && Desc['[[Enumerable]]']
+ && Desc['[[Configurable]]']
+ && '[[Value]]' in Desc;
+ var settingExistingDataProperty = (P in O)
+ && (!('[[Configurable]]' in Desc) || Desc['[[Configurable]]'])
+ && (!('[[Enumerable]]' in Desc) || Desc['[[Enumerable]]'])
+ && (!('[[Writable]]' in Desc) || Desc['[[Writable]]'])
+ && '[[Value]]' in Desc;
+ if (creatingNormalDataProperty || settingExistingDataProperty) {
+ O[P] = Desc['[[Value]]']; // eslint-disable-line no-param-reassign
+ return SameValue(O[P], Desc['[[Value]]']);
+ }
+ throw new $SyntaxError('This environment does not support defining non-writable, non-enumerable, or non-configurable properties');
+ }
+ var desc = $gOPD(O, P);
+ var current = desc && ToPropertyDescriptor(desc);
+ var extensible = IsExtensible(O);
+ return ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current);
+};
diff --git a/node_modules/es-abstract/2022/OrdinaryGetOwnProperty.js b/node_modules/es-abstract/2022/OrdinaryGetOwnProperty.js
new file mode 100644
index 000000000..fd8035acb
--- /dev/null
+++ b/node_modules/es-abstract/2022/OrdinaryGetOwnProperty.js
@@ -0,0 +1,44 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $gOPD = require('gopd');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
+
+var has = require('has');
+
+var IsArray = require('./IsArray');
+var IsPropertyKey = require('./IsPropertyKey');
+var IsRegExp = require('./IsRegExp');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty
+
+module.exports = function OrdinaryGetOwnProperty(O, P) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: P must be a Property Key');
+ }
+ if (!has(O, P)) {
+ return void 0;
+ }
+ if (!$gOPD) {
+ // ES3 / IE 8 fallback
+ var arrayLength = IsArray(O) && P === 'length';
+ var regexLastIndex = IsRegExp(O) && P === 'lastIndex';
+ return {
+ '[[Configurable]]': !(arrayLength || regexLastIndex),
+ '[[Enumerable]]': $isEnumerable(O, P),
+ '[[Value]]': O[P],
+ '[[Writable]]': true
+ };
+ }
+ return ToPropertyDescriptor($gOPD(O, P));
+};
diff --git a/node_modules/es-abstract/2022/OrdinaryGetPrototypeOf.js b/node_modules/es-abstract/2022/OrdinaryGetPrototypeOf.js
new file mode 100644
index 000000000..ba17b9887
--- /dev/null
+++ b/node_modules/es-abstract/2022/OrdinaryGetPrototypeOf.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $getProto = require('../helpers/getProto');
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/7.0/#sec-ordinarygetprototypeof
+
+module.exports = function OrdinaryGetPrototypeOf(O) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!$getProto) {
+ throw new $TypeError('This environment does not support fetching prototypes.');
+ }
+ return $getProto(O);
+};
diff --git a/node_modules/es-abstract/2022/OrdinaryHasInstance.js b/node_modules/es-abstract/2022/OrdinaryHasInstance.js
new file mode 100644
index 000000000..85a240ca2
--- /dev/null
+++ b/node_modules/es-abstract/2022/OrdinaryHasInstance.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance
+
+module.exports = function OrdinaryHasInstance(C, O) {
+ if (IsCallable(C) === false) {
+ return false;
+ }
+ if (Type(O) !== 'Object') {
+ return false;
+ }
+ var P = Get(C, 'prototype');
+ if (Type(P) !== 'Object') {
+ throw new $TypeError('OrdinaryHasInstance called on an object with an invalid prototype property.');
+ }
+ return O instanceof C;
+};
diff --git a/node_modules/es-abstract/2022/OrdinaryHasProperty.js b/node_modules/es-abstract/2022/OrdinaryHasProperty.js
new file mode 100644
index 000000000..dd09ca3b1
--- /dev/null
+++ b/node_modules/es-abstract/2022/OrdinaryHasProperty.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty
+
+module.exports = function OrdinaryHasProperty(O, P) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: P must be a Property Key');
+ }
+ return P in O;
+};
diff --git a/node_modules/es-abstract/2022/OrdinaryObjectCreate.js b/node_modules/es-abstract/2022/OrdinaryObjectCreate.js
new file mode 100644
index 000000000..140534083
--- /dev/null
+++ b/node_modules/es-abstract/2022/OrdinaryObjectCreate.js
@@ -0,0 +1,56 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $ObjectCreate = GetIntrinsic('%Object.create%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var IsArray = require('./IsArray');
+var Type = require('./Type');
+
+var forEach = require('../helpers/forEach');
+
+var SLOT = require('internal-slot');
+
+var hasProto = require('has-proto')();
+
+// https://262.ecma-international.org/11.0/#sec-objectcreate
+
+module.exports = function OrdinaryObjectCreate(proto) {
+ if (proto !== null && Type(proto) !== 'Object') {
+ throw new $TypeError('Assertion failed: `proto` must be null or an object');
+ }
+ var additionalInternalSlotsList = arguments.length < 2 ? [] : arguments[1];
+ if (!IsArray(additionalInternalSlotsList)) {
+ throw new $TypeError('Assertion failed: `additionalInternalSlotsList` must be an Array');
+ }
+
+ // var internalSlotsList = ['[[Prototype]]', '[[Extensible]]']; // step 1
+ // internalSlotsList.push(...additionalInternalSlotsList); // step 2
+ // var O = MakeBasicObject(internalSlotsList); // step 3
+ // setProto(O, proto); // step 4
+ // return O; // step 5
+
+ var O;
+ if ($ObjectCreate) {
+ O = $ObjectCreate(proto);
+ } else if (hasProto) {
+ O = { __proto__: proto };
+ } else {
+ if (proto === null) {
+ throw new $SyntaxError('native Object.create support is required to create null objects');
+ }
+ var T = function T() {};
+ T.prototype = proto;
+ O = new T();
+ }
+
+ if (additionalInternalSlotsList.length > 0) {
+ forEach(additionalInternalSlotsList, function (slot) {
+ SLOT.set(O, slot, void undefined);
+ });
+ }
+
+ return O;
+};
diff --git a/node_modules/es-abstract/2022/OrdinarySetPrototypeOf.js b/node_modules/es-abstract/2022/OrdinarySetPrototypeOf.js
new file mode 100644
index 000000000..d2b72306c
--- /dev/null
+++ b/node_modules/es-abstract/2022/OrdinarySetPrototypeOf.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $setProto = require('../helpers/setProto');
+
+var OrdinaryGetPrototypeOf = require('./OrdinaryGetPrototypeOf');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/7.0/#sec-ordinarysetprototypeof
+
+module.exports = function OrdinarySetPrototypeOf(O, V) {
+ if (Type(V) !== 'Object' && Type(V) !== 'Null') {
+ throw new $TypeError('Assertion failed: V must be Object or Null');
+ }
+ /*
+ var extensible = IsExtensible(O);
+ var current = OrdinaryGetPrototypeOf(O);
+ if (SameValue(V, current)) {
+ return true;
+ }
+ if (!extensible) {
+ return false;
+ }
+ */
+ try {
+ $setProto(O, V);
+ } catch (e) {
+ return false;
+ }
+ return OrdinaryGetPrototypeOf(O) === V;
+ /*
+ var p = V;
+ var done = false;
+ while (!done) {
+ if (p === null) {
+ done = true;
+ } else if (SameValue(p, O)) {
+ return false;
+ } else {
+ if (wat) {
+ done = true;
+ } else {
+ p = p.[[Prototype]];
+ }
+ }
+ }
+ O.[[Prototype]] = V;
+ return true;
+ */
+};
diff --git a/node_modules/es-abstract/2022/OrdinaryToPrimitive.js b/node_modules/es-abstract/2022/OrdinaryToPrimitive.js
new file mode 100644
index 000000000..e1dbe1427
--- /dev/null
+++ b/node_modules/es-abstract/2022/OrdinaryToPrimitive.js
@@ -0,0 +1,38 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Call = require('./Call');
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+var inspect = require('object-inspect');
+
+// https://262.ecma-international.org/8.0/#sec-ordinarytoprimitive
+
+module.exports = function OrdinaryToPrimitive(O, hint) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (/* Type(hint) !== 'String' || */ hint !== 'string' && hint !== 'number') {
+ throw new $TypeError('Assertion failed: `hint` must be "string" or "number"');
+ }
+
+ var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];
+
+ for (var i = 0; i < methodNames.length; i += 1) {
+ var name = methodNames[i];
+ var method = Get(O, name);
+ if (IsCallable(method)) {
+ var result = Call(method, O);
+ if (Type(result) !== 'Object') {
+ return result;
+ }
+ }
+ }
+
+ throw new $TypeError('No primitive value for ' + inspect(O));
+};
diff --git a/node_modules/es-abstract/2022/PromiseResolve.js b/node_modules/es-abstract/2022/PromiseResolve.js
new file mode 100644
index 000000000..6474b79c4
--- /dev/null
+++ b/node_modules/es-abstract/2022/PromiseResolve.js
@@ -0,0 +1,17 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBind = require('call-bind');
+
+var $resolve = GetIntrinsic('%Promise.resolve%', true);
+var $PromiseResolve = $resolve && callBind($resolve);
+
+// https://262.ecma-international.org/9.0/#sec-promise-resolve
+
+module.exports = function PromiseResolve(C, x) {
+ if (!$PromiseResolve) {
+ throw new SyntaxError('This environment does not support Promises.');
+ }
+ return $PromiseResolve(C, x);
+};
+
diff --git a/node_modules/es-abstract/2022/QuoteJSONString.js b/node_modules/es-abstract/2022/QuoteJSONString.js
new file mode 100644
index 000000000..0deebecf2
--- /dev/null
+++ b/node_modules/es-abstract/2022/QuoteJSONString.js
@@ -0,0 +1,54 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var forEach = require('../helpers/forEach');
+var isLeadingSurrogate = require('../helpers/isLeadingSurrogate');
+var isTrailingSurrogate = require('../helpers/isTrailingSurrogate');
+
+var $charCodeAt = callBound('String.prototype.charCodeAt');
+
+var StringToCodePoints = require('./StringToCodePoints');
+var Type = require('./Type');
+var UnicodeEscape = require('./UnicodeEscape');
+var UTF16EncodeCodePoint = require('./UTF16EncodeCodePoint');
+
+var has = require('has');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-quotejsonstring
+
+var escapes = {
+ '\u0008': '\\b',
+ '\u0009': '\\t',
+ '\u000A': '\\n',
+ '\u000C': '\\f',
+ '\u000D': '\\r',
+ '\u0022': '\\"',
+ '\u005c': '\\\\'
+};
+
+module.exports = function QuoteJSONString(value) {
+ if (Type(value) !== 'String') {
+ throw new $TypeError('Assertion failed: `value` must be a String');
+ }
+ var product = '"';
+ if (value) {
+ forEach(StringToCodePoints(value), function (C) {
+ if (has(escapes, C)) {
+ product += escapes[C];
+ } else {
+ var cCharCode = $charCodeAt(C, 0);
+ if (cCharCode < 0x20 || isLeadingSurrogate(C) || isTrailingSurrogate(C)) {
+ product += UnicodeEscape(C);
+ } else {
+ product += UTF16EncodeCodePoint(cCharCode);
+ }
+ }
+ });
+ }
+ product += '"';
+ return product;
+};
diff --git a/node_modules/es-abstract/2022/RawBytesToNumeric.js b/node_modules/es-abstract/2022/RawBytesToNumeric.js
new file mode 100644
index 000000000..c253b5d70
--- /dev/null
+++ b/node_modules/es-abstract/2022/RawBytesToNumeric.js
@@ -0,0 +1,156 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $pow = GetIntrinsic('%Math.pow%');
+var $RangeError = GetIntrinsic('%RangeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $BigInt = GetIntrinsic('%BigInt%', true);
+
+var hasOwnProperty = require('./HasOwnProperty');
+var IsArray = require('./IsArray');
+var IsBigIntElementType = require('./IsBigIntElementType');
+var IsUnsignedElementType = require('./IsUnsignedElementType');
+var Type = require('./Type');
+
+var every = require('../helpers/every');
+var isByteValue = require('../helpers/isByteValue');
+
+var $reverse = callBound('Array.prototype.reverse');
+var $slice = callBound('Array.prototype.slice');
+
+var keys = require('object-keys');
+
+// https://262.ecma-international.org/11.0/#table-the-typedarray-constructors
+var TypeToSizes = {
+ __proto__: null,
+ Int8: 1,
+ Uint8: 1,
+ Uint8C: 1,
+ Int16: 2,
+ Uint16: 2,
+ Int32: 4,
+ Uint32: 4,
+ BigInt64: 8,
+ BigUint64: 8,
+ Float32: 4,
+ Float64: 8
+};
+
+// https://262.ecma-international.org/11.0/#sec-rawbytestonumeric
+
+module.exports = function RawBytesToNumeric(type, rawBytes, isLittleEndian) {
+ if (!hasOwnProperty(TypeToSizes, type)) {
+ throw new $TypeError('Assertion failed: `type` must be a TypedArray element type: ' + keys(TypeToSizes));
+ }
+ if (!IsArray(rawBytes) || !every(rawBytes, isByteValue)) {
+ throw new $TypeError('Assertion failed: `rawBytes` must be an Array of bytes');
+ }
+ if (Type(isLittleEndian) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `isLittleEndian` must be a Boolean');
+ }
+
+ var elementSize = TypeToSizes[type]; // step 1
+
+ if (rawBytes.length !== elementSize) {
+ // this assertion is not in the spec, but it'd be an editorial error if it were ever violated
+ throw new $RangeError('Assertion failed: `rawBytes` must have a length of ' + elementSize + ' for type ' + type);
+ }
+
+ var isBigInt = IsBigIntElementType(type);
+ if (isBigInt && !$BigInt) {
+ throw new $SyntaxError('this environment does not support BigInts');
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $slice(rawBytes, 0, elementSize);
+ if (!isLittleEndian) {
+ // eslint-disable-next-line no-param-reassign
+ rawBytes = $reverse(rawBytes); // step 2
+ }
+
+ /* eslint no-redeclare: 1 */
+ if (type === 'Float32') { // step 3
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary32 value.
+If value is an IEEE 754-2008 binary32 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = (rawBytes[3] & 0x80) >> 7; // first bit
+ var exponent = ((rawBytes[3] & 0x7F) << 1) // 7 bits from index 3
+ | ((rawBytes[2] & 0x80) >> 7); // 1 bit from index 2
+ var mantissa = ((rawBytes[2] & 0x7F) << 16) // 7 bits from index 2
+ | (rawBytes[1] << 8) // 8 bits from index 1
+ | rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign === 0 ? 0 : -0;
+ }
+ if (exponent === 0xFF && mantissa === 0) {
+ return sign === 0 ? Infinity : -Infinity;
+ }
+ if (exponent === 0xFF && mantissa !== 0) {
+ return NaN;
+ }
+
+ exponent -= 127; // subtract the bias
+
+ // return $pow(-1, sign) * mantissa / $pow(2, 23) * $pow(2, exponent);
+ // return $pow(-1, sign) * (mantissa + 0x1000000) * $pow(2, exponent - 23);
+ return $pow(-1, sign) * (1 + (mantissa / $pow(2, 23))) * $pow(2, exponent);
+ }
+
+ if (type === 'Float64') { // step 4
+ /*
+ Let value be the byte elements of rawBytes concatenated and interpreted as a little-endian bit string encoding of an IEEE 754-2008 binary64 value.
+If value is an IEEE 754-2008 binary64 NaN value, return the NaN Number value.
+Return the Number value that corresponds to value.
+ */
+ var sign = rawBytes[7] & 0x80 ? -1 : 1; // first bit
+ var exponent = ((rawBytes[7] & 0x7F) << 4) // 7 bits from index 7
+ | ((rawBytes[6] & 0xF0) >> 4); // 4 bits from index 6
+ var mantissa = ((rawBytes[6] & 0x0F) * 0x1000000000000) // 4 bits from index 6
+ + (rawBytes[5] * 0x10000000000) // 8 bits from index 5
+ + (rawBytes[4] * 0x100000000) // 8 bits from index 4
+ + (rawBytes[3] * 0x1000000) // 8 bits from index 3
+ + (rawBytes[2] * 0x10000) // 8 bits from index 2
+ + (rawBytes[1] * 0x100) // 8 bits from index 1
+ + rawBytes[0]; // 8 bits from index 0
+
+ if (exponent === 0 && mantissa === 0) {
+ return sign * 0;
+ }
+ if (exponent === 0x7FF && mantissa !== 0) {
+ return NaN;
+ }
+ if (exponent === 0x7FF && mantissa === 0) {
+ return sign * Infinity;
+ }
+
+ exponent -= 1023; // subtract the bias
+
+ return sign * (mantissa + 0x10000000000000) * $pow(2, exponent - 52);
+ }
+
+ // this is common to both branches
+ var intValue = isBigInt ? $BigInt(0) : 0;
+ for (var i = 0; i < rawBytes.length; i++) {
+ intValue |= isBigInt ? $BigInt(rawBytes[i]) << $BigInt(8 * i) : rawBytes[i] << (8 * i);
+ }
+ /*
+ Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of an unsigned little-endian binary number.
+ */
+
+ if (!IsUnsignedElementType(type)) { // steps 5-6
+ // Let intValue be the byte elements of rawBytes concatenated and interpreted as a bit string encoding of a binary little-endian 2's complement number of bit length elementSize × 8.
+ var bitLength = elementSize * 8;
+ if (bitLength < 32) {
+ var x = isBigInt ? $BigInt(32 - bitLength) : 32 - bitLength;
+ intValue = (intValue << x) >> x;
+ }
+ }
+
+ return intValue; // step 7
+};
diff --git a/node_modules/es-abstract/2022/RegExpCreate.js b/node_modules/es-abstract/2022/RegExpCreate.js
new file mode 100644
index 000000000..68e31605e
--- /dev/null
+++ b/node_modules/es-abstract/2022/RegExpCreate.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RegExp = GetIntrinsic('%RegExp%');
+
+// var RegExpAlloc = require('./RegExpAlloc');
+// var RegExpInitialize = require('./RegExpInitialize');
+var ToString = require('./ToString');
+
+// https://262.ecma-international.org/6.0/#sec-regexpcreate
+
+module.exports = function RegExpCreate(P, F) {
+ // var obj = RegExpAlloc($RegExp);
+ // return RegExpInitialize(obj, P, F);
+
+ // covers spec mechanics; bypass regex brand checking
+ var pattern = typeof P === 'undefined' ? '' : ToString(P);
+ var flags = typeof F === 'undefined' ? '' : ToString(F);
+ return new $RegExp(pattern, flags);
+};
diff --git a/node_modules/es-abstract/2022/RegExpExec.js b/node_modules/es-abstract/2022/RegExpExec.js
new file mode 100644
index 000000000..29fee1720
--- /dev/null
+++ b/node_modules/es-abstract/2022/RegExpExec.js
@@ -0,0 +1,32 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var regexExec = require('call-bind/callBound')('RegExp.prototype.exec');
+
+var Call = require('./Call');
+var Get = require('./Get');
+var IsCallable = require('./IsCallable');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-regexpexec
+
+module.exports = function RegExpExec(R, S) {
+ if (Type(R) !== 'Object') {
+ throw new $TypeError('Assertion failed: `R` must be an Object');
+ }
+ if (Type(S) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a String');
+ }
+ var exec = Get(R, 'exec');
+ if (IsCallable(exec)) {
+ var result = Call(exec, R, [S]);
+ if (result === null || Type(result) === 'Object') {
+ return result;
+ }
+ throw new $TypeError('"exec" method must return `null` or an Object');
+ }
+ return regexExec(R, S);
+};
diff --git a/node_modules/es-abstract/2022/RegExpHasFlag.js b/node_modules/es-abstract/2022/RegExpHasFlag.js
new file mode 100644
index 000000000..a7c800d9e
--- /dev/null
+++ b/node_modules/es-abstract/2022/RegExpHasFlag.js
@@ -0,0 +1,38 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $RegExpPrototype = GetIntrinsic('%RegExp.prototype%');
+
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+
+var $indexOf = callBound('String.prototype.indexOf');
+
+var hasRegExpMatcher = require('is-regex');
+var getFlags = require('regexp.prototype.flags');
+
+// https://262.ecma-international.org/13.0/#sec-regexphasflag
+
+module.exports = function RegExpHasFlag(R, codeUnit) {
+ if (Type(codeUnit) !== 'String' || codeUnit.length !== 1) {
+ throw new $TypeError('Assertion failed: `string` must be a code unit - a String of length 1');
+ }
+
+ if (Type(R) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(R) is not Object');
+ }
+
+ if (!hasRegExpMatcher(R)) { // step 2
+ if (SameValue(R, $RegExpPrototype)) {
+ return void undefined; // step 2.a
+ }
+ throw new $TypeError('`R` must be a RegExp object'); // step 2.b
+ }
+
+ var flags = getFlags(R); // step 3
+
+ return $indexOf(flags, codeUnit) > -1; // steps 4-5
+};
diff --git a/node_modules/es-abstract/2022/RequireObjectCoercible.js b/node_modules/es-abstract/2022/RequireObjectCoercible.js
new file mode 100644
index 000000000..9008359db
--- /dev/null
+++ b/node_modules/es-abstract/2022/RequireObjectCoercible.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('../5/CheckObjectCoercible');
diff --git a/node_modules/es-abstract/2022/SameValue.js b/node_modules/es-abstract/2022/SameValue.js
new file mode 100644
index 000000000..b73939b20
--- /dev/null
+++ b/node_modules/es-abstract/2022/SameValue.js
@@ -0,0 +1,13 @@
+'use strict';
+
+var $isNaN = require('../helpers/isNaN');
+
+// http://262.ecma-international.org/5.1/#sec-9.12
+
+module.exports = function SameValue(x, y) {
+ if (x === y) { // 0 === -0, but they are not identical.
+ if (x === 0) { return 1 / x === 1 / y; }
+ return true;
+ }
+ return $isNaN(x) && $isNaN(y);
+};
diff --git a/node_modules/es-abstract/2022/SameValueNonNumeric.js b/node_modules/es-abstract/2022/SameValueNonNumeric.js
new file mode 100644
index 000000000..04f6cbfbe
--- /dev/null
+++ b/node_modules/es-abstract/2022/SameValueNonNumeric.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/11.0/#sec-samevaluenonnumeric
+
+module.exports = function SameValueNonNumeric(x, y) {
+ var xType = Type(x);
+ if (xType === 'Number' || xType === 'BigInt') {
+ throw new $TypeError('Assertion failed: SameValueNonNumeric does not accept Number or BigInt values');
+ }
+ if (xType !== Type(y)) {
+ throw new $TypeError('SameValueNonNumeric requires two non-numeric values of the same type.');
+ }
+ return SameValue(x, y);
+};
diff --git a/node_modules/es-abstract/2022/SameValueZero.js b/node_modules/es-abstract/2022/SameValueZero.js
new file mode 100644
index 000000000..bf1a1486a
--- /dev/null
+++ b/node_modules/es-abstract/2022/SameValueZero.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var $isNaN = require('../helpers/isNaN');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-samevaluezero
+
+module.exports = function SameValueZero(x, y) {
+ return (x === y) || ($isNaN(x) && $isNaN(y));
+};
diff --git a/node_modules/es-abstract/2022/SecFromTime.js b/node_modules/es-abstract/2022/SecFromTime.js
new file mode 100644
index 000000000..fc2e44560
--- /dev/null
+++ b/node_modules/es-abstract/2022/SecFromTime.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var floor = require('./floor');
+var modulo = require('./modulo');
+
+var timeConstants = require('../helpers/timeConstants');
+var msPerSecond = timeConstants.msPerSecond;
+var SecondsPerMinute = timeConstants.SecondsPerMinute;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.10
+
+module.exports = function SecFromTime(t) {
+ return modulo(floor(t / msPerSecond), SecondsPerMinute);
+};
diff --git a/node_modules/es-abstract/2022/Set.js b/node_modules/es-abstract/2022/Set.js
new file mode 100644
index 000000000..097149887
--- /dev/null
+++ b/node_modules/es-abstract/2022/Set.js
@@ -0,0 +1,47 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+
+// IE 9 does not throw in strict mode when writability/configurability/extensibility is violated
+var noThrowOnStrictViolation = (function () {
+ try {
+ delete [].length;
+ return true;
+ } catch (e) {
+ return false;
+ }
+}());
+
+// https://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw
+
+module.exports = function Set(O, P, V, Throw) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: `O` must be an Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: `P` must be a Property Key');
+ }
+ if (Type(Throw) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `Throw` must be a Boolean');
+ }
+ if (Throw) {
+ O[P] = V; // eslint-disable-line no-param-reassign
+ if (noThrowOnStrictViolation && !SameValue(O[P], V)) {
+ throw new $TypeError('Attempted to assign to readonly property.');
+ }
+ return true;
+ }
+ try {
+ O[P] = V; // eslint-disable-line no-param-reassign
+ return noThrowOnStrictViolation ? SameValue(O[P], V) : true;
+ } catch (e) {
+ return false;
+ }
+
+};
diff --git a/node_modules/es-abstract/2022/SetFunctionLength.js b/node_modules/es-abstract/2022/SetFunctionLength.js
new file mode 100644
index 000000000..8c06b2423
--- /dev/null
+++ b/node_modules/es-abstract/2022/SetFunctionLength.js
@@ -0,0 +1,31 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var HasOwnProperty = require('./HasOwnProperty');
+var IsExtensible = require('./IsExtensible');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-setfunctionlength
+
+module.exports = function SetFunctionLength(F, length) {
+ if (typeof F !== 'function' || !IsExtensible(F) || HasOwnProperty(F, 'length')) {
+ throw new $TypeError('Assertion failed: `F` must be an extensible function and lack an own `length` property');
+ }
+ if (Type(length) !== 'Number') {
+ throw new $TypeError('Assertion failed: `length` must be a Number');
+ }
+ if (length !== Infinity && (!IsIntegralNumber(length) || length < 0)) {
+ throw new $TypeError('Assertion failed: `length` must be ∞, or an integer >= 0');
+ }
+ return DefinePropertyOrThrow(F, 'length', {
+ '[[Configurable]]': true,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': false
+ });
+};
diff --git a/node_modules/es-abstract/2022/SetFunctionName.js b/node_modules/es-abstract/2022/SetFunctionName.js
new file mode 100644
index 000000000..03ec2227c
--- /dev/null
+++ b/node_modules/es-abstract/2022/SetFunctionName.js
@@ -0,0 +1,44 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var has = require('has');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var getSymbolDescription = require('get-symbol-description');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var IsExtensible = require('./IsExtensible');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-setfunctionname
+
+module.exports = function SetFunctionName(F, name) {
+ if (typeof F !== 'function') {
+ throw new $TypeError('Assertion failed: `F` must be a function');
+ }
+ if (!IsExtensible(F) || has(F, 'name')) {
+ throw new $TypeError('Assertion failed: `F` must be extensible, and must not have a `name` own property');
+ }
+ var nameType = Type(name);
+ if (nameType !== 'Symbol' && nameType !== 'String') {
+ throw new $TypeError('Assertion failed: `name` must be a Symbol or a String');
+ }
+ if (nameType === 'Symbol') {
+ var description = getSymbolDescription(name);
+ // eslint-disable-next-line no-param-reassign
+ name = typeof description === 'undefined' ? '' : '[' + description + ']';
+ }
+ if (arguments.length > 2) {
+ var prefix = arguments[2];
+ // eslint-disable-next-line no-param-reassign
+ name = prefix + ' ' + name;
+ }
+ return DefinePropertyOrThrow(F, 'name', {
+ '[[Value]]': name,
+ '[[Writable]]': false,
+ '[[Enumerable]]': false,
+ '[[Configurable]]': true
+ });
+};
diff --git a/node_modules/es-abstract/2022/SetIntegrityLevel.js b/node_modules/es-abstract/2022/SetIntegrityLevel.js
new file mode 100644
index 000000000..546f3e74f
--- /dev/null
+++ b/node_modules/es-abstract/2022/SetIntegrityLevel.js
@@ -0,0 +1,57 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);
+var $gOPD = require('gopd');
+var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true);
+
+var forEach = require('../helpers/forEach');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-setintegritylevel
+
+module.exports = function SetIntegrityLevel(O, level) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (level !== 'sealed' && level !== 'frozen') {
+ throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`');
+ }
+ if (!$preventExtensions) {
+ throw new $SyntaxError('SetIntegrityLevel requires native `Object.preventExtensions` support');
+ }
+ var status = $preventExtensions(O);
+ if (!status) {
+ return false;
+ }
+ if (!$gOPN) {
+ throw new $SyntaxError('SetIntegrityLevel requires native `Object.getOwnPropertyNames` support');
+ }
+ var theKeys = $gOPN(O);
+ if (level === 'sealed') {
+ forEach(theKeys, function (k) {
+ DefinePropertyOrThrow(O, k, { configurable: false });
+ });
+ } else if (level === 'frozen') {
+ forEach(theKeys, function (k) {
+ var currentDesc = $gOPD(O, k);
+ if (typeof currentDesc !== 'undefined') {
+ var desc;
+ if (IsAccessorDescriptor(ToPropertyDescriptor(currentDesc))) {
+ desc = { configurable: false };
+ } else {
+ desc = { configurable: false, writable: false };
+ }
+ DefinePropertyOrThrow(O, k, desc);
+ }
+ });
+ }
+ return true;
+};
diff --git a/node_modules/es-abstract/2022/SortIndexedProperties.js b/node_modules/es-abstract/2022/SortIndexedProperties.js
new file mode 100644
index 000000000..3a6b68d93
--- /dev/null
+++ b/node_modules/es-abstract/2022/SortIndexedProperties.js
@@ -0,0 +1,64 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DeletePropertyOrThrow = require('./DeletePropertyOrThrow');
+var Get = require('./Get');
+var HasProperty = require('./HasProperty');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Set = require('./Set');
+var ToString = require('./ToString');
+var Type = require('./Type');
+
+var isAbstractClosure = require('../helpers/isAbstractClosure');
+
+var $push = callBound('Array.prototype.push');
+var $sort = callBound('Array.prototype.sort');
+
+// https://ecma-international.org/ecma-262/13.0/#sec-sortindexedproperties
+
+module.exports = function SortIndexedProperties(obj, len, SortCompare) {
+ if (Type(obj) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(obj) is not Object');
+ }
+ if (!IsIntegralNumber(len) || len < 0) {
+ throw new $TypeError('Assertion failed: `len` must be an integer >= 0');
+ }
+ if (!isAbstractClosure(SortCompare) || SortCompare.length !== 2) {
+ throw new $TypeError('Assertion failed: `SortCompare` must be an abstract closure taking 2 arguments');
+ }
+
+ var items = []; // step 1
+
+ var k = 0; // step 2
+
+ while (k < len) { // step 3
+ var Pk = ToString(k);
+ var kPresent = HasProperty(obj, Pk);
+ if (kPresent) {
+ var kValue = Get(obj, Pk);
+ $push(items, kValue);
+ }
+ k += 1;
+ }
+
+ var itemCount = items.length; // step 4
+
+ $sort(items, SortCompare); // step 5
+
+ var j = 0; // step 6
+
+ while (j < itemCount) { // step 7
+ Set(obj, ToString(j), items[j], true);
+ j += 1;
+ }
+
+ while (j < len) { // step 8
+ DeletePropertyOrThrow(obj, ToString(j));
+ j += 1;
+ }
+ return obj; // step 9
+};
diff --git a/node_modules/es-abstract/2022/SpeciesConstructor.js b/node_modules/es-abstract/2022/SpeciesConstructor.js
new file mode 100644
index 000000000..491eb9b87
--- /dev/null
+++ b/node_modules/es-abstract/2022/SpeciesConstructor.js
@@ -0,0 +1,32 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $species = GetIntrinsic('%Symbol.species%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsConstructor = require('./IsConstructor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-speciesconstructor
+
+module.exports = function SpeciesConstructor(O, defaultConstructor) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ var C = O.constructor;
+ if (typeof C === 'undefined') {
+ return defaultConstructor;
+ }
+ if (Type(C) !== 'Object') {
+ throw new $TypeError('O.constructor is not an Object');
+ }
+ var S = $species ? C[$species] : void 0;
+ if (S == null) {
+ return defaultConstructor;
+ }
+ if (IsConstructor(S)) {
+ return S;
+ }
+ throw new $TypeError('no constructor found');
+};
diff --git a/node_modules/es-abstract/2022/StringCreate.js b/node_modules/es-abstract/2022/StringCreate.js
new file mode 100644
index 000000000..bd02820f7
--- /dev/null
+++ b/node_modules/es-abstract/2022/StringCreate.js
@@ -0,0 +1,40 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Object = GetIntrinsic('%Object%');
+var $StringPrototype = GetIntrinsic('%String.prototype%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DefinePropertyOrThrow = require('./DefinePropertyOrThrow');
+var Type = require('./Type');
+
+var setProto = require('../helpers/setProto');
+
+// https://262.ecma-international.org/6.0/#sec-stringcreate
+
+module.exports = function StringCreate(value, prototype) {
+ if (Type(value) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a String');
+ }
+
+ var S = $Object(value);
+ if (prototype !== $StringPrototype) {
+ if (setProto) {
+ setProto(S, prototype);
+ } else {
+ throw new $SyntaxError('StringCreate: a `proto` argument that is not `String.prototype` is not supported in an environment that does not support setting the [[Prototype]]');
+ }
+ }
+
+ var length = value.length;
+ DefinePropertyOrThrow(S, 'length', {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': false,
+ '[[Value]]': length,
+ '[[Writable]]': false
+ });
+
+ return S;
+};
diff --git a/node_modules/es-abstract/2022/StringGetOwnProperty.js b/node_modules/es-abstract/2022/StringGetOwnProperty.js
new file mode 100644
index 000000000..ecffb0b77
--- /dev/null
+++ b/node_modules/es-abstract/2022/StringGetOwnProperty.js
@@ -0,0 +1,48 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var $charAt = callBound('String.prototype.charAt');
+var $stringToString = callBound('String.prototype.toString');
+
+var CanonicalNumericIndexString = require('./CanonicalNumericIndexString');
+var IsIntegralNumber = require('./IsIntegralNumber');
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+var isNegativeZero = require('is-negative-zero');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-stringgetownproperty
+
+module.exports = function StringGetOwnProperty(S, P) {
+ var str;
+ if (Type(S) === 'Object') {
+ try {
+ str = $stringToString(S);
+ } catch (e) { /**/ }
+ }
+ if (Type(str) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a boxed string object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+ if (Type(P) !== 'String') {
+ return void undefined;
+ }
+ var index = CanonicalNumericIndexString(P);
+ var len = str.length;
+ if (typeof index === 'undefined' || !IsIntegralNumber(index) || isNegativeZero(index) || index < 0 || len <= index) {
+ return void undefined;
+ }
+ var resultStr = $charAt(S, index);
+ return {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': true,
+ '[[Value]]': resultStr,
+ '[[Writable]]': false
+ };
+};
diff --git a/node_modules/es-abstract/2022/StringIndexOf.js b/node_modules/es-abstract/2022/StringIndexOf.js
new file mode 100644
index 000000000..371d5aa38
--- /dev/null
+++ b/node_modules/es-abstract/2022/StringIndexOf.js
@@ -0,0 +1,39 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+var $slice = callBound('String.prototype.slice');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-stringindexof
+
+module.exports = function StringIndexOf(string, searchValue, fromIndex) {
+ if (Type(string) !== 'String') {
+ throw new $TypeError('Assertion failed: `string` must be a String');
+ }
+ if (Type(searchValue) !== 'String') {
+ throw new $TypeError('Assertion failed: `searchValue` must be a String');
+ }
+ if (!IsIntegralNumber(fromIndex) || fromIndex < 0) {
+ throw new $TypeError('Assertion failed: `fromIndex` must be a non-negative integer');
+ }
+
+ var len = string.length;
+ if (searchValue === '' && fromIndex <= len) {
+ return fromIndex;
+ }
+
+ var searchLen = searchValue.length;
+ for (var i = fromIndex; i <= (len - searchLen); i += 1) {
+ var candidate = $slice(string, i, i + searchLen);
+ if (candidate === searchValue) {
+ return i;
+ }
+ }
+ return -1;
+};
diff --git a/node_modules/es-abstract/2022/StringPad.js b/node_modules/es-abstract/2022/StringPad.js
new file mode 100644
index 000000000..cdf69001b
--- /dev/null
+++ b/node_modules/es-abstract/2022/StringPad.js
@@ -0,0 +1,43 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var ToLength = require('./ToLength');
+var ToString = require('./ToString');
+
+var $strSlice = callBound('String.prototype.slice');
+
+// https://262.ecma-international.org/11.0/#sec-stringpad
+
+module.exports = function StringPad(O, maxLength, fillString, placement) {
+ if (placement !== 'start' && placement !== 'end') {
+ throw new $TypeError('Assertion failed: `placement` must be "start" or "end"');
+ }
+ var S = ToString(O);
+ var intMaxLength = ToLength(maxLength);
+ var stringLength = S.length;
+ if (intMaxLength <= stringLength) {
+ return S;
+ }
+ var filler = typeof fillString === 'undefined' ? ' ' : ToString(fillString);
+ if (filler === '') {
+ return S;
+ }
+ var fillLen = intMaxLength - stringLength;
+
+ // the String value consisting of repeated concatenations of filler truncated to length fillLen.
+ var truncatedStringFiller = '';
+ while (truncatedStringFiller.length < fillLen) {
+ truncatedStringFiller += filler;
+ }
+ truncatedStringFiller = $strSlice(truncatedStringFiller, 0, fillLen);
+
+ if (placement === 'start') {
+ return truncatedStringFiller + S;
+ }
+ return S + truncatedStringFiller;
+};
diff --git a/node_modules/es-abstract/2022/StringToBigInt.js b/node_modules/es-abstract/2022/StringToBigInt.js
new file mode 100644
index 000000000..bb113b4c6
--- /dev/null
+++ b/node_modules/es-abstract/2022/StringToBigInt.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $TypeError = GetIntrinsic('%TypeError%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+// https://262.ecma-international.org/14.0/#sec-stringtobigint
+
+module.exports = function StringToBigInt(argument) {
+ if (typeof argument !== 'string') {
+ throw new $TypeError('`argument` must be a string');
+ }
+ if (!$BigInt) {
+ throw new $SyntaxError('BigInts are not supported in this environment');
+ }
+ try {
+ return $BigInt(argument);
+ } catch (e) {
+ return void undefined;
+ }
+};
diff --git a/node_modules/es-abstract/2022/StringToCodePoints.js b/node_modules/es-abstract/2022/StringToCodePoints.js
new file mode 100644
index 000000000..336bd06fb
--- /dev/null
+++ b/node_modules/es-abstract/2022/StringToCodePoints.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $push = callBound('Array.prototype.push');
+
+var CodePointAt = require('./CodePointAt');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-stringtocodepoints
+
+module.exports = function StringToCodePoints(string) {
+ if (Type(string) !== 'String') {
+ throw new $TypeError('Assertion failed: `string` must be a String');
+ }
+ var codePoints = [];
+ var size = string.length;
+ var position = 0;
+ while (position < size) {
+ var cp = CodePointAt(string, position);
+ $push(codePoints, cp['[[CodePoint]]']);
+ position += cp['[[CodeUnitCount]]'];
+ }
+ return codePoints;
+};
diff --git a/node_modules/es-abstract/2022/StringToNumber.js b/node_modules/es-abstract/2022/StringToNumber.js
new file mode 100644
index 000000000..50ab5e6d1
--- /dev/null
+++ b/node_modules/es-abstract/2022/StringToNumber.js
@@ -0,0 +1,56 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Number = GetIntrinsic('%Number%');
+var $RegExp = GetIntrinsic('%RegExp%');
+var $TypeError = GetIntrinsic('%TypeError%');
+var $parseInteger = GetIntrinsic('%parseInt%');
+
+var callBound = require('call-bind/callBound');
+var regexTester = require('safe-regex-test');
+
+var $strSlice = callBound('String.prototype.slice');
+var isBinary = regexTester(/^0b[01]+$/i);
+var isOctal = regexTester(/^0o[0-7]+$/i);
+var isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i);
+var nonWS = ['\u0085', '\u200b', '\ufffe'].join('');
+var nonWSregex = new $RegExp('[' + nonWS + ']', 'g');
+var hasNonWS = regexTester(nonWSregex);
+
+// whitespace from: https://es5.github.io/#x15.5.4.20
+// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324
+var ws = [
+ '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003',
+ '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028',
+ '\u2029\uFEFF'
+].join('');
+var trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');
+var $replace = callBound('String.prototype.replace');
+var $trim = function (value) {
+ return $replace(value, trimRegex, '');
+};
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/13.0/#sec-stringtonumber
+
+module.exports = function StringToNumber(argument) {
+ if (Type(argument) !== 'String') {
+ throw new $TypeError('Assertion failed: `argument` is not a String');
+ }
+ if (isBinary(argument)) {
+ return $Number($parseInteger($strSlice(argument, 2), 2));
+ }
+ if (isOctal(argument)) {
+ return $Number($parseInteger($strSlice(argument, 2), 8));
+ }
+ if (hasNonWS(argument) || isInvalidHexLiteral(argument)) {
+ return NaN;
+ }
+ var trimmed = $trim(argument);
+ if (trimmed !== argument) {
+ return StringToNumber(trimmed);
+ }
+ return $Number(argument);
+};
diff --git a/node_modules/es-abstract/2022/SymbolDescriptiveString.js b/node_modules/es-abstract/2022/SymbolDescriptiveString.js
new file mode 100644
index 000000000..1efd1316b
--- /dev/null
+++ b/node_modules/es-abstract/2022/SymbolDescriptiveString.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $SymbolToString = callBound('Symbol.prototype.toString', true);
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-symboldescriptivestring
+
+module.exports = function SymbolDescriptiveString(sym) {
+ if (Type(sym) !== 'Symbol') {
+ throw new $TypeError('Assertion failed: `sym` must be a Symbol');
+ }
+ return $SymbolToString(sym);
+};
diff --git a/node_modules/es-abstract/2022/TestIntegrityLevel.js b/node_modules/es-abstract/2022/TestIntegrityLevel.js
new file mode 100644
index 000000000..7f95a6e1d
--- /dev/null
+++ b/node_modules/es-abstract/2022/TestIntegrityLevel.js
@@ -0,0 +1,42 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $gOPD = require('gopd');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var every = require('../helpers/every');
+var OwnPropertyKeys = require('../helpers/OwnPropertyKeys');
+
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsExtensible = require('./IsExtensible');
+var ToPropertyDescriptor = require('./ToPropertyDescriptor');
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-testintegritylevel
+
+module.exports = function TestIntegrityLevel(O, level) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: Type(O) is not Object');
+ }
+ if (level !== 'sealed' && level !== 'frozen') {
+ throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`');
+ }
+ var status = IsExtensible(O);
+ if (status) {
+ return false;
+ }
+ var theKeys = OwnPropertyKeys(O);
+ return theKeys.length === 0 || every(theKeys, function (k) {
+ var currentDesc = $gOPD(O, k);
+ if (typeof currentDesc !== 'undefined') {
+ if (currentDesc.configurable) {
+ return false;
+ }
+ if (level === 'frozen' && IsDataDescriptor(ToPropertyDescriptor(currentDesc)) && currentDesc.writable) {
+ return false;
+ }
+ }
+ return true;
+ });
+};
diff --git a/node_modules/es-abstract/2022/ThrowCompletion.js b/node_modules/es-abstract/2022/ThrowCompletion.js
new file mode 100644
index 000000000..b7d388a35
--- /dev/null
+++ b/node_modules/es-abstract/2022/ThrowCompletion.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var CompletionRecord = require('./CompletionRecord');
+
+// https://262.ecma-international.org/9.0/#sec-throwcompletion
+
+module.exports = function ThrowCompletion(argument) {
+ return new CompletionRecord('throw', argument);
+};
diff --git a/node_modules/es-abstract/2022/TimeClip.js b/node_modules/es-abstract/2022/TimeClip.js
new file mode 100644
index 000000000..e416cab4b
--- /dev/null
+++ b/node_modules/es-abstract/2022/TimeClip.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Date = GetIntrinsic('%Date%');
+var $Number = GetIntrinsic('%Number%');
+
+var $isFinite = require('../helpers/isFinite');
+
+var abs = require('./abs');
+var ToNumber = require('./ToNumber');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.14
+
+module.exports = function TimeClip(time) {
+ if (!$isFinite(time) || abs(time) > 8.64e15) {
+ return NaN;
+ }
+ return $Number(new $Date(ToNumber(time)));
+};
+
diff --git a/node_modules/es-abstract/2022/TimeFromYear.js b/node_modules/es-abstract/2022/TimeFromYear.js
new file mode 100644
index 000000000..f3518a41a
--- /dev/null
+++ b/node_modules/es-abstract/2022/TimeFromYear.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var msPerDay = require('../helpers/timeConstants').msPerDay;
+
+var DayFromYear = require('./DayFromYear');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.3
+
+module.exports = function TimeFromYear(y) {
+ return msPerDay * DayFromYear(y);
+};
diff --git a/node_modules/es-abstract/2022/TimeString.js b/node_modules/es-abstract/2022/TimeString.js
new file mode 100644
index 000000000..051c4728e
--- /dev/null
+++ b/node_modules/es-abstract/2022/TimeString.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var $isNaN = require('../helpers/isNaN');
+var padTimeComponent = require('../helpers/padTimeComponent');
+
+var HourFromTime = require('./HourFromTime');
+var MinFromTime = require('./MinFromTime');
+var SecFromTime = require('./SecFromTime');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/9.0/#sec-timestring
+
+module.exports = function TimeString(tv) {
+ if (Type(tv) !== 'Number' || $isNaN(tv)) {
+ throw new $TypeError('Assertion failed: `tv` must be a non-NaN Number');
+ }
+ var hour = HourFromTime(tv);
+ var minute = MinFromTime(tv);
+ var second = SecFromTime(tv);
+ return padTimeComponent(hour) + ':' + padTimeComponent(minute) + ':' + padTimeComponent(second) + '\x20GMT';
+};
diff --git a/node_modules/es-abstract/2022/TimeWithinDay.js b/node_modules/es-abstract/2022/TimeWithinDay.js
new file mode 100644
index 000000000..2bba83386
--- /dev/null
+++ b/node_modules/es-abstract/2022/TimeWithinDay.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var modulo = require('./modulo');
+
+var msPerDay = require('../helpers/timeConstants').msPerDay;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.2
+
+module.exports = function TimeWithinDay(t) {
+ return modulo(t, msPerDay);
+};
+
diff --git a/node_modules/es-abstract/2022/ToBigInt.js b/node_modules/es-abstract/2022/ToBigInt.js
new file mode 100644
index 000000000..aa24d7b71
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToBigInt.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $asIntN = GetIntrinsic('%BigInt.asIntN%', true);
+var $Number = GetIntrinsic('%Number%');
+var $SyntaxError = GetIntrinsic('%SyntaxError%');
+
+var ToPrimitive = require('./ToPrimitive');
+
+// https://262.ecma-international.org/11.0/#sec-tobigint
+
+module.exports = function ToBigInt(argument) {
+ if (!$BigInt) {
+ throw new $SyntaxError('BigInts are not supported in this environment');
+ }
+
+ var prim = ToPrimitive(argument, $Number);
+
+ if (typeof prim === 'number') {
+ return $asIntN(0, prim);
+ }
+ return $BigInt(prim);
+};
diff --git a/node_modules/es-abstract/2022/ToBigInt64.js b/node_modules/es-abstract/2022/ToBigInt64.js
new file mode 100644
index 000000000..65c1c55d9
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToBigInt64.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $pow = GetIntrinsic('%Math.pow%');
+
+var ToBigInt = require('./ToBigInt');
+var BigIntRemainder = require('./BigInt/remainder');
+
+var modBigInt = require('../helpers/modBigInt');
+
+// BigInt(2**63), but node v10.4-v10.8 have a bug where you can't `BigInt(x)` anything larger than MAX_SAFE_INTEGER
+var twoSixtyThree = $BigInt && (BigInt($pow(2, 32)) * BigInt($pow(2, 31)));
+
+// BigInt(2**64), but node v10.4-v10.8 have a bug where you can't `BigInt(x)` anything larger than MAX_SAFE_INTEGER
+var twoSixtyFour = $BigInt && (BigInt($pow(2, 32)) * BigInt($pow(2, 32)));
+
+// https://262.ecma-international.org/11.0/#sec-tobigint64
+
+module.exports = function ToBigInt64(argument) {
+ var n = ToBigInt(argument);
+ var int64bit = modBigInt(BigIntRemainder, n, twoSixtyFour);
+ return int64bit >= twoSixtyThree ? int64bit - twoSixtyFour : int64bit;
+};
diff --git a/node_modules/es-abstract/2022/ToBigUint64.js b/node_modules/es-abstract/2022/ToBigUint64.js
new file mode 100644
index 000000000..ff68236a8
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToBigUint64.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $BigInt = GetIntrinsic('%BigInt%', true);
+var $pow = GetIntrinsic('%Math.pow%');
+
+var ToBigInt = require('./ToBigInt');
+var BigIntRemainder = require('./BigInt/remainder');
+
+var modBigInt = require('../helpers/modBigInt');
+
+// BigInt(2**64), but node v10.4-v10.8 have a bug where you can't `BigInt(x)` anything larger than MAX_SAFE_INTEGER
+var twoSixtyFour = $BigInt && (BigInt($pow(2, 32)) * BigInt($pow(2, 32)));
+
+// https://262.ecma-international.org/11.0/#sec-tobiguint64
+
+module.exports = function ToBigUint64(argument) {
+ var n = ToBigInt(argument);
+ var int64bit = modBigInt(BigIntRemainder, n, twoSixtyFour);
+ return int64bit;
+};
diff --git a/node_modules/es-abstract/2022/ToBoolean.js b/node_modules/es-abstract/2022/ToBoolean.js
new file mode 100644
index 000000000..466404bf9
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToBoolean.js
@@ -0,0 +1,5 @@
+'use strict';
+
+// http://262.ecma-international.org/5.1/#sec-9.2
+
+module.exports = function ToBoolean(value) { return !!value; };
diff --git a/node_modules/es-abstract/2022/ToDateString.js b/node_modules/es-abstract/2022/ToDateString.js
new file mode 100644
index 000000000..e636a9ba6
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToDateString.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Date = GetIntrinsic('%Date%');
+
+var $isNaN = require('../helpers/isNaN');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-todatestring
+
+module.exports = function ToDateString(tv) {
+ if (Type(tv) !== 'Number') {
+ throw new $TypeError('Assertion failed: `tv` must be a Number');
+ }
+ if ($isNaN(tv)) {
+ return 'Invalid Date';
+ }
+ return $Date(tv);
+};
diff --git a/node_modules/es-abstract/2022/ToIndex.js b/node_modules/es-abstract/2022/ToIndex.js
new file mode 100644
index 000000000..cc747e225
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToIndex.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RangeError = GetIntrinsic('%RangeError%');
+
+var ToIntegerOrInfinity = require('./ToIntegerOrInfinity');
+var ToLength = require('./ToLength');
+var SameValue = require('./SameValue');
+
+// https://www.ecma-international.org/ecma-262/8.0/#sec-toindex
+
+module.exports = function ToIndex(value) {
+ if (typeof value === 'undefined') {
+ return 0;
+ }
+ var integerIndex = ToIntegerOrInfinity(value);
+ if (integerIndex < 0) {
+ throw new $RangeError('index must be >= 0');
+ }
+ var index = ToLength(integerIndex);
+ if (!SameValue(integerIndex, index)) {
+ throw new $RangeError('index must be >= 0 and < 2 ** 53 - 1');
+ }
+ return index;
+};
diff --git a/node_modules/es-abstract/2022/ToInt16.js b/node_modules/es-abstract/2022/ToInt16.js
new file mode 100644
index 000000000..cb8e7934b
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToInt16.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var ToUint16 = require('./ToUint16');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-toint16
+
+module.exports = function ToInt16(argument) {
+ var int16bit = ToUint16(argument);
+ return int16bit >= 0x8000 ? int16bit - 0x10000 : int16bit;
+};
diff --git a/node_modules/es-abstract/2022/ToInt32.js b/node_modules/es-abstract/2022/ToInt32.js
new file mode 100644
index 000000000..b879ccc47
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToInt32.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ToNumber = require('./ToNumber');
+
+// http://262.ecma-international.org/5.1/#sec-9.5
+
+module.exports = function ToInt32(x) {
+ return ToNumber(x) >> 0;
+};
diff --git a/node_modules/es-abstract/2022/ToInt8.js b/node_modules/es-abstract/2022/ToInt8.js
new file mode 100644
index 000000000..bc452d826
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToInt8.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var ToUint8 = require('./ToUint8');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-toint8
+
+module.exports = function ToInt8(argument) {
+ var int8bit = ToUint8(argument);
+ return int8bit >= 0x80 ? int8bit - 0x100 : int8bit;
+};
diff --git a/node_modules/es-abstract/2022/ToIntegerOrInfinity.js b/node_modules/es-abstract/2022/ToIntegerOrInfinity.js
new file mode 100644
index 000000000..5f55e1ea0
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToIntegerOrInfinity.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var abs = require('./abs');
+var floor = require('./floor');
+var ToNumber = require('./ToNumber');
+
+var $isNaN = require('../helpers/isNaN');
+var $isFinite = require('../helpers/isFinite');
+var $sign = require('../helpers/sign');
+
+// https://262.ecma-international.org/12.0/#sec-tointegerorinfinity
+
+module.exports = function ToIntegerOrInfinity(value) {
+ var number = ToNumber(value);
+ if ($isNaN(number) || number === 0) { return 0; }
+ if (!$isFinite(number)) { return number; }
+ var integer = floor(abs(number));
+ if (integer === 0) { return 0; }
+ return $sign(number) * integer;
+};
diff --git a/node_modules/es-abstract/2022/ToLength.js b/node_modules/es-abstract/2022/ToLength.js
new file mode 100644
index 000000000..0468c3e71
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToLength.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');
+
+var ToIntegerOrInfinity = require('./ToIntegerOrInfinity');
+
+module.exports = function ToLength(argument) {
+ var len = ToIntegerOrInfinity(argument);
+ if (len <= 0) { return 0; } // includes converting -0 to +0
+ if (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; }
+ return len;
+};
diff --git a/node_modules/es-abstract/2022/ToNumber.js b/node_modules/es-abstract/2022/ToNumber.js
new file mode 100644
index 000000000..ebee32622
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToNumber.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $Number = GetIntrinsic('%Number%');
+var isPrimitive = require('../helpers/isPrimitive');
+
+var ToPrimitive = require('./ToPrimitive');
+var StringToNumber = require('./StringToNumber');
+
+// https://ecma-international.org/ecma-262/13.0/#sec-tonumber
+
+module.exports = function ToNumber(argument) {
+ var value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number);
+ if (typeof value === 'symbol') {
+ throw new $TypeError('Cannot convert a Symbol value to a number');
+ }
+ if (typeof value === 'bigint') {
+ throw new $TypeError('Conversion from \'BigInt\' to \'number\' is not allowed.');
+ }
+ if (typeof value === 'string') {
+ return StringToNumber(value);
+ }
+ return $Number(value);
+};
diff --git a/node_modules/es-abstract/2022/ToNumeric.js b/node_modules/es-abstract/2022/ToNumeric.js
new file mode 100644
index 000000000..c18776094
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToNumeric.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Number = GetIntrinsic('%Number%');
+
+var isPrimitive = require('../helpers/isPrimitive');
+
+var ToPrimitive = require('./ToPrimitive');
+var ToNumber = require('./ToNumber');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/6.0/#sec-tonumber
+
+module.exports = function ToNumeric(argument) {
+ var primValue = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number);
+ if (Type(primValue) === 'BigInt') {
+ return primValue;
+ }
+ return ToNumber(primValue);
+};
diff --git a/node_modules/es-abstract/2022/ToObject.js b/node_modules/es-abstract/2022/ToObject.js
new file mode 100644
index 000000000..cb26bac06
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToObject.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Object = GetIntrinsic('%Object%');
+
+var RequireObjectCoercible = require('./RequireObjectCoercible');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-toobject
+
+module.exports = function ToObject(value) {
+ RequireObjectCoercible(value);
+ return $Object(value);
+};
diff --git a/node_modules/es-abstract/2022/ToPrimitive.js b/node_modules/es-abstract/2022/ToPrimitive.js
new file mode 100644
index 000000000..0fbe9b807
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToPrimitive.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var toPrimitive = require('es-to-primitive/es2015');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-toprimitive
+
+module.exports = function ToPrimitive(input) {
+ if (arguments.length > 1) {
+ return toPrimitive(input, arguments[1]);
+ }
+ return toPrimitive(input);
+};
diff --git a/node_modules/es-abstract/2022/ToPropertyDescriptor.js b/node_modules/es-abstract/2022/ToPropertyDescriptor.js
new file mode 100644
index 000000000..53db87450
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToPropertyDescriptor.js
@@ -0,0 +1,52 @@
+'use strict';
+
+var has = require('has');
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var Type = require('./Type');
+var ToBoolean = require('./ToBoolean');
+var IsCallable = require('./IsCallable');
+
+// https://262.ecma-international.org/5.1/#sec-8.10.5
+
+module.exports = function ToPropertyDescriptor(Obj) {
+ if (Type(Obj) !== 'Object') {
+ throw new $TypeError('ToPropertyDescriptor requires an object');
+ }
+
+ var desc = {};
+ if (has(Obj, 'enumerable')) {
+ desc['[[Enumerable]]'] = ToBoolean(Obj.enumerable);
+ }
+ if (has(Obj, 'configurable')) {
+ desc['[[Configurable]]'] = ToBoolean(Obj.configurable);
+ }
+ if (has(Obj, 'value')) {
+ desc['[[Value]]'] = Obj.value;
+ }
+ if (has(Obj, 'writable')) {
+ desc['[[Writable]]'] = ToBoolean(Obj.writable);
+ }
+ if (has(Obj, 'get')) {
+ var getter = Obj.get;
+ if (typeof getter !== 'undefined' && !IsCallable(getter)) {
+ throw new $TypeError('getter must be a function');
+ }
+ desc['[[Get]]'] = getter;
+ }
+ if (has(Obj, 'set')) {
+ var setter = Obj.set;
+ if (typeof setter !== 'undefined' && !IsCallable(setter)) {
+ throw new $TypeError('setter must be a function');
+ }
+ desc['[[Set]]'] = setter;
+ }
+
+ if ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) {
+ throw new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');
+ }
+ return desc;
+};
diff --git a/node_modules/es-abstract/2022/ToPropertyKey.js b/node_modules/es-abstract/2022/ToPropertyKey.js
new file mode 100644
index 000000000..fc1bf7d86
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToPropertyKey.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $String = GetIntrinsic('%String%');
+
+var ToPrimitive = require('./ToPrimitive');
+var ToString = require('./ToString');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-topropertykey
+
+module.exports = function ToPropertyKey(argument) {
+ var key = ToPrimitive(argument, $String);
+ return typeof key === 'symbol' ? key : ToString(key);
+};
diff --git a/node_modules/es-abstract/2022/ToString.js b/node_modules/es-abstract/2022/ToString.js
new file mode 100644
index 000000000..4d494e1e2
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToString.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $String = GetIntrinsic('%String%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-tostring
+
+module.exports = function ToString(argument) {
+ if (typeof argument === 'symbol') {
+ throw new $TypeError('Cannot convert a Symbol value to a string');
+ }
+ return $String(argument);
+};
diff --git a/node_modules/es-abstract/2022/ToUint16.js b/node_modules/es-abstract/2022/ToUint16.js
new file mode 100644
index 000000000..633ca8464
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToUint16.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var abs = require('./abs');
+var floor = require('./floor');
+var modulo = require('./modulo');
+var ToNumber = require('./ToNumber');
+
+var $isNaN = require('../helpers/isNaN');
+var $isFinite = require('../helpers/isFinite');
+var $sign = require('../helpers/sign');
+
+// http://262.ecma-international.org/5.1/#sec-9.7
+
+module.exports = function ToUint16(value) {
+ var number = ToNumber(value);
+ if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }
+ var posInt = $sign(number) * floor(abs(number));
+ return modulo(posInt, 0x10000);
+};
diff --git a/node_modules/es-abstract/2022/ToUint32.js b/node_modules/es-abstract/2022/ToUint32.js
new file mode 100644
index 000000000..2a8e9dd6a
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToUint32.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var ToNumber = require('./ToNumber');
+
+// http://262.ecma-international.org/5.1/#sec-9.6
+
+module.exports = function ToUint32(x) {
+ return ToNumber(x) >>> 0;
+};
diff --git a/node_modules/es-abstract/2022/ToUint8.js b/node_modules/es-abstract/2022/ToUint8.js
new file mode 100644
index 000000000..2dfd97cb3
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToUint8.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var ToNumber = require('./ToNumber');
+
+var $isNaN = require('../helpers/isNaN');
+var $isFinite = require('../helpers/isFinite');
+var $sign = require('../helpers/sign');
+
+var abs = require('./abs');
+var floor = require('./floor');
+var modulo = require('./modulo');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-touint8
+
+module.exports = function ToUint8(argument) {
+ var number = ToNumber(argument);
+ if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }
+ var posInt = $sign(number) * floor(abs(number));
+ return modulo(posInt, 0x100);
+};
diff --git a/node_modules/es-abstract/2022/ToUint8Clamp.js b/node_modules/es-abstract/2022/ToUint8Clamp.js
new file mode 100644
index 000000000..b0b8ce8ed
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToUint8Clamp.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var ToNumber = require('./ToNumber');
+var floor = require('./floor');
+
+var $isNaN = require('../helpers/isNaN');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-touint8clamp
+
+module.exports = function ToUint8Clamp(argument) {
+ var number = ToNumber(argument);
+ if ($isNaN(number) || number <= 0) { return 0; }
+ if (number >= 0xFF) { return 0xFF; }
+ var f = floor(argument);
+ if (f + 0.5 < number) { return f + 1; }
+ if (number < f + 0.5) { return f; }
+ if (f % 2 !== 0) { return f + 1; }
+ return f;
+};
diff --git a/node_modules/es-abstract/2022/ToZeroPaddedDecimalString.js b/node_modules/es-abstract/2022/ToZeroPaddedDecimalString.js
new file mode 100644
index 000000000..cc141fd94
--- /dev/null
+++ b/node_modules/es-abstract/2022/ToZeroPaddedDecimalString.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $String = GetIntrinsic('%String%');
+var $RangeError = GetIntrinsic('%RangeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+var StringPad = require('./StringPad');
+
+// https://ecma-international.org/ecma-262/13.0/#sec-tozeropaddeddecimalstring
+
+module.exports = function ToZeroPaddedDecimalString(n, minLength) {
+ if (!IsIntegralNumber(n) || n < 0) {
+ throw new $RangeError('Assertion failed: `q` must be a non-negative integer');
+ }
+ var S = $String(n);
+ return StringPad(S, minLength, '0', 'start');
+};
diff --git a/node_modules/es-abstract/2022/TrimString.js b/node_modules/es-abstract/2022/TrimString.js
new file mode 100644
index 000000000..113dcf82b
--- /dev/null
+++ b/node_modules/es-abstract/2022/TrimString.js
@@ -0,0 +1,29 @@
+'use strict';
+
+var trimStart = require('string.prototype.trimstart');
+var trimEnd = require('string.prototype.trimend');
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var RequireObjectCoercible = require('./RequireObjectCoercible');
+var ToString = require('./ToString');
+
+// https://262.ecma-international.org/10.0/#sec-trimstring
+
+module.exports = function TrimString(string, where) {
+ var str = RequireObjectCoercible(string);
+ var S = ToString(str);
+ var T;
+ if (where === 'start') {
+ T = trimStart(S);
+ } else if (where === 'end') {
+ T = trimEnd(S);
+ } else if (where === 'start+end') {
+ T = trimStart(trimEnd(S));
+ } else {
+ throw new $TypeError('Assertion failed: invalid `where` value; must be "start", "end", or "start+end"');
+ }
+ return T;
+};
diff --git a/node_modules/es-abstract/2022/Type.js b/node_modules/es-abstract/2022/Type.js
new file mode 100644
index 000000000..555ca74ea
--- /dev/null
+++ b/node_modules/es-abstract/2022/Type.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var ES5Type = require('../5/Type');
+
+// https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values
+
+module.exports = function Type(x) {
+ if (typeof x === 'symbol') {
+ return 'Symbol';
+ }
+ if (typeof x === 'bigint') {
+ return 'BigInt';
+ }
+ return ES5Type(x);
+};
diff --git a/node_modules/es-abstract/2022/TypedArrayElementSize.js b/node_modules/es-abstract/2022/TypedArrayElementSize.js
new file mode 100644
index 000000000..fe9536553
--- /dev/null
+++ b/node_modules/es-abstract/2022/TypedArrayElementSize.js
@@ -0,0 +1,39 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+
+var whichTypedArray = require('which-typed-array');
+
+// https://262.ecma-international.org/13.0/#sec-typedarrayelementsize
+
+var table71 = {
+ __proto__: null,
+ $Int8Array: 1,
+ $Uint8Array: 1,
+ $Uint8ClampedArray: 1,
+ $Int16Array: 2,
+ $Uint16Array: 2,
+ $Int32Array: 4,
+ $Uint32Array: 4,
+ $BigInt64Array: 8,
+ $BigUint64Array: 8,
+ $Float32Array: 4,
+ $Float64Array: 8
+};
+
+module.exports = function TypedArrayElementSize(O) {
+ var type = whichTypedArray(O);
+ if (type === false) {
+ throw new $TypeError('Assertion failed: `O` must be a TypedArray');
+ }
+ var size = table71['$' + type];
+ if (!IsIntegralNumber(size) || size < 0) {
+ throw new $TypeError('Assertion failed: Unknown TypedArray type `' + type + '`');
+ }
+
+ return size;
+};
diff --git a/node_modules/es-abstract/2022/TypedArrayElementType.js b/node_modules/es-abstract/2022/TypedArrayElementType.js
new file mode 100644
index 000000000..919963e6b
--- /dev/null
+++ b/node_modules/es-abstract/2022/TypedArrayElementType.js
@@ -0,0 +1,37 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var whichTypedArray = require('which-typed-array');
+
+// https://262.ecma-international.org/13.0/#sec-typedarrayelementtype
+
+var table71 = {
+ __proto__: null,
+ $Int8Array: 'Int8',
+ $Uint8Array: 'Uint8',
+ $Uint8ClampedArray: 'Uint8C',
+ $Int16Array: 'Int16',
+ $Uint16Array: 'Uint16',
+ $Int32Array: 'Int32',
+ $Uint32Array: 'Uint32',
+ $BigInt64Array: 'BigInt64',
+ $BigUint64Array: 'BigUint64',
+ $Float32Array: 'Float32',
+ $Float64Array: 'Float64'
+};
+
+module.exports = function TypedArrayElementType(O) {
+ var type = whichTypedArray(O);
+ if (type === false) {
+ throw new $TypeError('Assertion failed: `O` must be a TypedArray');
+ }
+ var result = table71['$' + type];
+ if (typeof result !== 'string') {
+ throw new $TypeError('Assertion failed: Unknown TypedArray type `' + type + '`');
+ }
+
+ return result;
+};
diff --git a/node_modules/es-abstract/2022/UTF16EncodeCodePoint.js b/node_modules/es-abstract/2022/UTF16EncodeCodePoint.js
new file mode 100644
index 000000000..0c7fb11e0
--- /dev/null
+++ b/node_modules/es-abstract/2022/UTF16EncodeCodePoint.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+
+var floor = require('./floor');
+var modulo = require('./modulo');
+
+var isCodePoint = require('../helpers/isCodePoint');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-utf16encoding
+
+module.exports = function UTF16EncodeCodePoint(cp) {
+ if (!isCodePoint(cp)) {
+ throw new $TypeError('Assertion failed: `cp` must be >= 0 and <= 0x10FFFF');
+ }
+ if (cp <= 65535) {
+ return $fromCharCode(cp);
+ }
+ var cu1 = $fromCharCode(floor((cp - 65536) / 1024) + 0xD800);
+ var cu2 = $fromCharCode(modulo(cp - 65536, 1024) + 0xDC00);
+ return cu1 + cu2;
+};
diff --git a/node_modules/es-abstract/2022/UTF16SurrogatePairToCodePoint.js b/node_modules/es-abstract/2022/UTF16SurrogatePairToCodePoint.js
new file mode 100644
index 000000000..6a247a239
--- /dev/null
+++ b/node_modules/es-abstract/2022/UTF16SurrogatePairToCodePoint.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $fromCharCode = GetIntrinsic('%String.fromCharCode%');
+
+var isLeadingSurrogate = require('../helpers/isLeadingSurrogate');
+var isTrailingSurrogate = require('../helpers/isTrailingSurrogate');
+
+// https://tc39.es/ecma262/2020/#sec-utf16decodesurrogatepair
+
+module.exports = function UTF16SurrogatePairToCodePoint(lead, trail) {
+ if (!isLeadingSurrogate(lead) || !isTrailingSurrogate(trail)) {
+ throw new $TypeError('Assertion failed: `lead` must be a leading surrogate char code, and `trail` must be a trailing surrogate char code');
+ }
+ // var cp = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;
+ return $fromCharCode(lead) + $fromCharCode(trail);
+};
diff --git a/node_modules/es-abstract/2022/UnicodeEscape.js b/node_modules/es-abstract/2022/UnicodeEscape.js
new file mode 100644
index 000000000..b708c90df
--- /dev/null
+++ b/node_modules/es-abstract/2022/UnicodeEscape.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+var $charCodeAt = callBound('String.prototype.charCodeAt');
+var $numberToString = callBound('Number.prototype.toString');
+var $toLowerCase = callBound('String.prototype.toLowerCase');
+
+var StringPad = require('./StringPad');
+
+// https://262.ecma-international.org/11.0/#sec-unicodeescape
+
+module.exports = function UnicodeEscape(C) {
+ if (typeof C !== 'string' || C.length !== 1) {
+ throw new $TypeError('Assertion failed: `C` must be a single code unit');
+ }
+ var n = $charCodeAt(C, 0);
+ if (n > 0xFFFF) {
+ throw new $TypeError('`Assertion failed: numeric value of `C` must be <= 0xFFFF');
+ }
+
+ return '\\u' + StringPad($toLowerCase($numberToString(n, 16)), 4, '0', 'start');
+};
diff --git a/node_modules/es-abstract/2022/ValidateAndApplyPropertyDescriptor.js b/node_modules/es-abstract/2022/ValidateAndApplyPropertyDescriptor.js
new file mode 100644
index 000000000..669d6b592
--- /dev/null
+++ b/node_modules/es-abstract/2022/ValidateAndApplyPropertyDescriptor.js
@@ -0,0 +1,177 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var DefineOwnProperty = require('../helpers/DefineOwnProperty');
+var isFullyPopulatedPropertyDescriptor = require('../helpers/isFullyPopulatedPropertyDescriptor');
+var isPropertyDescriptor = require('../helpers/isPropertyDescriptor');
+
+var FromPropertyDescriptor = require('./FromPropertyDescriptor');
+var IsAccessorDescriptor = require('./IsAccessorDescriptor');
+var IsDataDescriptor = require('./IsDataDescriptor');
+var IsGenericDescriptor = require('./IsGenericDescriptor');
+var IsPropertyKey = require('./IsPropertyKey');
+var SameValue = require('./SameValue');
+var Type = require('./Type');
+
+// https://262.ecma-international.org/13.0/#sec-validateandapplypropertydescriptor
+
+// see https://github.com/tc39/ecma262/pull/2468 for ES2022 changes
+
+// eslint-disable-next-line max-lines-per-function, max-statements, max-params
+module.exports = function ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current) {
+ var oType = Type(O);
+ if (oType !== 'Undefined' && oType !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be undefined or an Object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: P must be a Property Key');
+ }
+ if (Type(extensible) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: extensible must be a Boolean');
+ }
+ if (!isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, Desc)) {
+ throw new $TypeError('Assertion failed: Desc must be a Property Descriptor');
+ }
+ if (Type(current) !== 'Undefined' && !isPropertyDescriptor({
+ Type: Type,
+ IsDataDescriptor: IsDataDescriptor,
+ IsAccessorDescriptor: IsAccessorDescriptor
+ }, current)) {
+ throw new $TypeError('Assertion failed: current must be a Property Descriptor, or undefined');
+ }
+
+ if (Type(current) === 'Undefined') { // step 2
+ if (!extensible) {
+ return false; // step 2.a
+ }
+ if (oType === 'Undefined') {
+ return true; // step 2.b
+ }
+ if (IsAccessorDescriptor(Desc)) { // step 2.c
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ Desc
+ );
+ }
+ // step 2.d
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ {
+ '[[Configurable]]': !!Desc['[[Configurable]]'],
+ '[[Enumerable]]': !!Desc['[[Enumerable]]'],
+ '[[Value]]': Desc['[[Value]]'],
+ '[[Writable]]': !!Desc['[[Writable]]']
+ }
+ );
+ }
+
+ // 3. Assert: current is a fully populated Property Descriptor.
+ if (!isFullyPopulatedPropertyDescriptor({
+ IsAccessorDescriptor: IsAccessorDescriptor,
+ IsDataDescriptor: IsDataDescriptor
+ }, current)) {
+ throw new $TypeError('`current`, when present, must be a fully populated and valid Property Descriptor');
+ }
+
+ // 4. If every field in Desc is absent, return true.
+ // this can't really match the assertion that it's a Property Descriptor in our JS implementation
+
+ // 5. If current.[[Configurable]] is false, then
+ if (!current['[[Configurable]]']) {
+ if ('[[Configurable]]' in Desc && Desc['[[Configurable]]']) {
+ // step 5.a
+ return false;
+ }
+ if ('[[Enumerable]]' in Desc && !SameValue(Desc['[[Enumerable]]'], current['[[Enumerable]]'])) {
+ // step 5.b
+ return false;
+ }
+ if (!IsGenericDescriptor(Desc) && !SameValue(IsAccessorDescriptor(Desc), IsAccessorDescriptor(current))) {
+ // step 5.c
+ return false;
+ }
+ if (IsAccessorDescriptor(current)) { // step 5.d
+ if ('[[Get]]' in Desc && !SameValue(Desc['[[Get]]'], current['[[Get]]'])) {
+ return false;
+ }
+ if ('[[Set]]' in Desc && !SameValue(Desc['[[Set]]'], current['[[Set]]'])) {
+ return false;
+ }
+ } else if (!current['[[Writable]]']) { // step 5.e
+ if ('[[Writable]]' in Desc && Desc['[[Writable]]']) {
+ return false;
+ }
+ if ('[[Value]]' in Desc && !SameValue(Desc['[[Value]]'], current['[[Value]]'])) {
+ return false;
+ }
+ }
+ }
+
+ // 6. If O is not undefined, then
+ if (oType !== 'Undefined') {
+ var configurable;
+ var enumerable;
+ if (IsDataDescriptor(current) && IsAccessorDescriptor(Desc)) { // step 6.a
+ configurable = ('[[Configurable]]' in Desc ? Desc : current)['[[Configurable]]'];
+ enumerable = ('[[Enumerable]]' in Desc ? Desc : current)['[[Enumerable]]'];
+ // Replace the property named P of object O with an accessor property having [[Configurable]] and [[Enumerable]] attributes as described by current and each other attribute set to its default value.
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ {
+ '[[Configurable]]': !!configurable,
+ '[[Enumerable]]': !!enumerable,
+ '[[Get]]': ('[[Get]]' in Desc ? Desc : current)['[[Get]]'],
+ '[[Set]]': ('[[Set]]' in Desc ? Desc : current)['[[Set]]']
+ }
+ );
+ } else if (IsAccessorDescriptor(current) && IsDataDescriptor(Desc)) {
+ configurable = ('[[Configurable]]' in Desc ? Desc : current)['[[Configurable]]'];
+ enumerable = ('[[Enumerable]]' in Desc ? Desc : current)['[[Enumerable]]'];
+ // i. Replace the property named P of object O with a data property having [[Configurable]] and [[Enumerable]] attributes as described by current and each other attribute set to its default value.
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ {
+ '[[Configurable]]': !!configurable,
+ '[[Enumerable]]': !!enumerable,
+ '[[Value]]': ('[[Value]]' in Desc ? Desc : current)['[[Value]]'],
+ '[[Writable]]': !!('[[Writable]]' in Desc ? Desc : current)['[[Writable]]']
+ }
+ );
+ }
+
+ // For each field of Desc that is present, set the corresponding attribute of the property named P of object O to the value of the field.
+ return DefineOwnProperty(
+ IsDataDescriptor,
+ SameValue,
+ FromPropertyDescriptor,
+ O,
+ P,
+ Desc
+ );
+ }
+
+ return true; // step 7
+};
diff --git a/node_modules/es-abstract/2022/ValidateAtomicAccess.js b/node_modules/es-abstract/2022/ValidateAtomicAccess.js
new file mode 100644
index 000000000..76a9d151d
--- /dev/null
+++ b/node_modules/es-abstract/2022/ValidateAtomicAccess.js
@@ -0,0 +1,46 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $RangeError = GetIntrinsic('%RangeError%');
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+
+// node 0.10 doesn't have a prototype method
+var $byteOffset = callBound('%TypedArray.prototype.byteOffset%', true) || function (x) { return x.byteOffset; };
+
+var ToIndex = require('./ToIndex');
+var TypedArrayElementSize = require('./TypedArrayElementSize');
+
+var isTypedArray = require('is-typed-array');
+var typedArrayLength = require('typed-array-length');
+
+// https://262.ecma-international.org/13.0/#sec-validateatomicaccess
+
+module.exports = function ValidateAtomicAccess(typedArray, requestIndex) {
+ if (!isTypedArray(typedArray)) {
+ throw new $TypeError('Assertion failed: `typedArray` must be a TypedArray');
+ }
+
+ var length = typedArrayLength(typedArray); // step 1
+
+ var accessIndex = ToIndex(requestIndex); // step 2
+
+ /*
+ // this assertion can never be reached
+ if (!(accessIndex >= 0)) {
+ throw new $TypeError('Assertion failed: accessIndex >= 0'); // step 4
+ }
+ */
+
+ if (accessIndex >= length) {
+ throw new $RangeError('index out of range'); // step 4
+ }
+
+ var elementSize = TypedArrayElementSize(typedArray); // step 5
+
+ var offset = $byteOffset(typedArray); // step 6
+
+ return (accessIndex * elementSize) + offset; // step 7
+};
diff --git a/node_modules/es-abstract/2022/ValidateIntegerTypedArray.js b/node_modules/es-abstract/2022/ValidateIntegerTypedArray.js
new file mode 100644
index 000000000..c9c8249c6
--- /dev/null
+++ b/node_modules/es-abstract/2022/ValidateIntegerTypedArray.js
@@ -0,0 +1,39 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsBigIntElementType = require('./IsBigIntElementType');
+var IsUnclampedIntegerElementType = require('./IsUnclampedIntegerElementType');
+var Type = require('./Type');
+var TypedArrayElementType = require('./TypedArrayElementType');
+var ValidateTypedArray = require('./ValidateTypedArray');
+
+var whichTypedArray = require('which-typed-array');
+
+// https://262.ecma-international.org/13.0/#sec-validateintegertypedarray
+
+module.exports = function ValidateIntegerTypedArray(typedArray) {
+ var waitable = arguments.length > 1 ? arguments[1] : false; // step 1
+
+ if (Type(waitable) !== 'Boolean') {
+ throw new $TypeError('Assertion failed: `waitable` must be a Boolean');
+ }
+
+ var buffer = ValidateTypedArray(typedArray); // step 2
+
+ if (waitable) { // step 5
+ var typeName = whichTypedArray(typedArray);
+ if (typeName !== 'Int32Array' && typeName !== 'BigInt64Array') {
+ throw new $TypeError('Assertion failed: `typedArray` must be an Int32Array or BigInt64Array when `waitable` is true'); // step 5.a
+ }
+ } else {
+ var type = TypedArrayElementType(typedArray); // step 5.a
+ if (!IsUnclampedIntegerElementType(type) && !IsBigIntElementType(type)) {
+ throw new $TypeError('Assertion failed: `typedArray` must be an integer TypedArray'); // step 5.b
+ }
+ }
+
+ return buffer; // step 6
+};
diff --git a/node_modules/es-abstract/2022/ValidateTypedArray.js b/node_modules/es-abstract/2022/ValidateTypedArray.js
new file mode 100644
index 000000000..83df3a81c
--- /dev/null
+++ b/node_modules/es-abstract/2022/ValidateTypedArray.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var $taSome = callBound('%TypedArray.prototype.some%', true);
+
+var Type = require('./Type');
+
+var isTypedArray = require('is-typed-array');
+
+// https://262.ecma-international.org/6.0/#sec-validatetypedarray
+
+module.exports = function ValidateTypedArray(O) {
+ if (Type(O) !== 'Object') {
+ throw new $TypeError('Assertion failed: O must be an Object');
+ }
+ if (!isTypedArray(O)) {
+ throw new $TypeError('Assertion failed: O must be a TypedArray');
+ }
+
+ // without `.some` (like in node 0.10), there's no way to check buffer detachment, but also no way to be detached
+ if ($taSome) {
+ $taSome(O, function () { return true; });
+ }
+
+ return O.buffer;
+};
diff --git a/node_modules/es-abstract/2022/WeakRefDeref.js b/node_modules/es-abstract/2022/WeakRefDeref.js
new file mode 100644
index 000000000..66d2d1723
--- /dev/null
+++ b/node_modules/es-abstract/2022/WeakRefDeref.js
@@ -0,0 +1,24 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $deref = callBound('WeakRef.prototype.deref', true);
+
+var isWeakRef = require('is-weakref');
+
+var AddToKeptObjects = require('./AddToKeptObjects');
+
+// https://ecma-international.org/ecma-262/12.0/#sec-weakrefderef
+
+module.exports = function WeakRefDeref(weakRef) {
+ if (!isWeakRef(weakRef)) {
+ throw new $TypeError('Assertion failed: `weakRef` must be a WeakRef');
+ }
+ var target = $deref(weakRef);
+ if (target) {
+ AddToKeptObjects(target);
+ }
+ return target;
+};
diff --git a/node_modules/es-abstract/2022/WeekDay.js b/node_modules/es-abstract/2022/WeekDay.js
new file mode 100644
index 000000000..17cf94ca3
--- /dev/null
+++ b/node_modules/es-abstract/2022/WeekDay.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var Day = require('./Day');
+var modulo = require('./modulo');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.6
+
+module.exports = function WeekDay(t) {
+ return modulo(Day(t) + 4, 7);
+};
diff --git a/node_modules/es-abstract/2022/YearFromTime.js b/node_modules/es-abstract/2022/YearFromTime.js
new file mode 100644
index 000000000..be06ecbc3
--- /dev/null
+++ b/node_modules/es-abstract/2022/YearFromTime.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Date = GetIntrinsic('%Date%');
+
+var callBound = require('call-bind/callBound');
+
+var $getUTCFullYear = callBound('Date.prototype.getUTCFullYear');
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.3
+
+module.exports = function YearFromTime(t) {
+ // largest y such that this.TimeFromYear(y) <= t
+ return $getUTCFullYear(new $Date(t));
+};
diff --git a/node_modules/es-abstract/2022/abs.js b/node_modules/es-abstract/2022/abs.js
new file mode 100644
index 000000000..8bc45434d
--- /dev/null
+++ b/node_modules/es-abstract/2022/abs.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $abs = GetIntrinsic('%Math.abs%');
+
+// http://262.ecma-international.org/5.1/#sec-5.2
+
+module.exports = function abs(x) {
+ return $abs(x);
+};
diff --git a/node_modules/es-abstract/2022/clamp.js b/node_modules/es-abstract/2022/clamp.js
new file mode 100644
index 000000000..8da139484
--- /dev/null
+++ b/node_modules/es-abstract/2022/clamp.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var max = GetIntrinsic('%Math.max%');
+var min = GetIntrinsic('%Math.min%');
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/12.0/#clamping
+
+module.exports = function clamp(x, lower, upper) {
+ if (Type(x) !== 'Number' || Type(lower) !== 'Number' || Type(upper) !== 'Number' || !(lower <= upper)) {
+ throw new $TypeError('Assertion failed: all three arguments must be MVs, and `lower` must be `<= upper`');
+ }
+ return min(max(lower, x), upper);
+};
diff --git a/node_modules/es-abstract/2022/floor.js b/node_modules/es-abstract/2022/floor.js
new file mode 100644
index 000000000..625548e93
--- /dev/null
+++ b/node_modules/es-abstract/2022/floor.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var Type = require('./Type');
+
+// var modulo = require('./modulo');
+var $floor = Math.floor;
+
+// http://262.ecma-international.org/11.0/#eqn-floor
+
+module.exports = function floor(x) {
+ // return x - modulo(x, 1);
+ if (Type(x) === 'BigInt') {
+ return x;
+ }
+ return $floor(x);
+};
diff --git a/node_modules/es-abstract/2022/max.js b/node_modules/es-abstract/2022/max.js
new file mode 100644
index 000000000..b919d4e83
--- /dev/null
+++ b/node_modules/es-abstract/2022/max.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.max%');
diff --git a/node_modules/es-abstract/2022/min.js b/node_modules/es-abstract/2022/min.js
new file mode 100644
index 000000000..909de4b0e
--- /dev/null
+++ b/node_modules/es-abstract/2022/min.js
@@ -0,0 +1,7 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+// https://262.ecma-international.org/6.0/#sec-algorithm-conventions
+
+module.exports = GetIntrinsic('%Math.min%');
diff --git a/node_modules/es-abstract/2022/modulo.js b/node_modules/es-abstract/2022/modulo.js
new file mode 100644
index 000000000..b94bb52bb
--- /dev/null
+++ b/node_modules/es-abstract/2022/modulo.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var mod = require('../helpers/mod');
+
+// https://262.ecma-international.org/5.1/#sec-5.2
+
+module.exports = function modulo(x, y) {
+ return mod(x, y);
+};
diff --git a/node_modules/es-abstract/2022/msFromTime.js b/node_modules/es-abstract/2022/msFromTime.js
new file mode 100644
index 000000000..a6bae767a
--- /dev/null
+++ b/node_modules/es-abstract/2022/msFromTime.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var modulo = require('./modulo');
+
+var msPerSecond = require('../helpers/timeConstants').msPerSecond;
+
+// https://262.ecma-international.org/5.1/#sec-15.9.1.10
+
+module.exports = function msFromTime(t) {
+ return modulo(t, msPerSecond);
+};
diff --git a/node_modules/es-abstract/2022/substring.js b/node_modules/es-abstract/2022/substring.js
new file mode 100644
index 000000000..a2c724ad8
--- /dev/null
+++ b/node_modules/es-abstract/2022/substring.js
@@ -0,0 +1,20 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var IsIntegralNumber = require('./IsIntegralNumber');
+var Type = require('./Type');
+
+var callBound = require('call-bind/callBound');
+
+var $slice = callBound('String.prototype.slice');
+
+// https://262.ecma-international.org/12.0/#substring
+module.exports = function substring(S, inclusiveStart, exclusiveEnd) {
+ if (Type(S) !== 'String' || !IsIntegralNumber(inclusiveStart) || (arguments.length > 2 && !IsIntegralNumber(exclusiveEnd))) {
+ throw new $TypeError('`S` must be a String, and `inclusiveStart` and `exclusiveEnd` must be integers');
+ }
+ return $slice(S, inclusiveStart, arguments.length > 2 ? exclusiveEnd : S.length);
+};
diff --git a/node_modules/es-abstract/2022/thisBigIntValue.js b/node_modules/es-abstract/2022/thisBigIntValue.js
new file mode 100644
index 000000000..1fd12980e
--- /dev/null
+++ b/node_modules/es-abstract/2022/thisBigIntValue.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+var callBound = require('call-bind/callBound');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+var $bigIntValueOf = callBound('BigInt.prototype.valueOf', true);
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/11.0/#sec-thisbigintvalue
+
+module.exports = function thisBigIntValue(value) {
+ var type = Type(value);
+ if (type === 'BigInt') {
+ return value;
+ }
+ if (!$bigIntValueOf) {
+ throw new $TypeError('BigInt is not supported');
+ }
+ return $bigIntValueOf(value);
+};
diff --git a/node_modules/es-abstract/2022/thisBooleanValue.js b/node_modules/es-abstract/2022/thisBooleanValue.js
new file mode 100644
index 000000000..27075b9c4
--- /dev/null
+++ b/node_modules/es-abstract/2022/thisBooleanValue.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var $BooleanValueOf = require('call-bind/callBound')('Boolean.prototype.valueOf');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-boolean-prototype-object
+
+module.exports = function thisBooleanValue(value) {
+ if (Type(value) === 'Boolean') {
+ return value;
+ }
+
+ return $BooleanValueOf(value);
+};
diff --git a/node_modules/es-abstract/2022/thisNumberValue.js b/node_modules/es-abstract/2022/thisNumberValue.js
new file mode 100644
index 000000000..92968dcdf
--- /dev/null
+++ b/node_modules/es-abstract/2022/thisNumberValue.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var Type = require('./Type');
+
+var $NumberValueOf = callBound('Number.prototype.valueOf');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-number-prototype-object
+
+module.exports = function thisNumberValue(value) {
+ if (Type(value) === 'Number') {
+ return value;
+ }
+
+ return $NumberValueOf(value);
+};
+
diff --git a/node_modules/es-abstract/2022/thisStringValue.js b/node_modules/es-abstract/2022/thisStringValue.js
new file mode 100644
index 000000000..8e4274d81
--- /dev/null
+++ b/node_modules/es-abstract/2022/thisStringValue.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var $StringValueOf = require('call-bind/callBound')('String.prototype.valueOf');
+
+var Type = require('./Type');
+
+// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-string-prototype-object
+
+module.exports = function thisStringValue(value) {
+ if (Type(value) === 'String') {
+ return value;
+ }
+
+ return $StringValueOf(value);
+};
diff --git a/node_modules/es-abstract/2022/thisSymbolValue.js b/node_modules/es-abstract/2022/thisSymbolValue.js
new file mode 100644
index 000000000..91a552542
--- /dev/null
+++ b/node_modules/es-abstract/2022/thisSymbolValue.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var callBound = require('call-bind/callBound');
+
+var $SymbolValueOf = callBound('Symbol.prototype.valueOf', true);
+
+var Type = require('./Type');
+
+// https://262.ecma-international.org/9.0/#sec-thissymbolvalue
+
+module.exports = function thisSymbolValue(value) {
+ if (!$SymbolValueOf) {
+ throw new SyntaxError('Symbols are not supported; thisSymbolValue requires that `value` be a Symbol or a Symbol object');
+ }
+ if (Type(value) === 'Symbol') {
+ return value;
+ }
+ return $SymbolValueOf(value);
+};
diff --git a/node_modules/es-abstract/2022/thisTimeValue.js b/node_modules/es-abstract/2022/thisTimeValue.js
new file mode 100644
index 000000000..a9a47ace2
--- /dev/null
+++ b/node_modules/es-abstract/2022/thisTimeValue.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('../2018/thisTimeValue');
diff --git a/node_modules/es-abstract/5/FromPropertyDescriptor.js b/node_modules/es-abstract/5/FromPropertyDescriptor.js
index 506f65c33..ebf5c8915 100644
--- a/node_modules/es-abstract/5/FromPropertyDescriptor.js
+++ b/node_modules/es-abstract/5/FromPropertyDescriptor.js
@@ -33,7 +33,7 @@ module.exports = function FromPropertyDescriptor(Desc) {
enumerable: !!Desc['[[Enumerable]]'],
configurable: !!Desc['[[Configurable]]']
};
- } else {
- throw new $TypeError('FromPropertyDescriptor must be called with a fully populated Property Descriptor');
}
+ throw new $TypeError('FromPropertyDescriptor must be called with a fully populated Property Descriptor');
+
};
diff --git a/node_modules/es-abstract/CHANGELOG.md b/node_modules/es-abstract/CHANGELOG.md
index c409f8416..cec3cdd4d 100644
--- a/node_modules/es-abstract/CHANGELOG.md
+++ b/node_modules/es-abstract/CHANGELOG.md
@@ -1,3 +1,186 @@
+1.21.1 / 2023-01-10
+=================
+ * [Fix] move `available-typed-arrays` to runtime deps
+ * [Fix] `ES2021`+: `NumberToBigInt`: throw the proper error on an env without BigInts
+ * [Fix] `ES2018`+: `CreateAsyncFromSyncIterator`: properly check `next` method args length
+ * [Fix] `ES2020`-`ES2021`: Abstract Relational Comparison: handle BigInts properly
+ * [Fix] `ES2022`+: `StringToBigInt`: invalid BigInts should be `undefined`, not `NaN` as in previous years
+ * [Fix] `helpers/isFinite`: properly handle BigInt values
+ * [Fix] `ES2020`+: `CreateListFromArrayLike`: accept BigInts
+ * [Fix] `ES2019`+: `AsyncFromSyncIteratorContinuation`: throw a SyntaxError when > 1 arg is passed
+ * [patch] `ES2020`+: `GetIterator`: use SyntaxError for intentionally unsupported
+ * [patch] `ES2015`+: `GetPrototypeFromContructor`: use SyntaxError for intentionally unsupported
+ * [patch] `ES2022`+: `StringToNumber`: fix non-string assertion failure message
+ * [Deps] update `es-set-tostringtag`, `is-array-buffer`
+ * [Tests] increase coverage
+ * [Tests] exclude coverage from files that have been replaced by an extracted package
+
+1.21.0 / 2023-01-04
+=================
+ * [New] `ES2015`+: add `IsDetachedBuffer`
+ * [New] `ES2015+`: add `DetachArrayBuffer`
+ * [New] `ES2020`+: add `NumericToRawBytes`
+ * [New] `ES2017` - `ES2019`: add `NumberToRawBytes`
+ * [New] `ES2020+`: add `RawBytesToNumeric`
+ * [New] `ES2017-ES2019`: add `RawBytesToNumber`
+ * [New] `ES2017`+: add `ValidateAtomicAccess`
+ * [New] `ES2021`+: add `ValidateIntegerTypedArray`
+ * [New] `ES2015`+: add `ValidateTypedArray`
+ * [New] `ES2015`+: add `GetGlobalObject`
+ * [New] `ES2022`+: add `TypedArrayElementSize`, `TypedArrayElementType`
+ * [New] `ES2015`+: add `max`, `min`
+ * [New] `helpers/assertRecord`: add predicates for PromiseCapability and AsyncGeneratorRequest Records
+ * [New] `ES2018`+: add `AsyncIteratorClose`
+ * [New] `ES2015`+: `IteratorClose`: also accept a Completion Record instance instead of a completion thunk
+ * [New] `ES2015`+ (CompletionRecord, NormalCompletion), `ES2018`+ (ThrowCompletion): add new AOs
+ * [New] `ES2015`+ (`ObjectCreate`) and `ES2020`+ (`OrdinaryObjectCreate`): use `internal-slot` to support additional slots
+ * [New] `ES2018`+: add `CreateAsyncFromSyncIterator`
+ * [patch] `ES2015`+: `GetMethod`: better failure message
+ * [Refactor] use `es-set-tostringtag` package
+ * [Refactor] use `has-proto` package
+ * [Deps] update `has-proto`, `es-set-tostringtag`, `internal-slot`
+ * [meta] fix spackle script to `git add` after all writing is done
+ * [meta] autogenerate esX entry points
+ * [meta] use a leading slash in gitattributes for proper spackle matching
+ * [Tests] fix comments on missing AOs
+ * [Tests] filter out host-defined AOs
+ * [Dev Deps] update `@ljharb/eslint-config`, `aud`
+
+1.20.5 / 2022-12-07
+=================
+ * [Fix] `ES2020+`: `floor`: make it work with BigInts as well
+ * [Refactor] use `gopd`
+ * [Tests] add `mod` helper tests (#147)
+ * [Deps] update `string.prototype.trimend`, `string.prototype.trimstart`
+ * [Dev Deps] update `array.prototype.filter`, `array.prototype.flatmap`, `array.prototype.indexof`, `object.fromentries`
+
+1.20.4 / 2022-10-06
+=================
+ * [Fix] `ES2021+`: values that truncate to -0 in `ToIntegerOrInfinity` (#146)
+ * [Deps] update `is-callable`
+
+1.20.3 / 2022-09-22
+=================
+ * [Refactor] extract regex tester to `safe-regex-test` package
+ * [Deps] update `get-intrinsic`, `is-callable`
+ * [Dev Deps] update `aud`, `tape`
+
+1.20.2 / 2022-09-01
+=================
+ * [Fix] `ES2020+`: `SameValueNonNumeric`: properly throw on BigInt values
+ * [Deps] update `object.assign`, `get-intrinsic`, `object-inspect`
+ * [Dev Deps] update `array.prototype.indexof`, `diff`, `es-value-fixtures`, `tape`
+ * [meta] `spackle`: always mkdirp new files to be written
+ * [Tests] fix vscode auto-const from 8fc256d
+
+1.20.1 / 2022-05-16
+=================
+ * [Fix] `thisTimeValue`: use `getTime`, not `valueOf`, to get the time value
+ * [Refactor] create `IsArray` helper
+ * [Deps] update `regexp.prototype.flags`
+ * [Dev Deps] use `for-each` instead of `foreach`
+
+1.20.0 / 2022-05-05
+=================
+ * [New] add ES2022
+ * [New] `ES2015+`: add `ObjectDefineProperties`
+ * [Refactor] create `fromPropertyDescriptor` helper
+ * [Refactor] use `has-property-descriptors`
+ * [Deps] update `string.prototype.trimend`, `string.prototype.trimstart`, `unbox-primitive`
+ * [meta] use `npmignore` to autogenerate an npmignore file
+ * [Dev Deps] update `es-value-fixtures`, `has-bigints`, `functions-have-names`
+ * [Tests] copy GetIntrinsic tests over from `get-intrinsic`
+
+1.19.5 / 2022-04-13
+=================
+ * [Fix] `DefineOwnProperty`: FF 4-22 throws an exception when defining length of an array
+ * [Dev Deps] update `@ljharb/eslint-config`
+
+1.19.4 / 2022-04-12
+=================
+ * [Fix] `ES2015+`: `CreateDataProperty`: a nonwritable but configurable property is still converted to a data property
+
+1.19.3 / 2022-04-11
+=================
+ * [Fix] `ES2015+`: `GetIterator`, `IterableToArrayLike`: in Symbol-less envs, handle boxed string objects
+ * [Robustness] use `exec` instead of `test`, since the latter observably looks up `exec`
+ * [Deps] update `is-shared-array-buffer`
+ * [actions] restrict permissions
+ * [Dev Deps] update `tape`
+ * [Tests] add test coverage
+ * [Tests] avoid a bug in node v4.0 with bound function names
+
+1.19.2 / 2022-03-28
+=================
+ * [Fix] `ES2018+`: `EnumerableOwnPropertyNames`, `ToIntegerOrInfinity`, `UTF16SurrogatePairToCodePoint`: proper function names
+ * [Fix] `ES2015+`: `GetOwnPropertyKeys`/`IsExtensible`/`{Set,Test}IntegrityLevel`: avoid a crash in IE 8 on missing ES5 intrinsics
+ * [Fix] `helpers/DefineOwnProperty`: avoid a crash in IE 8
+ * [Fix] `ES2015+`: `StringCreate`: properly check for `prototype` being `String.prototype`
+ * [Docs] `ES2015+`: `GetV`: Fix spec URL
+ * [meta] operations: use a URL object instead of a URL string
+ * [meta] remove defunct greenkeeper config
+ * [meta] better `eccheck` command; fix indentation
+ * [Tests] node v0.6 lacks `RegExp.prototype.source`
+ * [Tests] remove a stray `console.log`
+ * [Tests] properly set the lastIndex in IE 8
+ * [Tests] skip test due to IE 6-8 sparse/undefined bug
+ * [Tests] in IE 8, an empty regex is `` and not `(?:)`
+ * [Tests] ES3 engines don’t have `.bind`
+ * [Tests] avoid needless failures in ES3 engines that don't support descriptors
+ * [Tests] add test to cover https://github.com/tc39/ecma262/issues/2611
+ * [Deps] update `has-symbols`, `is-negative-zero`, `is-weakref`, `object-inspect`
+ * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object.fromentries`, `safe-publish-latest`, `tape`
+ * [actions] reuse common workflows
+ * [actions] update codecov uploader
+
+1.19.1 / 2021-10-02
+=================
+ * [Fix] `ES2020+`: `CreateRegExpStringIterator`: should not have enumerable methods
+ * [Dev Deps] update `array.prototype.filter`, `array.prototype.indexof`
+
+1.19.0 / 2021-09-30
+=================
+ * [New] `ES2021+`: `IterableToList`: make `method` parameter optional (#61)
+ * [New] add ES2021
+ * [New] `ES2020+`: add `StringToBigInt`, `ToBigInt`, `ToBigInt64`, `ToBigUint64`
+ * [New] `ES2017`+: add `IsSharedArrayBuffer`, `OrdinaryToPrimitive`
+ * [New] `ES2015+`: add `CharacterRange`, `IsCompatiblePropertyDescriptor`
+ * [New] `ES2020+`: add `CreateRegExpStringIterator`
+ * [Fix] `ES2020+`: `ToBigInt64`/`ToBigUint64`: avoid node v10.4-v10.8 bug with limited BigInt range
+ * [Fix] `ES2020+`: `AbstractRelationalComparison`, `AbstractEqualityComparison`: support BigInt
+ * [Fix] `ES2020+`: `ToBigInt64`/`ToBigUint64`: Improve the definitions of twoSixtyThree and twoSixtyFour (#140)
+ * [meta] do not publish .gitattributes
+ * [Tests] Correct the behavior of `safeBigInt`
+ * [Tests] Exclude dotfiles from the testing sweep (#141)
+
+1.18.7 / 2021-09-28
+=================
+ * [Fix] `getOwnPropertyDescriptor` helper: avoid crashing in IE < 9
+ * [Fix] `ArraySetLength`: `node` `v0.6` has a bug where array lengths can be Set but not Defined
+ * [eslint] remove unused directive
+ * [Tests] fix spelling
+
+1.18.6 / 2021-09-07
+=================
+ * [Fix] `ES2020+`: `NumberToBigInt`: throw a SyntaxError when BigInts are not supported
+ * [Refactor] extract getSymbolDescription logic to `get-symbol-description`
+ * [Refactor] `ES2018+`: `AbstractRelationalComparison`: use `IsStringPrefix`
+ * [Deps] update `is-callable`, `is-regex`, `is-string`
+ * [Dev Deps] update `@ljharb/eslint-config`, `tape`
+ * [Tests] `GetSubstitution`: add cases
+
+1.18.5 / 2021-08-01
+=================
+ * [meta] remove "exports" (#133)
+ * [Dev Deps] update `eslint`
+
+1.18.4 / 2021-07-29
+=================
+ * [meta] partial revert of b54cfe8525faff482450e843a49d43be3a086225
+ * [Deps] update `internal-slot`, `object-inspect`
+ * [Dev Deps] update `eslint`, `tape`
+ * [Tests] `ArraySetLength`: increase coverage
+
1.18.3 / 2021-05-27
=================
* [Fix] `ES2020+`: `ToNumber`: ensure it throws on a BigInt (#130)
diff --git a/node_modules/es-abstract/LICENSE b/node_modules/es-abstract/LICENSE
index 8c271c14b..3f137ce0c 100644
--- a/node_modules/es-abstract/LICENSE
+++ b/node_modules/es-abstract/LICENSE
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
+THE SOFTWARE.
diff --git a/node_modules/es-abstract/README.md b/node_modules/es-abstract/README.md
index 2d76a5d44..08f7b1c2a 100644
--- a/node_modules/es-abstract/README.md
+++ b/node_modules/es-abstract/README.md
@@ -11,7 +11,7 @@ ECMAScript spec abstract operations.
Every operation is available by edition/year and by name - for example, `es-abstract/2020/Call` gives you the `Call` operation from ES2020, `es-abstract/5/Type` gives you the `Type` operation from ES5.
-All abstract operations are also available under an `es5`/`es2015`/`es2016`/`es2017`/`es2018`/`es2019`/`es2020` entry point, and as a property on the `main` export, but using deep imports is highly encouraged for bundle size and performance reasons. Non-deep entry points will be removed in the next semver-major release.
+All abstract operations are also available under an `es5`/`es2015`/`es2016`/`es2017`/`es2018`/`es2019`/`es2020`/`es2021` entry point, and as a property on the `main` export, but using deep imports is highly encouraged for bundle size and performance reasons. Non-deep entry points will be removed in the next semver-major release.
## Example
diff --git a/node_modules/es-abstract/es2015.js b/node_modules/es-abstract/es2015.js
index 79be96740..479fe155b 100644
--- a/node_modules/es-abstract/es2015.js
+++ b/node_modules/es-abstract/es2015.js
@@ -1,8 +1,8 @@
'use strict';
/* eslint global-require: 0 */
-// https://ecma-international.org/ecma-262/6.0/#sec-abstract-operations
-var ES6 = {
+// https://262.ecma-international.org/6.0/#sec-abstract-operations
+var ES2015 = {
'Abstract Equality Comparison': require('./2015/AbstractEqualityComparison'),
'Abstract Relational Comparison': require('./2015/AbstractRelationalComparison'),
'Strict Equality Comparison': require('./2015/StrictEqualityComparison'),
@@ -13,7 +13,9 @@ var ES6 = {
ArraySpeciesCreate: require('./2015/ArraySpeciesCreate'),
Call: require('./2015/Call'),
CanonicalNumericIndexString: require('./2015/CanonicalNumericIndexString'),
+ CharacterRange: require('./2015/CharacterRange'),
CompletePropertyDescriptor: require('./2015/CompletePropertyDescriptor'),
+ CompletionRecord: require('./2015/CompletionRecord'),
CreateDataProperty: require('./2015/CreateDataProperty'),
CreateDataPropertyOrThrow: require('./2015/CreateDataPropertyOrThrow'),
CreateHTML: require('./2015/CreateHTML'),
@@ -27,10 +29,12 @@ var ES6 = {
DayWithinYear: require('./2015/DayWithinYear'),
DefinePropertyOrThrow: require('./2015/DefinePropertyOrThrow'),
DeletePropertyOrThrow: require('./2015/DeletePropertyOrThrow'),
+ DetachArrayBuffer: require('./2015/DetachArrayBuffer'),
EnumerableOwnNames: require('./2015/EnumerableOwnNames'),
floor: require('./2015/floor'),
FromPropertyDescriptor: require('./2015/FromPropertyDescriptor'),
Get: require('./2015/Get'),
+ GetGlobalObject: require('./2015/GetGlobalObject'),
GetIterator: require('./2015/GetIterator'),
GetMethod: require('./2015/GetMethod'),
GetOwnPropertyKeys: require('./2015/GetOwnPropertyKeys'),
@@ -46,9 +50,11 @@ var ES6 = {
IsAccessorDescriptor: require('./2015/IsAccessorDescriptor'),
IsArray: require('./2015/IsArray'),
IsCallable: require('./2015/IsCallable'),
+ IsCompatiblePropertyDescriptor: require('./2015/IsCompatiblePropertyDescriptor'),
IsConcatSpreadable: require('./2015/IsConcatSpreadable'),
IsConstructor: require('./2015/IsConstructor'),
IsDataDescriptor: require('./2015/IsDataDescriptor'),
+ IsDetachedBuffer: require('./2015/IsDetachedBuffer'),
IsExtensible: require('./2015/IsExtensible'),
IsGenericDescriptor: require('./2015/IsGenericDescriptor'),
IsInteger: require('./2015/IsInteger'),
@@ -64,11 +70,15 @@ var ES6 = {
MakeDate: require('./2015/MakeDate'),
MakeDay: require('./2015/MakeDay'),
MakeTime: require('./2015/MakeTime'),
+ max: require('./2015/max'),
+ min: require('./2015/min'),
MinFromTime: require('./2015/MinFromTime'),
modulo: require('./2015/modulo'),
MonthFromTime: require('./2015/MonthFromTime'),
msFromTime: require('./2015/msFromTime'),
+ NormalCompletion: require('./2015/NormalCompletion'),
ObjectCreate: require('./2015/ObjectCreate'),
+ ObjectDefineProperties: require('./2015/ObjectDefineProperties'),
OrdinaryCreateFromConstructor: require('./2015/OrdinaryCreateFromConstructor'),
OrdinaryDefineOwnProperty: require('./2015/OrdinaryDefineOwnProperty'),
OrdinaryGetOwnProperty: require('./2015/OrdinaryGetOwnProperty'),
@@ -116,8 +126,9 @@ var ES6 = {
ToUint8Clamp: require('./2015/ToUint8Clamp'),
Type: require('./2015/Type'),
ValidateAndApplyPropertyDescriptor: require('./2015/ValidateAndApplyPropertyDescriptor'),
+ ValidateTypedArray: require('./2015/ValidateTypedArray'),
WeekDay: require('./2015/WeekDay'),
YearFromTime: require('./2015/YearFromTime')
};
-module.exports = ES6;
+module.exports = ES2015;
diff --git a/node_modules/es-abstract/es2016.js b/node_modules/es-abstract/es2016.js
index 6fbdb0cf1..b2ffb99c7 100644
--- a/node_modules/es-abstract/es2016.js
+++ b/node_modules/es-abstract/es2016.js
@@ -13,7 +13,9 @@ var ES2016 = {
ArraySpeciesCreate: require('./2016/ArraySpeciesCreate'),
Call: require('./2016/Call'),
CanonicalNumericIndexString: require('./2016/CanonicalNumericIndexString'),
+ CharacterRange: require('./2016/CharacterRange'),
CompletePropertyDescriptor: require('./2016/CompletePropertyDescriptor'),
+ CompletionRecord: require('./2016/CompletionRecord'),
CreateDataProperty: require('./2016/CreateDataProperty'),
CreateDataPropertyOrThrow: require('./2016/CreateDataPropertyOrThrow'),
CreateHTML: require('./2016/CreateHTML'),
@@ -27,10 +29,12 @@ var ES2016 = {
DayWithinYear: require('./2016/DayWithinYear'),
DefinePropertyOrThrow: require('./2016/DefinePropertyOrThrow'),
DeletePropertyOrThrow: require('./2016/DeletePropertyOrThrow'),
+ DetachArrayBuffer: require('./2016/DetachArrayBuffer'),
EnumerableOwnNames: require('./2016/EnumerableOwnNames'),
floor: require('./2016/floor'),
FromPropertyDescriptor: require('./2016/FromPropertyDescriptor'),
Get: require('./2016/Get'),
+ GetGlobalObject: require('./2016/GetGlobalObject'),
GetIterator: require('./2016/GetIterator'),
GetMethod: require('./2016/GetMethod'),
GetOwnPropertyKeys: require('./2016/GetOwnPropertyKeys'),
@@ -46,9 +50,11 @@ var ES2016 = {
IsAccessorDescriptor: require('./2016/IsAccessorDescriptor'),
IsArray: require('./2016/IsArray'),
IsCallable: require('./2016/IsCallable'),
+ IsCompatiblePropertyDescriptor: require('./2016/IsCompatiblePropertyDescriptor'),
IsConcatSpreadable: require('./2016/IsConcatSpreadable'),
IsConstructor: require('./2016/IsConstructor'),
IsDataDescriptor: require('./2016/IsDataDescriptor'),
+ IsDetachedBuffer: require('./2016/IsDetachedBuffer'),
IsExtensible: require('./2016/IsExtensible'),
IsGenericDescriptor: require('./2016/IsGenericDescriptor'),
IsInteger: require('./2016/IsInteger'),
@@ -65,11 +71,15 @@ var ES2016 = {
MakeDate: require('./2016/MakeDate'),
MakeDay: require('./2016/MakeDay'),
MakeTime: require('./2016/MakeTime'),
+ max: require('./2016/max'),
+ min: require('./2016/min'),
MinFromTime: require('./2016/MinFromTime'),
modulo: require('./2016/modulo'),
MonthFromTime: require('./2016/MonthFromTime'),
msFromTime: require('./2016/msFromTime'),
+ NormalCompletion: require('./2016/NormalCompletion'),
ObjectCreate: require('./2016/ObjectCreate'),
+ ObjectDefineProperties: require('./2016/ObjectDefineProperties'),
OrdinaryCreateFromConstructor: require('./2016/OrdinaryCreateFromConstructor'),
OrdinaryDefineOwnProperty: require('./2016/OrdinaryDefineOwnProperty'),
OrdinaryGetOwnProperty: require('./2016/OrdinaryGetOwnProperty'),
@@ -121,6 +131,7 @@ var ES2016 = {
UTF16Decode: require('./2016/UTF16Decode'),
UTF16Encoding: require('./2016/UTF16Encoding'),
ValidateAndApplyPropertyDescriptor: require('./2016/ValidateAndApplyPropertyDescriptor'),
+ ValidateTypedArray: require('./2016/ValidateTypedArray'),
WeekDay: require('./2016/WeekDay'),
YearFromTime: require('./2016/YearFromTime')
};
diff --git a/node_modules/es-abstract/es2017.js b/node_modules/es-abstract/es2017.js
index 3cf0c007a..8a344dabf 100644
--- a/node_modules/es-abstract/es2017.js
+++ b/node_modules/es-abstract/es2017.js
@@ -13,7 +13,9 @@ var ES2017 = {
ArraySpeciesCreate: require('./2017/ArraySpeciesCreate'),
Call: require('./2017/Call'),
CanonicalNumericIndexString: require('./2017/CanonicalNumericIndexString'),
+ CharacterRange: require('./2017/CharacterRange'),
CompletePropertyDescriptor: require('./2017/CompletePropertyDescriptor'),
+ CompletionRecord: require('./2017/CompletionRecord'),
CreateDataProperty: require('./2017/CreateDataProperty'),
CreateDataPropertyOrThrow: require('./2017/CreateDataPropertyOrThrow'),
CreateHTML: require('./2017/CreateHTML'),
@@ -27,10 +29,12 @@ var ES2017 = {
DayWithinYear: require('./2017/DayWithinYear'),
DefinePropertyOrThrow: require('./2017/DefinePropertyOrThrow'),
DeletePropertyOrThrow: require('./2017/DeletePropertyOrThrow'),
+ DetachArrayBuffer: require('./2017/DetachArrayBuffer'),
EnumerableOwnProperties: require('./2017/EnumerableOwnProperties'),
floor: require('./2017/floor'),
FromPropertyDescriptor: require('./2017/FromPropertyDescriptor'),
Get: require('./2017/Get'),
+ GetGlobalObject: require('./2017/GetGlobalObject'),
GetIterator: require('./2017/GetIterator'),
GetMethod: require('./2017/GetMethod'),
GetOwnPropertyKeys: require('./2017/GetOwnPropertyKeys'),
@@ -46,9 +50,11 @@ var ES2017 = {
IsAccessorDescriptor: require('./2017/IsAccessorDescriptor'),
IsArray: require('./2017/IsArray'),
IsCallable: require('./2017/IsCallable'),
+ IsCompatiblePropertyDescriptor: require('./2017/IsCompatiblePropertyDescriptor'),
IsConcatSpreadable: require('./2017/IsConcatSpreadable'),
IsConstructor: require('./2017/IsConstructor'),
IsDataDescriptor: require('./2017/IsDataDescriptor'),
+ IsDetachedBuffer: require('./2017/IsDetachedBuffer'),
IsExtensible: require('./2017/IsExtensible'),
IsGenericDescriptor: require('./2017/IsGenericDescriptor'),
IsInteger: require('./2017/IsInteger'),
@@ -56,6 +62,7 @@ var ES2017 = {
IsPropertyDescriptor: require('./2017/IsPropertyDescriptor'),
IsPropertyKey: require('./2017/IsPropertyKey'),
IsRegExp: require('./2017/IsRegExp'),
+ IsSharedArrayBuffer: require('./2017/IsSharedArrayBuffer'),
IterableToList: require('./2017/IterableToList'),
IteratorClose: require('./2017/IteratorClose'),
IteratorComplete: require('./2017/IteratorComplete'),
@@ -65,11 +72,16 @@ var ES2017 = {
MakeDate: require('./2017/MakeDate'),
MakeDay: require('./2017/MakeDay'),
MakeTime: require('./2017/MakeTime'),
+ max: require('./2017/max'),
+ min: require('./2017/min'),
MinFromTime: require('./2017/MinFromTime'),
modulo: require('./2017/modulo'),
MonthFromTime: require('./2017/MonthFromTime'),
msFromTime: require('./2017/msFromTime'),
+ NormalCompletion: require('./2017/NormalCompletion'),
+ NumberToRawBytes: require('./2017/NumberToRawBytes'),
ObjectCreate: require('./2017/ObjectCreate'),
+ ObjectDefineProperties: require('./2017/ObjectDefineProperties'),
OrdinaryCreateFromConstructor: require('./2017/OrdinaryCreateFromConstructor'),
OrdinaryDefineOwnProperty: require('./2017/OrdinaryDefineOwnProperty'),
OrdinaryGetOwnProperty: require('./2017/OrdinaryGetOwnProperty'),
@@ -77,7 +89,9 @@ var ES2017 = {
OrdinaryHasInstance: require('./2017/OrdinaryHasInstance'),
OrdinaryHasProperty: require('./2017/OrdinaryHasProperty'),
OrdinarySetPrototypeOf: require('./2017/OrdinarySetPrototypeOf'),
+ OrdinaryToPrimitive: require('./2017/OrdinaryToPrimitive'),
QuoteJSONString: require('./2017/QuoteJSONString'),
+ RawBytesToNumber: require('./2017/RawBytesToNumber'),
RegExpCreate: require('./2017/RegExpCreate'),
RegExpExec: require('./2017/RegExpExec'),
RequireObjectCoercible: require('./2017/RequireObjectCoercible'),
@@ -123,6 +137,8 @@ var ES2017 = {
UTF16Decode: require('./2017/UTF16Decode'),
UTF16Encoding: require('./2017/UTF16Encoding'),
ValidateAndApplyPropertyDescriptor: require('./2017/ValidateAndApplyPropertyDescriptor'),
+ ValidateAtomicAccess: require('./2017/ValidateAtomicAccess'),
+ ValidateTypedArray: require('./2017/ValidateTypedArray'),
WeekDay: require('./2017/WeekDay'),
YearFromTime: require('./2017/YearFromTime')
};
diff --git a/node_modules/es-abstract/es2018.js b/node_modules/es-abstract/es2018.js
index 2beb98903..dcea42a0b 100644
--- a/node_modules/es-abstract/es2018.js
+++ b/node_modules/es-abstract/es2018.js
@@ -11,10 +11,14 @@ var ES2018 = {
ArrayCreate: require('./2018/ArrayCreate'),
ArraySetLength: require('./2018/ArraySetLength'),
ArraySpeciesCreate: require('./2018/ArraySpeciesCreate'),
+ AsyncIteratorClose: require('./2018/AsyncIteratorClose'),
Call: require('./2018/Call'),
CanonicalNumericIndexString: require('./2018/CanonicalNumericIndexString'),
+ CharacterRange: require('./2018/CharacterRange'),
CompletePropertyDescriptor: require('./2018/CompletePropertyDescriptor'),
+ CompletionRecord: require('./2018/CompletionRecord'),
CopyDataProperties: require('./2018/CopyDataProperties'),
+ CreateAsyncFromSyncIterator: require('./2018/CreateAsyncFromSyncIterator'),
CreateDataProperty: require('./2018/CreateDataProperty'),
CreateDataPropertyOrThrow: require('./2018/CreateDataPropertyOrThrow'),
CreateHTML: require('./2018/CreateHTML'),
@@ -29,10 +33,12 @@ var ES2018 = {
DayWithinYear: require('./2018/DayWithinYear'),
DefinePropertyOrThrow: require('./2018/DefinePropertyOrThrow'),
DeletePropertyOrThrow: require('./2018/DeletePropertyOrThrow'),
+ DetachArrayBuffer: require('./2018/DetachArrayBuffer'),
EnumerableOwnPropertyNames: require('./2018/EnumerableOwnPropertyNames'),
floor: require('./2018/floor'),
FromPropertyDescriptor: require('./2018/FromPropertyDescriptor'),
Get: require('./2018/Get'),
+ GetGlobalObject: require('./2018/GetGlobalObject'),
GetIterator: require('./2018/GetIterator'),
GetMethod: require('./2018/GetMethod'),
GetOwnPropertyKeys: require('./2018/GetOwnPropertyKeys'),
@@ -48,15 +54,18 @@ var ES2018 = {
IsAccessorDescriptor: require('./2018/IsAccessorDescriptor'),
IsArray: require('./2018/IsArray'),
IsCallable: require('./2018/IsCallable'),
+ IsCompatiblePropertyDescriptor: require('./2018/IsCompatiblePropertyDescriptor'),
IsConcatSpreadable: require('./2018/IsConcatSpreadable'),
IsConstructor: require('./2018/IsConstructor'),
IsDataDescriptor: require('./2018/IsDataDescriptor'),
+ IsDetachedBuffer: require('./2018/IsDetachedBuffer'),
IsExtensible: require('./2018/IsExtensible'),
IsGenericDescriptor: require('./2018/IsGenericDescriptor'),
IsInteger: require('./2018/IsInteger'),
IsPromise: require('./2018/IsPromise'),
IsPropertyKey: require('./2018/IsPropertyKey'),
IsRegExp: require('./2018/IsRegExp'),
+ IsSharedArrayBuffer: require('./2018/IsSharedArrayBuffer'),
IsStringPrefix: require('./2018/IsStringPrefix'),
IterableToList: require('./2018/IterableToList'),
IteratorClose: require('./2018/IteratorClose'),
@@ -67,12 +76,17 @@ var ES2018 = {
MakeDate: require('./2018/MakeDate'),
MakeDay: require('./2018/MakeDay'),
MakeTime: require('./2018/MakeTime'),
+ max: require('./2018/max'),
+ min: require('./2018/min'),
MinFromTime: require('./2018/MinFromTime'),
modulo: require('./2018/modulo'),
MonthFromTime: require('./2018/MonthFromTime'),
msFromTime: require('./2018/msFromTime'),
+ NormalCompletion: require('./2018/NormalCompletion'),
+ NumberToRawBytes: require('./2018/NumberToRawBytes'),
NumberToString: require('./2018/NumberToString'),
ObjectCreate: require('./2018/ObjectCreate'),
+ ObjectDefineProperties: require('./2018/ObjectDefineProperties'),
OrdinaryCreateFromConstructor: require('./2018/OrdinaryCreateFromConstructor'),
OrdinaryDefineOwnProperty: require('./2018/OrdinaryDefineOwnProperty'),
OrdinaryGetOwnProperty: require('./2018/OrdinaryGetOwnProperty'),
@@ -80,8 +94,10 @@ var ES2018 = {
OrdinaryHasInstance: require('./2018/OrdinaryHasInstance'),
OrdinaryHasProperty: require('./2018/OrdinaryHasProperty'),
OrdinarySetPrototypeOf: require('./2018/OrdinarySetPrototypeOf'),
+ OrdinaryToPrimitive: require('./2018/OrdinaryToPrimitive'),
PromiseResolve: require('./2018/PromiseResolve'),
QuoteJSONString: require('./2018/QuoteJSONString'),
+ RawBytesToNumber: require('./2018/RawBytesToNumber'),
RegExpCreate: require('./2018/RegExpCreate'),
RegExpExec: require('./2018/RegExpExec'),
RequireObjectCoercible: require('./2018/RequireObjectCoercible'),
@@ -104,6 +120,7 @@ var ES2018 = {
thisStringValue: require('./2018/thisStringValue'),
thisSymbolValue: require('./2018/thisSymbolValue'),
thisTimeValue: require('./2018/thisTimeValue'),
+ ThrowCompletion: require('./2018/ThrowCompletion'),
TimeClip: require('./2018/TimeClip'),
TimeFromYear: require('./2018/TimeFromYear'),
TimeString: require('./2018/TimeString'),
@@ -131,6 +148,8 @@ var ES2018 = {
UTF16Decode: require('./2018/UTF16Decode'),
UTF16Encoding: require('./2018/UTF16Encoding'),
ValidateAndApplyPropertyDescriptor: require('./2018/ValidateAndApplyPropertyDescriptor'),
+ ValidateAtomicAccess: require('./2018/ValidateAtomicAccess'),
+ ValidateTypedArray: require('./2018/ValidateTypedArray'),
WeekDay: require('./2018/WeekDay'),
YearFromTime: require('./2018/YearFromTime')
};
diff --git a/node_modules/es-abstract/es2019.js b/node_modules/es-abstract/es2019.js
index a49e11522..de1c6ee47 100644
--- a/node_modules/es-abstract/es2019.js
+++ b/node_modules/es-abstract/es2019.js
@@ -12,10 +12,15 @@ var ES2019 = {
ArrayCreate: require('./2019/ArrayCreate'),
ArraySetLength: require('./2019/ArraySetLength'),
ArraySpeciesCreate: require('./2019/ArraySpeciesCreate'),
+ AsyncFromSyncIteratorContinuation: require('./2019/AsyncFromSyncIteratorContinuation'),
+ AsyncIteratorClose: require('./2019/AsyncIteratorClose'),
Call: require('./2019/Call'),
CanonicalNumericIndexString: require('./2019/CanonicalNumericIndexString'),
+ CharacterRange: require('./2019/CharacterRange'),
CompletePropertyDescriptor: require('./2019/CompletePropertyDescriptor'),
+ CompletionRecord: require('./2019/CompletionRecord'),
CopyDataProperties: require('./2019/CopyDataProperties'),
+ CreateAsyncFromSyncIterator: require('./2019/CreateAsyncFromSyncIterator'),
CreateDataProperty: require('./2019/CreateDataProperty'),
CreateDataPropertyOrThrow: require('./2019/CreateDataPropertyOrThrow'),
CreateHTML: require('./2019/CreateHTML'),
@@ -30,11 +35,13 @@ var ES2019 = {
DayWithinYear: require('./2019/DayWithinYear'),
DefinePropertyOrThrow: require('./2019/DefinePropertyOrThrow'),
DeletePropertyOrThrow: require('./2019/DeletePropertyOrThrow'),
+ DetachArrayBuffer: require('./2019/DetachArrayBuffer'),
EnumerableOwnPropertyNames: require('./2019/EnumerableOwnPropertyNames'),
FlattenIntoArray: require('./2019/FlattenIntoArray'),
floor: require('./2019/floor'),
FromPropertyDescriptor: require('./2019/FromPropertyDescriptor'),
Get: require('./2019/Get'),
+ GetGlobalObject: require('./2019/GetGlobalObject'),
GetIterator: require('./2019/GetIterator'),
GetMethod: require('./2019/GetMethod'),
GetOwnPropertyKeys: require('./2019/GetOwnPropertyKeys'),
@@ -50,15 +57,18 @@ var ES2019 = {
IsAccessorDescriptor: require('./2019/IsAccessorDescriptor'),
IsArray: require('./2019/IsArray'),
IsCallable: require('./2019/IsCallable'),
+ IsCompatiblePropertyDescriptor: require('./2019/IsCompatiblePropertyDescriptor'),
IsConcatSpreadable: require('./2019/IsConcatSpreadable'),
IsConstructor: require('./2019/IsConstructor'),
IsDataDescriptor: require('./2019/IsDataDescriptor'),
+ IsDetachedBuffer: require('./2019/IsDetachedBuffer'),
IsExtensible: require('./2019/IsExtensible'),
IsGenericDescriptor: require('./2019/IsGenericDescriptor'),
IsInteger: require('./2019/IsInteger'),
IsPromise: require('./2019/IsPromise'),
IsPropertyKey: require('./2019/IsPropertyKey'),
IsRegExp: require('./2019/IsRegExp'),
+ IsSharedArrayBuffer: require('./2019/IsSharedArrayBuffer'),
IsStringPrefix: require('./2019/IsStringPrefix'),
IterableToList: require('./2019/IterableToList'),
IteratorClose: require('./2019/IteratorClose'),
@@ -69,12 +79,17 @@ var ES2019 = {
MakeDate: require('./2019/MakeDate'),
MakeDay: require('./2019/MakeDay'),
MakeTime: require('./2019/MakeTime'),
+ max: require('./2019/max'),
+ min: require('./2019/min'),
MinFromTime: require('./2019/MinFromTime'),
modulo: require('./2019/modulo'),
MonthFromTime: require('./2019/MonthFromTime'),
msFromTime: require('./2019/msFromTime'),
+ NormalCompletion: require('./2019/NormalCompletion'),
+ NumberToRawBytes: require('./2019/NumberToRawBytes'),
NumberToString: require('./2019/NumberToString'),
ObjectCreate: require('./2019/ObjectCreate'),
+ ObjectDefineProperties: require('./2019/ObjectDefineProperties'),
OrdinaryCreateFromConstructor: require('./2019/OrdinaryCreateFromConstructor'),
OrdinaryDefineOwnProperty: require('./2019/OrdinaryDefineOwnProperty'),
OrdinaryGetOwnProperty: require('./2019/OrdinaryGetOwnProperty'),
@@ -82,8 +97,10 @@ var ES2019 = {
OrdinaryHasInstance: require('./2019/OrdinaryHasInstance'),
OrdinaryHasProperty: require('./2019/OrdinaryHasProperty'),
OrdinarySetPrototypeOf: require('./2019/OrdinarySetPrototypeOf'),
+ OrdinaryToPrimitive: require('./2019/OrdinaryToPrimitive'),
PromiseResolve: require('./2019/PromiseResolve'),
QuoteJSONString: require('./2019/QuoteJSONString'),
+ RawBytesToNumber: require('./2019/RawBytesToNumber'),
RegExpCreate: require('./2019/RegExpCreate'),
RegExpExec: require('./2019/RegExpExec'),
RequireObjectCoercible: require('./2019/RequireObjectCoercible'),
@@ -106,6 +123,7 @@ var ES2019 = {
thisStringValue: require('./2019/thisStringValue'),
thisSymbolValue: require('./2019/thisSymbolValue'),
thisTimeValue: require('./2019/thisTimeValue'),
+ ThrowCompletion: require('./2019/ThrowCompletion'),
TimeClip: require('./2019/TimeClip'),
TimeFromYear: require('./2019/TimeFromYear'),
TimeString: require('./2019/TimeString'),
@@ -134,6 +152,8 @@ var ES2019 = {
UTF16Decode: require('./2019/UTF16Decode'),
UTF16Encoding: require('./2019/UTF16Encoding'),
ValidateAndApplyPropertyDescriptor: require('./2019/ValidateAndApplyPropertyDescriptor'),
+ ValidateAtomicAccess: require('./2019/ValidateAtomicAccess'),
+ ValidateTypedArray: require('./2019/ValidateTypedArray'),
WeekDay: require('./2019/WeekDay'),
YearFromTime: require('./2019/YearFromTime')
};
diff --git a/node_modules/es-abstract/es2020.js b/node_modules/es-abstract/es2020.js
index e6d1c7941..dc96fd375 100644
--- a/node_modules/es-abstract/es2020.js
+++ b/node_modules/es-abstract/es2020.js
@@ -1,7 +1,7 @@
'use strict';
/* eslint global-require: 0 */
-// https://ecma-international.org/ecma-262/11.0/#sec-abstract-operations
+// https://262.ecma-international.org/11.0/#sec-abstract-operations
var ES2020 = {
'Abstract Equality Comparison': require('./2020/AbstractEqualityComparison'),
'Abstract Relational Comparison': require('./2020/AbstractRelationalComparison'),
@@ -12,6 +12,8 @@ var ES2020 = {
ArrayCreate: require('./2020/ArrayCreate'),
ArraySetLength: require('./2020/ArraySetLength'),
ArraySpeciesCreate: require('./2020/ArraySpeciesCreate'),
+ AsyncFromSyncIteratorContinuation: require('./2020/AsyncFromSyncIteratorContinuation'),
+ AsyncIteratorClose: require('./2020/AsyncIteratorClose'),
BigInt: require('./2020/BigInt'),
BigIntBitwiseOp: require('./2020/BigIntBitwiseOp'),
BinaryAnd: require('./2020/BinaryAnd'),
@@ -19,15 +21,19 @@ var ES2020 = {
BinaryXor: require('./2020/BinaryXor'),
Call: require('./2020/Call'),
CanonicalNumericIndexString: require('./2020/CanonicalNumericIndexString'),
+ CharacterRange: require('./2020/CharacterRange'),
CodePointAt: require('./2020/CodePointAt'),
CompletePropertyDescriptor: require('./2020/CompletePropertyDescriptor'),
+ CompletionRecord: require('./2020/CompletionRecord'),
CopyDataProperties: require('./2020/CopyDataProperties'),
+ CreateAsyncFromSyncIterator: require('./2020/CreateAsyncFromSyncIterator'),
CreateDataProperty: require('./2020/CreateDataProperty'),
CreateDataPropertyOrThrow: require('./2020/CreateDataPropertyOrThrow'),
CreateHTML: require('./2020/CreateHTML'),
CreateIterResultObject: require('./2020/CreateIterResultObject'),
CreateListFromArrayLike: require('./2020/CreateListFromArrayLike'),
CreateMethodProperty: require('./2020/CreateMethodProperty'),
+ CreateRegExpStringIterator: require('./2020/CreateRegExpStringIterator'),
DateFromTime: require('./2020/DateFromTime'),
DateString: require('./2020/DateString'),
Day: require('./2020/Day'),
@@ -36,11 +42,13 @@ var ES2020 = {
DayWithinYear: require('./2020/DayWithinYear'),
DefinePropertyOrThrow: require('./2020/DefinePropertyOrThrow'),
DeletePropertyOrThrow: require('./2020/DeletePropertyOrThrow'),
+ DetachArrayBuffer: require('./2020/DetachArrayBuffer'),
EnumerableOwnPropertyNames: require('./2020/EnumerableOwnPropertyNames'),
FlattenIntoArray: require('./2020/FlattenIntoArray'),
floor: require('./2020/floor'),
FromPropertyDescriptor: require('./2020/FromPropertyDescriptor'),
Get: require('./2020/Get'),
+ GetGlobalObject: require('./2020/GetGlobalObject'),
GetIterator: require('./2020/GetIterator'),
GetMethod: require('./2020/GetMethod'),
GetOwnPropertyKeys: require('./2020/GetOwnPropertyKeys'),
@@ -57,9 +65,11 @@ var ES2020 = {
IsArray: require('./2020/IsArray'),
IsBigIntElementType: require('./2020/IsBigIntElementType'),
IsCallable: require('./2020/IsCallable'),
+ IsCompatiblePropertyDescriptor: require('./2020/IsCompatiblePropertyDescriptor'),
IsConcatSpreadable: require('./2020/IsConcatSpreadable'),
IsConstructor: require('./2020/IsConstructor'),
IsDataDescriptor: require('./2020/IsDataDescriptor'),
+ IsDetachedBuffer: require('./2020/IsDetachedBuffer'),
IsExtensible: require('./2020/IsExtensible'),
IsGenericDescriptor: require('./2020/IsGenericDescriptor'),
IsInteger: require('./2020/IsInteger'),
@@ -68,6 +78,7 @@ var ES2020 = {
IsPromise: require('./2020/IsPromise'),
IsPropertyKey: require('./2020/IsPropertyKey'),
IsRegExp: require('./2020/IsRegExp'),
+ IsSharedArrayBuffer: require('./2020/IsSharedArrayBuffer'),
IsStringPrefix: require('./2020/IsStringPrefix'),
IsUnclampedIntegerElementType: require('./2020/IsUnclampedIntegerElementType'),
IsUnsignedElementType: require('./2020/IsUnsignedElementType'),
@@ -81,13 +92,18 @@ var ES2020 = {
MakeDate: require('./2020/MakeDate'),
MakeDay: require('./2020/MakeDay'),
MakeTime: require('./2020/MakeTime'),
+ max: require('./2020/max'),
+ min: require('./2020/min'),
MinFromTime: require('./2020/MinFromTime'),
modulo: require('./2020/modulo'),
MonthFromTime: require('./2020/MonthFromTime'),
msFromTime: require('./2020/msFromTime'),
+ NormalCompletion: require('./2020/NormalCompletion'),
Number: require('./2020/Number'),
NumberBitwiseOp: require('./2020/NumberBitwiseOp'),
NumberToBigInt: require('./2020/NumberToBigInt'),
+ NumericToRawBytes: require('./2020/NumericToRawBytes'),
+ ObjectDefineProperties: require('./2020/ObjectDefineProperties'),
OrdinaryCreateFromConstructor: require('./2020/OrdinaryCreateFromConstructor'),
OrdinaryDefineOwnProperty: require('./2020/OrdinaryDefineOwnProperty'),
OrdinaryGetOwnProperty: require('./2020/OrdinaryGetOwnProperty'),
@@ -96,8 +112,10 @@ var ES2020 = {
OrdinaryHasProperty: require('./2020/OrdinaryHasProperty'),
OrdinaryObjectCreate: require('./2020/OrdinaryObjectCreate'),
OrdinarySetPrototypeOf: require('./2020/OrdinarySetPrototypeOf'),
+ OrdinaryToPrimitive: require('./2020/OrdinaryToPrimitive'),
PromiseResolve: require('./2020/PromiseResolve'),
QuoteJSONString: require('./2020/QuoteJSONString'),
+ RawBytesToNumeric: require('./2020/RawBytesToNumeric'),
RegExpCreate: require('./2020/RegExpCreate'),
RegExpExec: require('./2020/RegExpExec'),
RequireObjectCoercible: require('./2020/RequireObjectCoercible'),
@@ -114,6 +132,7 @@ var ES2020 = {
StringCreate: require('./2020/StringCreate'),
StringGetOwnProperty: require('./2020/StringGetOwnProperty'),
StringPad: require('./2020/StringPad'),
+ StringToBigInt: require('./2020/StringToBigInt'),
SymbolDescriptiveString: require('./2020/SymbolDescriptiveString'),
TestIntegrityLevel: require('./2020/TestIntegrityLevel'),
thisBigIntValue: require('./2020/thisBigIntValue'),
@@ -122,10 +141,14 @@ var ES2020 = {
thisStringValue: require('./2020/thisStringValue'),
thisSymbolValue: require('./2020/thisSymbolValue'),
thisTimeValue: require('./2020/thisTimeValue'),
+ ThrowCompletion: require('./2020/ThrowCompletion'),
TimeClip: require('./2020/TimeClip'),
TimeFromYear: require('./2020/TimeFromYear'),
TimeString: require('./2020/TimeString'),
TimeWithinDay: require('./2020/TimeWithinDay'),
+ ToBigInt: require('./2020/ToBigInt'),
+ ToBigInt64: require('./2020/ToBigInt64'),
+ ToBigUint64: require('./2020/ToBigUint64'),
ToBoolean: require('./2020/ToBoolean'),
ToDateString: require('./2020/ToDateString'),
ToIndex: require('./2020/ToIndex'),
@@ -152,6 +175,8 @@ var ES2020 = {
UTF16DecodeSurrogatePair: require('./2020/UTF16DecodeSurrogatePair'),
UTF16Encoding: require('./2020/UTF16Encoding'),
ValidateAndApplyPropertyDescriptor: require('./2020/ValidateAndApplyPropertyDescriptor'),
+ ValidateAtomicAccess: require('./2020/ValidateAtomicAccess'),
+ ValidateTypedArray: require('./2020/ValidateTypedArray'),
WeekDay: require('./2020/WeekDay'),
YearFromTime: require('./2020/YearFromTime')
};
diff --git a/node_modules/es-abstract/es2021.js b/node_modules/es-abstract/es2021.js
new file mode 100644
index 000000000..d49b0a99f
--- /dev/null
+++ b/node_modules/es-abstract/es2021.js
@@ -0,0 +1,195 @@
+'use strict';
+
+/* eslint global-require: 0 */
+// https://262.ecma-international.org/12.0/#sec-abstract-operations
+var ES2021 = {
+ 'Abstract Equality Comparison': require('./2021/AbstractEqualityComparison'),
+ 'Abstract Relational Comparison': require('./2021/AbstractRelationalComparison'),
+ 'Strict Equality Comparison': require('./2021/StrictEqualityComparison'),
+ abs: require('./2021/abs'),
+ AddEntriesFromIterable: require('./2021/AddEntriesFromIterable'),
+ AddToKeptObjects: require('./2021/AddToKeptObjects'),
+ AdvanceStringIndex: require('./2021/AdvanceStringIndex'),
+ ApplyStringOrNumericBinaryOperator: require('./2021/ApplyStringOrNumericBinaryOperator'),
+ ArrayCreate: require('./2021/ArrayCreate'),
+ ArraySetLength: require('./2021/ArraySetLength'),
+ ArraySpeciesCreate: require('./2021/ArraySpeciesCreate'),
+ AsyncFromSyncIteratorContinuation: require('./2021/AsyncFromSyncIteratorContinuation'),
+ AsyncIteratorClose: require('./2021/AsyncIteratorClose'),
+ BigInt: require('./2021/BigInt'),
+ BigIntBitwiseOp: require('./2021/BigIntBitwiseOp'),
+ BinaryAnd: require('./2021/BinaryAnd'),
+ BinaryOr: require('./2021/BinaryOr'),
+ BinaryXor: require('./2021/BinaryXor'),
+ ByteListBitwiseOp: require('./2021/ByteListBitwiseOp'),
+ ByteListEqual: require('./2021/ByteListEqual'),
+ Call: require('./2021/Call'),
+ CanonicalNumericIndexString: require('./2021/CanonicalNumericIndexString'),
+ CharacterRange: require('./2021/CharacterRange'),
+ clamp: require('./2021/clamp'),
+ ClearKeptObjects: require('./2021/ClearKeptObjects'),
+ CodePointAt: require('./2021/CodePointAt'),
+ CodePointsToString: require('./2021/CodePointsToString'),
+ CompletePropertyDescriptor: require('./2021/CompletePropertyDescriptor'),
+ CompletionRecord: require('./2021/CompletionRecord'),
+ CopyDataProperties: require('./2021/CopyDataProperties'),
+ CreateAsyncFromSyncIterator: require('./2021/CreateAsyncFromSyncIterator'),
+ CreateDataProperty: require('./2021/CreateDataProperty'),
+ CreateDataPropertyOrThrow: require('./2021/CreateDataPropertyOrThrow'),
+ CreateHTML: require('./2021/CreateHTML'),
+ CreateIterResultObject: require('./2021/CreateIterResultObject'),
+ CreateListFromArrayLike: require('./2021/CreateListFromArrayLike'),
+ CreateMethodProperty: require('./2021/CreateMethodProperty'),
+ CreateRegExpStringIterator: require('./2021/CreateRegExpStringIterator'),
+ DateFromTime: require('./2021/DateFromTime'),
+ DateString: require('./2021/DateString'),
+ Day: require('./2021/Day'),
+ DayFromYear: require('./2021/DayFromYear'),
+ DaysInYear: require('./2021/DaysInYear'),
+ DayWithinYear: require('./2021/DayWithinYear'),
+ DefinePropertyOrThrow: require('./2021/DefinePropertyOrThrow'),
+ DeletePropertyOrThrow: require('./2021/DeletePropertyOrThrow'),
+ DetachArrayBuffer: require('./2021/DetachArrayBuffer'),
+ EnumerableOwnPropertyNames: require('./2021/EnumerableOwnPropertyNames'),
+ FlattenIntoArray: require('./2021/FlattenIntoArray'),
+ floor: require('./2021/floor'),
+ FromPropertyDescriptor: require('./2021/FromPropertyDescriptor'),
+ Get: require('./2021/Get'),
+ GetGlobalObject: require('./2021/GetGlobalObject'),
+ GetIterator: require('./2021/GetIterator'),
+ GetMethod: require('./2021/GetMethod'),
+ GetOwnPropertyKeys: require('./2021/GetOwnPropertyKeys'),
+ GetPromiseResolve: require('./2021/GetPromiseResolve'),
+ GetPrototypeFromConstructor: require('./2021/GetPrototypeFromConstructor'),
+ GetSubstitution: require('./2021/GetSubstitution'),
+ GetV: require('./2021/GetV'),
+ HasOwnProperty: require('./2021/HasOwnProperty'),
+ HasProperty: require('./2021/HasProperty'),
+ HourFromTime: require('./2021/HourFromTime'),
+ InLeapYear: require('./2021/InLeapYear'),
+ InstanceofOperator: require('./2021/InstanceofOperator'),
+ Invoke: require('./2021/Invoke'),
+ IsAccessorDescriptor: require('./2021/IsAccessorDescriptor'),
+ IsArray: require('./2021/IsArray'),
+ IsBigIntElementType: require('./2021/IsBigIntElementType'),
+ IsCallable: require('./2021/IsCallable'),
+ IsCompatiblePropertyDescriptor: require('./2021/IsCompatiblePropertyDescriptor'),
+ IsConcatSpreadable: require('./2021/IsConcatSpreadable'),
+ IsConstructor: require('./2021/IsConstructor'),
+ IsDataDescriptor: require('./2021/IsDataDescriptor'),
+ IsDetachedBuffer: require('./2021/IsDetachedBuffer'),
+ IsExtensible: require('./2021/IsExtensible'),
+ IsGenericDescriptor: require('./2021/IsGenericDescriptor'),
+ IsIntegralNumber: require('./2021/IsIntegralNumber'),
+ IsNoTearConfiguration: require('./2021/IsNoTearConfiguration'),
+ IsPromise: require('./2021/IsPromise'),
+ IsPropertyKey: require('./2021/IsPropertyKey'),
+ IsRegExp: require('./2021/IsRegExp'),
+ IsSharedArrayBuffer: require('./2021/IsSharedArrayBuffer'),
+ IsStringPrefix: require('./2021/IsStringPrefix'),
+ IsUnclampedIntegerElementType: require('./2021/IsUnclampedIntegerElementType'),
+ IsUnsignedElementType: require('./2021/IsUnsignedElementType'),
+ IterableToList: require('./2021/IterableToList'),
+ IteratorClose: require('./2021/IteratorClose'),
+ IteratorComplete: require('./2021/IteratorComplete'),
+ IteratorNext: require('./2021/IteratorNext'),
+ IteratorStep: require('./2021/IteratorStep'),
+ IteratorValue: require('./2021/IteratorValue'),
+ LengthOfArrayLike: require('./2021/LengthOfArrayLike'),
+ MakeDate: require('./2021/MakeDate'),
+ MakeDay: require('./2021/MakeDay'),
+ MakeTime: require('./2021/MakeTime'),
+ max: require('./2021/max'),
+ min: require('./2021/min'),
+ MinFromTime: require('./2021/MinFromTime'),
+ modulo: require('./2021/modulo'),
+ MonthFromTime: require('./2021/MonthFromTime'),
+ msFromTime: require('./2021/msFromTime'),
+ NormalCompletion: require('./2021/NormalCompletion'),
+ Number: require('./2021/Number'),
+ NumberBitwiseOp: require('./2021/NumberBitwiseOp'),
+ NumberToBigInt: require('./2021/NumberToBigInt'),
+ NumericToRawBytes: require('./2021/NumericToRawBytes'),
+ ObjectDefineProperties: require('./2021/ObjectDefineProperties'),
+ OrdinaryCreateFromConstructor: require('./2021/OrdinaryCreateFromConstructor'),
+ OrdinaryDefineOwnProperty: require('./2021/OrdinaryDefineOwnProperty'),
+ OrdinaryGetOwnProperty: require('./2021/OrdinaryGetOwnProperty'),
+ OrdinaryGetPrototypeOf: require('./2021/OrdinaryGetPrototypeOf'),
+ OrdinaryHasInstance: require('./2021/OrdinaryHasInstance'),
+ OrdinaryHasProperty: require('./2021/OrdinaryHasProperty'),
+ OrdinaryObjectCreate: require('./2021/OrdinaryObjectCreate'),
+ OrdinarySetPrototypeOf: require('./2021/OrdinarySetPrototypeOf'),
+ OrdinaryToPrimitive: require('./2021/OrdinaryToPrimitive'),
+ PromiseResolve: require('./2021/PromiseResolve'),
+ QuoteJSONString: require('./2021/QuoteJSONString'),
+ RawBytesToNumeric: require('./2021/RawBytesToNumeric'),
+ RegExpCreate: require('./2021/RegExpCreate'),
+ RegExpExec: require('./2021/RegExpExec'),
+ RequireObjectCoercible: require('./2021/RequireObjectCoercible'),
+ SameValue: require('./2021/SameValue'),
+ SameValueNonNumeric: require('./2021/SameValueNonNumeric'),
+ SameValueZero: require('./2021/SameValueZero'),
+ SecFromTime: require('./2021/SecFromTime'),
+ Set: require('./2021/Set'),
+ SetFunctionLength: require('./2021/SetFunctionLength'),
+ SetFunctionName: require('./2021/SetFunctionName'),
+ SetIntegrityLevel: require('./2021/SetIntegrityLevel'),
+ SpeciesConstructor: require('./2021/SpeciesConstructor'),
+ SplitMatch: require('./2021/SplitMatch'),
+ StringCreate: require('./2021/StringCreate'),
+ StringGetOwnProperty: require('./2021/StringGetOwnProperty'),
+ StringIndexOf: require('./2021/StringIndexOf'),
+ StringPad: require('./2021/StringPad'),
+ StringToBigInt: require('./2021/StringToBigInt'),
+ StringToCodePoints: require('./2021/StringToCodePoints'),
+ substring: require('./2021/substring'),
+ SymbolDescriptiveString: require('./2021/SymbolDescriptiveString'),
+ TestIntegrityLevel: require('./2021/TestIntegrityLevel'),
+ thisBigIntValue: require('./2021/thisBigIntValue'),
+ thisBooleanValue: require('./2021/thisBooleanValue'),
+ thisNumberValue: require('./2021/thisNumberValue'),
+ thisStringValue: require('./2021/thisStringValue'),
+ thisSymbolValue: require('./2021/thisSymbolValue'),
+ thisTimeValue: require('./2021/thisTimeValue'),
+ ThrowCompletion: require('./2021/ThrowCompletion'),
+ TimeClip: require('./2021/TimeClip'),
+ TimeFromYear: require('./2021/TimeFromYear'),
+ TimeString: require('./2021/TimeString'),
+ TimeWithinDay: require('./2021/TimeWithinDay'),
+ ToBigInt: require('./2021/ToBigInt'),
+ ToBigInt64: require('./2021/ToBigInt64'),
+ ToBigUint64: require('./2021/ToBigUint64'),
+ ToBoolean: require('./2021/ToBoolean'),
+ ToDateString: require('./2021/ToDateString'),
+ ToIndex: require('./2021/ToIndex'),
+ ToInt16: require('./2021/ToInt16'),
+ ToInt32: require('./2021/ToInt32'),
+ ToInt8: require('./2021/ToInt8'),
+ ToIntegerOrInfinity: require('./2021/ToIntegerOrInfinity'),
+ ToLength: require('./2021/ToLength'),
+ ToNumber: require('./2021/ToNumber'),
+ ToNumeric: require('./2021/ToNumeric'),
+ ToObject: require('./2021/ToObject'),
+ ToPrimitive: require('./2021/ToPrimitive'),
+ ToPropertyDescriptor: require('./2021/ToPropertyDescriptor'),
+ ToPropertyKey: require('./2021/ToPropertyKey'),
+ ToString: require('./2021/ToString'),
+ ToUint16: require('./2021/ToUint16'),
+ ToUint32: require('./2021/ToUint32'),
+ ToUint8: require('./2021/ToUint8'),
+ ToUint8Clamp: require('./2021/ToUint8Clamp'),
+ TrimString: require('./2021/TrimString'),
+ Type: require('./2021/Type'),
+ UnicodeEscape: require('./2021/UnicodeEscape'),
+ UTF16EncodeCodePoint: require('./2021/UTF16EncodeCodePoint'),
+ UTF16SurrogatePairToCodePoint: require('./2021/UTF16SurrogatePairToCodePoint'),
+ ValidateAndApplyPropertyDescriptor: require('./2021/ValidateAndApplyPropertyDescriptor'),
+ ValidateAtomicAccess: require('./2021/ValidateAtomicAccess'),
+ ValidateIntegerTypedArray: require('./2021/ValidateIntegerTypedArray'),
+ ValidateTypedArray: require('./2021/ValidateTypedArray'),
+ WeakRefDeref: require('./2021/WeakRefDeref'),
+ WeekDay: require('./2021/WeekDay'),
+ YearFromTime: require('./2021/YearFromTime')
+};
+
+module.exports = ES2021;
diff --git a/node_modules/es-abstract/es2022.js b/node_modules/es-abstract/es2022.js
new file mode 100644
index 000000000..0856d70e7
--- /dev/null
+++ b/node_modules/es-abstract/es2022.js
@@ -0,0 +1,207 @@
+'use strict';
+
+/* eslint global-require: 0 */
+// https://262.ecma-international.org/13.0/#sec-abstract-operations
+var ES2022 = {
+ abs: require('./2022/abs'),
+ AddEntriesFromIterable: require('./2022/AddEntriesFromIterable'),
+ AddToKeptObjects: require('./2022/AddToKeptObjects'),
+ AdvanceStringIndex: require('./2022/AdvanceStringIndex'),
+ ApplyStringOrNumericBinaryOperator: require('./2022/ApplyStringOrNumericBinaryOperator'),
+ ArrayCreate: require('./2022/ArrayCreate'),
+ ArraySetLength: require('./2022/ArraySetLength'),
+ ArraySpeciesCreate: require('./2022/ArraySpeciesCreate'),
+ AsyncFromSyncIteratorContinuation: require('./2022/AsyncFromSyncIteratorContinuation'),
+ AsyncIteratorClose: require('./2022/AsyncIteratorClose'),
+ BigInt: require('./2022/BigInt'),
+ BigIntBitwiseOp: require('./2022/BigIntBitwiseOp'),
+ BinaryAnd: require('./2022/BinaryAnd'),
+ BinaryOr: require('./2022/BinaryOr'),
+ BinaryXor: require('./2022/BinaryXor'),
+ ByteListBitwiseOp: require('./2022/ByteListBitwiseOp'),
+ ByteListEqual: require('./2022/ByteListEqual'),
+ Call: require('./2022/Call'),
+ CanonicalNumericIndexString: require('./2022/CanonicalNumericIndexString'),
+ CharacterRange: require('./2022/CharacterRange'),
+ clamp: require('./2022/clamp'),
+ ClearKeptObjects: require('./2022/ClearKeptObjects'),
+ CodePointAt: require('./2022/CodePointAt'),
+ CodePointsToString: require('./2022/CodePointsToString'),
+ CompletePropertyDescriptor: require('./2022/CompletePropertyDescriptor'),
+ CompletionRecord: require('./2022/CompletionRecord'),
+ CopyDataProperties: require('./2022/CopyDataProperties'),
+ CreateAsyncFromSyncIterator: require('./2022/CreateAsyncFromSyncIterator'),
+ CreateDataProperty: require('./2022/CreateDataProperty'),
+ CreateDataPropertyOrThrow: require('./2022/CreateDataPropertyOrThrow'),
+ CreateHTML: require('./2022/CreateHTML'),
+ CreateIterResultObject: require('./2022/CreateIterResultObject'),
+ CreateListFromArrayLike: require('./2022/CreateListFromArrayLike'),
+ CreateMethodProperty: require('./2022/CreateMethodProperty'),
+ CreateNonEnumerableDataPropertyOrThrow: require('./2022/CreateNonEnumerableDataPropertyOrThrow'),
+ CreateRegExpStringIterator: require('./2022/CreateRegExpStringIterator'),
+ DateFromTime: require('./2022/DateFromTime'),
+ DateString: require('./2022/DateString'),
+ Day: require('./2022/Day'),
+ DayFromYear: require('./2022/DayFromYear'),
+ DaysInYear: require('./2022/DaysInYear'),
+ DayWithinYear: require('./2022/DayWithinYear'),
+ DefinePropertyOrThrow: require('./2022/DefinePropertyOrThrow'),
+ DeletePropertyOrThrow: require('./2022/DeletePropertyOrThrow'),
+ DetachArrayBuffer: require('./2022/DetachArrayBuffer'),
+ EnumerableOwnPropertyNames: require('./2022/EnumerableOwnPropertyNames'),
+ FlattenIntoArray: require('./2022/FlattenIntoArray'),
+ floor: require('./2022/floor'),
+ FromPropertyDescriptor: require('./2022/FromPropertyDescriptor'),
+ Get: require('./2022/Get'),
+ GetGlobalObject: require('./2022/GetGlobalObject'),
+ GetIterator: require('./2022/GetIterator'),
+ GetMatchIndexPair: require('./2022/GetMatchIndexPair'),
+ GetMatchString: require('./2022/GetMatchString'),
+ GetMethod: require('./2022/GetMethod'),
+ GetOwnPropertyKeys: require('./2022/GetOwnPropertyKeys'),
+ GetPromiseResolve: require('./2022/GetPromiseResolve'),
+ GetPrototypeFromConstructor: require('./2022/GetPrototypeFromConstructor'),
+ GetStringIndex: require('./2022/GetStringIndex'),
+ GetSubstitution: require('./2022/GetSubstitution'),
+ GetV: require('./2022/GetV'),
+ HasOwnProperty: require('./2022/HasOwnProperty'),
+ HasProperty: require('./2022/HasProperty'),
+ HourFromTime: require('./2022/HourFromTime'),
+ InLeapYear: require('./2022/InLeapYear'),
+ InstallErrorCause: require('./2022/InstallErrorCause'),
+ InstanceofOperator: require('./2022/InstanceofOperator'),
+ Invoke: require('./2022/Invoke'),
+ IsAccessorDescriptor: require('./2022/IsAccessorDescriptor'),
+ IsArray: require('./2022/IsArray'),
+ IsBigIntElementType: require('./2022/IsBigIntElementType'),
+ IsCallable: require('./2022/IsCallable'),
+ IsCompatiblePropertyDescriptor: require('./2022/IsCompatiblePropertyDescriptor'),
+ IsConcatSpreadable: require('./2022/IsConcatSpreadable'),
+ IsConstructor: require('./2022/IsConstructor'),
+ IsDataDescriptor: require('./2022/IsDataDescriptor'),
+ IsDetachedBuffer: require('./2022/IsDetachedBuffer'),
+ IsExtensible: require('./2022/IsExtensible'),
+ IsGenericDescriptor: require('./2022/IsGenericDescriptor'),
+ IsIntegralNumber: require('./2022/IsIntegralNumber'),
+ IsLessThan: require('./2022/IsLessThan'),
+ IsLooselyEqual: require('./2022/IsLooselyEqual'),
+ IsNoTearConfiguration: require('./2022/IsNoTearConfiguration'),
+ IsPromise: require('./2022/IsPromise'),
+ IsPropertyKey: require('./2022/IsPropertyKey'),
+ IsRegExp: require('./2022/IsRegExp'),
+ IsSharedArrayBuffer: require('./2022/IsSharedArrayBuffer'),
+ IsStrictlyEqual: require('./2022/IsStrictlyEqual'),
+ IsStringPrefix: require('./2022/IsStringPrefix'),
+ IsStringWellFormedUnicode: require('./2022/IsStringWellFormedUnicode'),
+ IsUnclampedIntegerElementType: require('./2022/IsUnclampedIntegerElementType'),
+ IsUnsignedElementType: require('./2022/IsUnsignedElementType'),
+ IterableToList: require('./2022/IterableToList'),
+ IteratorClose: require('./2022/IteratorClose'),
+ IteratorComplete: require('./2022/IteratorComplete'),
+ IteratorNext: require('./2022/IteratorNext'),
+ IteratorStep: require('./2022/IteratorStep'),
+ IteratorValue: require('./2022/IteratorValue'),
+ LengthOfArrayLike: require('./2022/LengthOfArrayLike'),
+ MakeDate: require('./2022/MakeDate'),
+ MakeDay: require('./2022/MakeDay'),
+ MakeMatchIndicesIndexPairArray: require('./2022/MakeMatchIndicesIndexPairArray'),
+ MakeTime: require('./2022/MakeTime'),
+ max: require('./2022/max'),
+ min: require('./2022/min'),
+ MinFromTime: require('./2022/MinFromTime'),
+ modulo: require('./2022/modulo'),
+ MonthFromTime: require('./2022/MonthFromTime'),
+ msFromTime: require('./2022/msFromTime'),
+ NormalCompletion: require('./2022/NormalCompletion'),
+ Number: require('./2022/Number'),
+ NumberBitwiseOp: require('./2022/NumberBitwiseOp'),
+ NumberToBigInt: require('./2022/NumberToBigInt'),
+ NumericToRawBytes: require('./2022/NumericToRawBytes'),
+ ObjectDefineProperties: require('./2022/ObjectDefineProperties'),
+ OrdinaryCreateFromConstructor: require('./2022/OrdinaryCreateFromConstructor'),
+ OrdinaryDefineOwnProperty: require('./2022/OrdinaryDefineOwnProperty'),
+ OrdinaryGetOwnProperty: require('./2022/OrdinaryGetOwnProperty'),
+ OrdinaryGetPrototypeOf: require('./2022/OrdinaryGetPrototypeOf'),
+ OrdinaryHasInstance: require('./2022/OrdinaryHasInstance'),
+ OrdinaryHasProperty: require('./2022/OrdinaryHasProperty'),
+ OrdinaryObjectCreate: require('./2022/OrdinaryObjectCreate'),
+ OrdinarySetPrototypeOf: require('./2022/OrdinarySetPrototypeOf'),
+ OrdinaryToPrimitive: require('./2022/OrdinaryToPrimitive'),
+ PromiseResolve: require('./2022/PromiseResolve'),
+ QuoteJSONString: require('./2022/QuoteJSONString'),
+ RawBytesToNumeric: require('./2022/RawBytesToNumeric'),
+ RegExpCreate: require('./2022/RegExpCreate'),
+ RegExpExec: require('./2022/RegExpExec'),
+ RegExpHasFlag: require('./2022/RegExpHasFlag'),
+ RequireObjectCoercible: require('./2022/RequireObjectCoercible'),
+ SameValue: require('./2022/SameValue'),
+ SameValueNonNumeric: require('./2022/SameValueNonNumeric'),
+ SameValueZero: require('./2022/SameValueZero'),
+ SecFromTime: require('./2022/SecFromTime'),
+ Set: require('./2022/Set'),
+ SetFunctionLength: require('./2022/SetFunctionLength'),
+ SetFunctionName: require('./2022/SetFunctionName'),
+ SetIntegrityLevel: require('./2022/SetIntegrityLevel'),
+ SortIndexedProperties: require('./2022/SortIndexedProperties'),
+ SpeciesConstructor: require('./2022/SpeciesConstructor'),
+ StringCreate: require('./2022/StringCreate'),
+ StringGetOwnProperty: require('./2022/StringGetOwnProperty'),
+ StringIndexOf: require('./2022/StringIndexOf'),
+ StringPad: require('./2022/StringPad'),
+ StringToBigInt: require('./2022/StringToBigInt'),
+ StringToCodePoints: require('./2022/StringToCodePoints'),
+ StringToNumber: require('./2022/StringToNumber'),
+ substring: require('./2022/substring'),
+ SymbolDescriptiveString: require('./2022/SymbolDescriptiveString'),
+ TestIntegrityLevel: require('./2022/TestIntegrityLevel'),
+ thisBigIntValue: require('./2022/thisBigIntValue'),
+ thisBooleanValue: require('./2022/thisBooleanValue'),
+ thisNumberValue: require('./2022/thisNumberValue'),
+ thisStringValue: require('./2022/thisStringValue'),
+ thisSymbolValue: require('./2022/thisSymbolValue'),
+ thisTimeValue: require('./2022/thisTimeValue'),
+ ThrowCompletion: require('./2022/ThrowCompletion'),
+ TimeClip: require('./2022/TimeClip'),
+ TimeFromYear: require('./2022/TimeFromYear'),
+ TimeString: require('./2022/TimeString'),
+ TimeWithinDay: require('./2022/TimeWithinDay'),
+ ToBigInt: require('./2022/ToBigInt'),
+ ToBigInt64: require('./2022/ToBigInt64'),
+ ToBigUint64: require('./2022/ToBigUint64'),
+ ToBoolean: require('./2022/ToBoolean'),
+ ToDateString: require('./2022/ToDateString'),
+ ToIndex: require('./2022/ToIndex'),
+ ToInt16: require('./2022/ToInt16'),
+ ToInt32: require('./2022/ToInt32'),
+ ToInt8: require('./2022/ToInt8'),
+ ToIntegerOrInfinity: require('./2022/ToIntegerOrInfinity'),
+ ToLength: require('./2022/ToLength'),
+ ToNumber: require('./2022/ToNumber'),
+ ToNumeric: require('./2022/ToNumeric'),
+ ToObject: require('./2022/ToObject'),
+ ToPrimitive: require('./2022/ToPrimitive'),
+ ToPropertyDescriptor: require('./2022/ToPropertyDescriptor'),
+ ToPropertyKey: require('./2022/ToPropertyKey'),
+ ToString: require('./2022/ToString'),
+ ToUint16: require('./2022/ToUint16'),
+ ToUint32: require('./2022/ToUint32'),
+ ToUint8: require('./2022/ToUint8'),
+ ToUint8Clamp: require('./2022/ToUint8Clamp'),
+ ToZeroPaddedDecimalString: require('./2022/ToZeroPaddedDecimalString'),
+ TrimString: require('./2022/TrimString'),
+ Type: require('./2022/Type'),
+ TypedArrayElementSize: require('./2022/TypedArrayElementSize'),
+ TypedArrayElementType: require('./2022/TypedArrayElementType'),
+ UnicodeEscape: require('./2022/UnicodeEscape'),
+ UTF16EncodeCodePoint: require('./2022/UTF16EncodeCodePoint'),
+ UTF16SurrogatePairToCodePoint: require('./2022/UTF16SurrogatePairToCodePoint'),
+ ValidateAndApplyPropertyDescriptor: require('./2022/ValidateAndApplyPropertyDescriptor'),
+ ValidateAtomicAccess: require('./2022/ValidateAtomicAccess'),
+ ValidateIntegerTypedArray: require('./2022/ValidateIntegerTypedArray'),
+ ValidateTypedArray: require('./2022/ValidateTypedArray'),
+ WeakRefDeref: require('./2022/WeakRefDeref'),
+ WeekDay: require('./2022/WeekDay'),
+ YearFromTime: require('./2022/YearFromTime')
+};
+
+module.exports = ES2022;
diff --git a/node_modules/es-abstract/helpers/DefineOwnProperty.js b/node_modules/es-abstract/helpers/DefineOwnProperty.js
index 1a378a41b..61e83716e 100644
--- a/node_modules/es-abstract/helpers/DefineOwnProperty.js
+++ b/node_modules/es-abstract/helpers/DefineOwnProperty.js
@@ -1,17 +1,15 @@
'use strict';
+var hasPropertyDescriptors = require('has-property-descriptors');
+
var GetIntrinsic = require('get-intrinsic');
-var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
+var $defineProperty = hasPropertyDescriptors() && GetIntrinsic('%Object.defineProperty%', true);
-if ($defineProperty) {
- try {
- $defineProperty({}, 'a', { value: 1 });
- } catch (e) {
- // IE 8 has a broken defineProperty
- $defineProperty = null;
- }
-}
+var hasArrayLengthDefineBug = hasPropertyDescriptors.hasArrayLengthDefineBug();
+
+// eslint-disable-next-line global-require
+var isArray = hasArrayLengthDefineBug && require('../helpers/IsArray');
var callBound = require('call-bind/callBound');
@@ -40,6 +38,18 @@ module.exports = function DefineOwnProperty(IsDataDescriptor, SameValue, FromPro
O[P] = V; // will use [[Define]]
return SameValue(O[P], V);
}
+ if (
+ hasArrayLengthDefineBug
+ && P === 'length'
+ && '[[Value]]' in desc
+ && isArray(O)
+ && O.length !== desc['[[Value]]']
+ ) {
+ // eslint-disable-next-line no-param-reassign
+ O.length = desc['[[Value]]'];
+ return O.length === desc['[[Value]]'];
+ }
+
$defineProperty(O, P, FromPropertyDescriptor(desc));
return true;
};
diff --git a/node_modules/es-abstract/helpers/IsArray.js b/node_modules/es-abstract/helpers/IsArray.js
new file mode 100644
index 000000000..26b52fb4b
--- /dev/null
+++ b/node_modules/es-abstract/helpers/IsArray.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $Array = GetIntrinsic('%Array%');
+
+// eslint-disable-next-line global-require
+var toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');
+
+module.exports = $Array.isArray || function IsArray(argument) {
+ return toStr(argument) === '[object Array]';
+};
diff --git a/node_modules/es-abstract/helpers/assertRecord.js b/node_modules/es-abstract/helpers/assertRecord.js
index 623bc56d1..3d93ec55a 100644
--- a/node_modules/es-abstract/helpers/assertRecord.js
+++ b/node_modules/es-abstract/helpers/assertRecord.js
@@ -7,12 +7,11 @@ var $SyntaxError = GetIntrinsic('%SyntaxError%');
var has = require('has');
+var isMatchRecord = require('./isMatchRecord');
+
var predicates = {
// https://262.ecma-international.org/6.0/#sec-property-descriptor-specification-type
- 'Property Descriptor': function isPropertyDescriptor(Type, Desc) {
- if (Type(Desc) !== 'Object') {
- return false;
- }
+ 'Property Descriptor': function isPropertyDescriptor(Desc) {
var allowed = {
'[[Configurable]]': true,
'[[Enumerable]]': true,
@@ -34,6 +33,27 @@ var predicates = {
throw new $TypeError('Property Descriptors may not be both accessor and data descriptors');
}
return true;
+ },
+ // https://262.ecma-international.org/13.0/#sec-match-records
+ 'Match Record': isMatchRecord,
+ 'Iterator Record': function isIteratorRecord(value) {
+ return has(value, '[[Iterator]]') && has(value, '[[NextMethod]]') && has(value, '[[Done]]');
+ },
+ 'PromiseCapability Record': function isPromiseCapabilityRecord(value) {
+ return value
+ && has(value, '[[Resolve]]')
+ && typeof value['[[Resolve]]'] === 'function'
+ && has(value, '[[Reject]]')
+ && typeof value['[[Reject]]'] === 'function'
+ && has(value, '[[Promise]]')
+ && value['[[Promise]]']
+ && typeof value['[[Promise]]'].then === 'function';
+ },
+ 'AsyncGeneratorRequest Record': function isAsyncGeneratorRequestRecord(value) {
+ return value
+ && has(value, '[[Completion]]') // TODO: confirm is a completion record
+ && has(value, '[[Capability]]')
+ && predicates['PromiseCapability Record'](value['[[Capability]]']);
}
};
@@ -42,7 +62,7 @@ module.exports = function assertRecord(Type, recordType, argumentName, value) {
if (typeof predicate !== 'function') {
throw new $SyntaxError('unknown record type: ' + recordType);
}
- if (!predicate(Type, value)) {
+ if (Type(value) !== 'Object' || !predicate(value)) {
throw new $TypeError(argumentName + ' must be a ' + recordType);
}
};
diff --git a/node_modules/es-abstract/helpers/assign.js b/node_modules/es-abstract/helpers/assign.js
index 56eeb1c1f..c89c68039 100644
--- a/node_modules/es-abstract/helpers/assign.js
+++ b/node_modules/es-abstract/helpers/assign.js
@@ -4,7 +4,7 @@ var GetIntrinsic = require('get-intrinsic');
var has = require('has');
-var $assign = GetIntrinsic('%Object%').assign;
+var $assign = GetIntrinsic('%Object.assign%', true);
module.exports = function assign(target, source) {
if ($assign) {
diff --git a/node_modules/es-abstract/helpers/fromPropertyDescriptor.js b/node_modules/es-abstract/helpers/fromPropertyDescriptor.js
new file mode 100644
index 000000000..878861271
--- /dev/null
+++ b/node_modules/es-abstract/helpers/fromPropertyDescriptor.js
@@ -0,0 +1,27 @@
+'use strict';
+
+module.exports = function fromPropertyDescriptor(Desc) {
+ if (typeof Desc === 'undefined') {
+ return Desc;
+ }
+ var obj = {};
+ if ('[[Value]]' in Desc) {
+ obj.value = Desc['[[Value]]'];
+ }
+ if ('[[Writable]]' in Desc) {
+ obj.writable = !!Desc['[[Writable]]'];
+ }
+ if ('[[Get]]' in Desc) {
+ obj.get = Desc['[[Get]]'];
+ }
+ if ('[[Set]]' in Desc) {
+ obj.set = Desc['[[Set]]'];
+ }
+ if ('[[Enumerable]]' in Desc) {
+ obj.enumerable = !!Desc['[[Enumerable]]'];
+ }
+ if ('[[Configurable]]' in Desc) {
+ obj.configurable = !!Desc['[[Configurable]]'];
+ }
+ return obj;
+};
diff --git a/node_modules/es-abstract/helpers/getInferredName.js b/node_modules/es-abstract/helpers/getInferredName.js
index 2dab6e77b..5fd24ffa8 100644
--- a/node_modules/es-abstract/helpers/getInferredName.js
+++ b/node_modules/es-abstract/helpers/getInferredName.js
@@ -1,10 +1,4 @@
'use strict';
-var getInferredName;
-try {
- // eslint-disable-next-line no-new-func
- getInferredName = Function('s', 'return { [s]() {} }[s].name;');
-} catch (e) {}
-
-var inferred = function () {};
-module.exports = getInferredName && inferred.name === 'inferred' ? getInferredName : null;
+// TODO: remove, semver-major
+module.exports = require('get-symbol-description/getInferredName');
diff --git a/node_modules/es-abstract/helpers/getIteratorMethod.js b/node_modules/es-abstract/helpers/getIteratorMethod.js
index fe581f414..9acb8009d 100644
--- a/node_modules/es-abstract/helpers/getIteratorMethod.js
+++ b/node_modules/es-abstract/helpers/getIteratorMethod.js
@@ -3,9 +3,11 @@
var hasSymbols = require('has-symbols')();
var GetIntrinsic = require('get-intrinsic');
var callBound = require('call-bind/callBound');
+var isString = require('is-string');
var $iterator = GetIntrinsic('%Symbol.iterator%', true);
var $stringSlice = callBound('String.prototype.slice');
+var $String = GetIntrinsic('%String%', true);
module.exports = function getIteratorMethod(ES, iterable) {
var usingIterator;
@@ -25,12 +27,12 @@ module.exports = function getIteratorMethod(ES, iterable) {
}
};
};
- } else if (ES.Type(iterable) === 'String') {
+ } else if (isString(iterable)) {
usingIterator = function () {
var i = 0;
return {
next: function () {
- var nextIndex = ES.AdvanceStringIndex(iterable, i, true);
+ var nextIndex = ES.AdvanceStringIndex($String(iterable), i, true);
var value = $stringSlice(iterable, i, nextIndex);
i = nextIndex;
return {
diff --git a/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js b/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js
index 79cf0488e..e0f823d10 100644
--- a/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js
+++ b/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js
@@ -1,15 +1,5 @@
'use strict';
-var GetIntrinsic = require('get-intrinsic');
+// TODO: remove, semver-major
-var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');
-if ($gOPD) {
- try {
- $gOPD([], 'length');
- } catch (e) {
- // IE 8 has a broken gOPD
- $gOPD = null;
- }
-}
-
-module.exports = $gOPD;
+module.exports = require('gopd');
diff --git a/node_modules/es-abstract/helpers/getProto.js b/node_modules/es-abstract/helpers/getProto.js
index c190c7bd0..d63903ad4 100644
--- a/node_modules/es-abstract/helpers/getProto.js
+++ b/node_modules/es-abstract/helpers/getProto.js
@@ -3,11 +3,11 @@
var GetIntrinsic = require('get-intrinsic');
var originalGetProto = GetIntrinsic('%Object.getPrototypeOf%', true);
-var $ArrayProto = GetIntrinsic('%Array.prototype%');
+
+var hasProto = require('has-proto')();
module.exports = originalGetProto || (
- // eslint-disable-next-line no-proto
- [].__proto__ === $ArrayProto
+ hasProto
? function (O) {
return O.__proto__; // eslint-disable-line no-proto
}
diff --git a/node_modules/es-abstract/helpers/getSymbolDescription.js b/node_modules/es-abstract/helpers/getSymbolDescription.js
index e31cad274..699705f4f 100644
--- a/node_modules/es-abstract/helpers/getSymbolDescription.js
+++ b/node_modules/es-abstract/helpers/getSymbolDescription.js
@@ -1,41 +1,4 @@
'use strict';
-var GetIntrinsic = require('get-intrinsic');
-
-var callBound = require('call-bind/callBound');
-
-var $SyntaxError = GetIntrinsic('%SyntaxError%');
-var getGlobalSymbolDescription = GetIntrinsic('%Symbol.keyFor%', true);
-var thisSymbolValue = callBound('%Symbol.prototype.valueOf%', true);
-var symToStr = callBound('Symbol.prototype.toString', true);
-
-var getInferredName = require('./getInferredName');
-
-/* eslint-disable consistent-return */
-module.exports = callBound('%Symbol.prototype.description%', true) || function getSymbolDescription(symbol) {
- if (!thisSymbolValue) {
- throw new $SyntaxError('Symbols are not supported in this environment');
- }
-
- // will throw if not a symbol primitive or wrapper object
- var sym = thisSymbolValue(symbol);
-
- if (getInferredName) {
- var name = getInferredName(sym);
- if (name === '') { return; }
- return name.slice(1, -1); // name.slice('['.length, -']'.length);
- }
-
- var desc;
- if (getGlobalSymbolDescription) {
- desc = getGlobalSymbolDescription(sym);
- if (typeof desc === 'string') {
- return desc;
- }
- }
-
- desc = symToStr(sym).slice(7, -1); // str.slice('Symbol('.length, -')'.length);
- if (desc) {
- return desc;
- }
-};
+// TODO: remove, semver-major
+module.exports = require('get-symbol-description');
diff --git a/node_modules/es-abstract/helpers/isAbstractClosure.js b/node_modules/es-abstract/helpers/isAbstractClosure.js
new file mode 100644
index 000000000..503200dc5
--- /dev/null
+++ b/node_modules/es-abstract/helpers/isAbstractClosure.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var functionName = require('function.prototype.name');
+
+var anon = functionName(function () {});
+
+module.exports = function isAbstractClosure(x) {
+ return typeof x === 'function' && (!x.prototype || functionName(x) === anon);
+};
diff --git a/node_modules/es-abstract/helpers/isFinite.js b/node_modules/es-abstract/helpers/isFinite.js
index 9e7cd4f82..3bcd663b2 100644
--- a/node_modules/es-abstract/helpers/isFinite.js
+++ b/node_modules/es-abstract/helpers/isFinite.js
@@ -1,5 +1,5 @@
'use strict';
-var $isNaN = Number.isNaN || function (a) { return a !== a; };
+var $isNaN = require('./isNaN');
-module.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };
+module.exports = function (x) { return (typeof x === 'number' || typeof x === 'bigint') && !$isNaN(x) && x !== Infinity && x !== -Infinity; };
diff --git a/node_modules/es-abstract/helpers/isFullyPopulatedPropertyDescriptor.js b/node_modules/es-abstract/helpers/isFullyPopulatedPropertyDescriptor.js
new file mode 100644
index 000000000..e33d0d7e1
--- /dev/null
+++ b/node_modules/es-abstract/helpers/isFullyPopulatedPropertyDescriptor.js
@@ -0,0 +1,7 @@
+'use strict';
+
+module.exports = function isFullyPopulatedPropertyDescriptor(ES, Desc) {
+ return '[[Enumerable]]' in Desc
+ && '[[Configurable]]' in Desc
+ && (ES.IsAccessorDescriptor(Desc) || ES.IsDataDescriptor(Desc));
+};
diff --git a/node_modules/es-abstract/helpers/isMatchRecord.js b/node_modules/es-abstract/helpers/isMatchRecord.js
new file mode 100644
index 000000000..50c18f91f
--- /dev/null
+++ b/node_modules/es-abstract/helpers/isMatchRecord.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var has = require('has');
+
+// https://262.ecma-international.org/13.0/#sec-match-records
+
+module.exports = function isMatchRecord(record) {
+ return (
+ has(record, '[[StartIndex]]')
+ && has(record, '[[EndIndex]]')
+ && record['[[StartIndex]]'] >= 0
+ && record['[[EndIndex]]'] >= record['[[StartIndex]]']
+ && String(parseInt(record['[[StartIndex]]'], 10)) === String(record['[[StartIndex]]'])
+ && String(parseInt(record['[[EndIndex]]'], 10)) === String(record['[[EndIndex]]'])
+ );
+};
diff --git a/node_modules/es-abstract/helpers/modBigInt.js b/node_modules/es-abstract/helpers/modBigInt.js
new file mode 100644
index 000000000..22be2a1a7
--- /dev/null
+++ b/node_modules/es-abstract/helpers/modBigInt.js
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = function bigIntMod(BigIntRemainder, bigint, modulo) {
+ var remain = BigIntRemainder(bigint, modulo);
+ return remain >= 0 ? remain : remain + modulo;
+};
diff --git a/node_modules/es-abstract/helpers/reduce.js b/node_modules/es-abstract/helpers/reduce.js
new file mode 100644
index 000000000..fb9a56f6d
--- /dev/null
+++ b/node_modules/es-abstract/helpers/reduce.js
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = function reduce(arr, fn, init) {
+ var acc = init;
+ for (var i = 0; i < arr.length; i += 1) {
+ acc = fn(acc, arr[i], i);
+ }
+ return acc;
+};
diff --git a/node_modules/es-abstract/helpers/regexTester.js b/node_modules/es-abstract/helpers/regexTester.js
index b1699fb45..41e48bec3 100644
--- a/node_modules/es-abstract/helpers/regexTester.js
+++ b/node_modules/es-abstract/helpers/regexTester.js
@@ -1,11 +1,5 @@
'use strict';
-var GetIntrinsic = require('get-intrinsic');
+// TODO: remove, semver-major
-var $test = GetIntrinsic('RegExp.prototype.test');
-
-var callBind = require('call-bind');
-
-module.exports = function regexTester(regex) {
- return callBind($test, regex);
-};
+module.exports = require('safe-regex-test');
diff --git a/node_modules/es-abstract/helpers/setProto.js b/node_modules/es-abstract/helpers/setProto.js
index 0ee884fbe..57092680b 100644
--- a/node_modules/es-abstract/helpers/setProto.js
+++ b/node_modules/es-abstract/helpers/setProto.js
@@ -3,14 +3,15 @@
var GetIntrinsic = require('get-intrinsic');
var originalSetProto = GetIntrinsic('%Object.setPrototypeOf%', true);
-var $ArrayProto = GetIntrinsic('%Array.prototype%');
+
+var hasProto = require('has-proto')();
module.exports = originalSetProto || (
- // eslint-disable-next-line no-proto, no-negated-condition
- [].__proto__ !== $ArrayProto
- ? null
- : function (O, proto) {
+
+ hasProto
+ ? function (O, proto) {
O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign
return O;
}
+ : null
);
diff --git a/node_modules/es-abstract/index.js b/node_modules/es-abstract/index.js
index 5cd529294..d9efc66f0 100644
--- a/node_modules/es-abstract/index.js
+++ b/node_modules/es-abstract/index.js
@@ -9,6 +9,8 @@ var ES2017 = require('./es2017');
var ES2018 = require('./es2018');
var ES2019 = require('./es2019');
var ES2020 = require('./es2020');
+var ES2021 = require('./es2021');
+var ES2022 = require('./es2022');
var ES = {
ES5: ES5,
@@ -19,7 +21,9 @@ var ES = {
ES2017: ES2017,
ES2018: ES2018,
ES2019: ES2019,
- ES2020: ES2020
+ ES2020: ES2020,
+ ES2021: ES2021,
+ ES2022: ES2022
};
assign(ES, ES5);
delete ES.CheckObjectCoercible; // renamed in ES6 to RequireObjectCoercible
diff --git a/node_modules/es-abstract/operations/2015.js b/node_modules/es-abstract/operations/2015.js
index 7607ef41d..9edb26779 100644
--- a/node_modules/es-abstract/operations/2015.js
+++ b/node_modules/es-abstract/operations/2015.js
@@ -3,249 +3,742 @@
module.exports = {
IsPropertyDescriptor: 'https://262.ecma-international.org/6.0/#sec-property-descriptor-specification-type', // not actually an abstract op
- abs: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions',
- 'Abstract Equality Comparison': 'https://262.ecma-international.org/6.0/#sec-abstract-equality-comparison',
- 'Abstract Relational Comparison': 'https://262.ecma-international.org/6.0/#sec-abstract-relational-comparison',
- AddRestrictedFunctionProperties: 'https://262.ecma-international.org/6.0/#sec-addrestrictedfunctionproperties',
- AdvanceStringIndex: 'https://262.ecma-international.org/6.0/#sec-advancestringindex',
- AllocateArrayBuffer: 'https://262.ecma-international.org/6.0/#sec-allocatearraybuffer',
- AllocateTypedArray: 'https://262.ecma-international.org/6.0/#sec-allocatetypedarray',
- ArrayCreate: 'https://262.ecma-international.org/6.0/#sec-arraycreate',
- ArraySetLength: 'https://262.ecma-international.org/6.0/#sec-arraysetlength',
- ArraySpeciesCreate: 'https://262.ecma-international.org/6.0/#sec-arrayspeciescreate',
- BoundFunctionCreate: 'https://262.ecma-international.org/6.0/#sec-boundfunctioncreate',
- Call: 'https://262.ecma-international.org/6.0/#sec-call',
- Canonicalize: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-canonicalize-ch',
- CanonicalNumericIndexString: 'https://262.ecma-international.org/6.0/#sec-canonicalnumericindexstring',
- CharacterRange: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-characterrange-abstract-operation',
- CharacterSetMatcher: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation',
- CloneArrayBuffer: 'https://262.ecma-international.org/6.0/#sec-clonearraybuffer',
- CompletePropertyDescriptor: 'https://262.ecma-international.org/6.0/#sec-completepropertydescriptor',
- Completion: 'https://262.ecma-international.org/6.0/#sec-implicit-completion-values',
- Construct: 'https://262.ecma-international.org/6.0/#sec-construct',
- CopyDataBlockBytes: 'https://262.ecma-international.org/6.0/#sec-copydatablockbytes',
- CreateArrayFromList: 'https://262.ecma-international.org/6.0/#sec-createarrayfromlist',
- CreateArrayIterator: 'https://262.ecma-international.org/6.0/#sec-createarrayiterator',
- CreateBuiltinFunction: 'https://262.ecma-international.org/6.0/#sec-createbuiltinfunction',
- CreateByteDataBlock: 'https://262.ecma-international.org/6.0/#sec-createbytedatablock',
- CreateDataProperty: 'https://262.ecma-international.org/6.0/#sec-createdataproperty',
- CreateDataPropertyOrThrow: 'https://262.ecma-international.org/6.0/#sec-createdatapropertyorthrow',
- CreateDynamicFunction: 'https://262.ecma-international.org/6.0/#sec-createdynamicfunction',
- CreateHTML: 'https://262.ecma-international.org/6.0/#sec-createhtml',
- CreateIntrinsics: 'https://262.ecma-international.org/6.0/#sec-createintrinsics',
- CreateIterResultObject: 'https://262.ecma-international.org/6.0/#sec-createiterresultobject',
- CreateListFromArrayLike: 'https://262.ecma-international.org/6.0/#sec-createlistfromarraylike',
- CreateListIterator: 'https://262.ecma-international.org/6.0/#sec-createlistiterator',
- CreateMapIterator: 'https://262.ecma-international.org/6.0/#sec-createmapiterator',
- CreateMappedArgumentsObject: 'https://262.ecma-international.org/6.0/#sec-createmappedargumentsobject',
- CreateMethodProperty: 'https://262.ecma-international.org/6.0/#sec-createmethodproperty',
- CreatePerIterationEnvironment: 'https://262.ecma-international.org/6.0/#sec-createperiterationenvironment',
- CreateRealm: 'https://262.ecma-international.org/6.0/#sec-createrealm',
- CreateSetIterator: 'https://262.ecma-international.org/6.0/#sec-createsetiterator',
- CreateUnmappedArgumentsObject: 'https://262.ecma-international.org/6.0/#sec-createunmappedargumentsobject',
- DateFromTime: 'https://262.ecma-international.org/6.0/#sec-date-number',
- Day: 'https://262.ecma-international.org/6.0/#sec-day-number-and-time-within-day',
- DayFromYear: 'https://262.ecma-international.org/6.0/#sec-year-number',
- DaylightSavingTA: 'https://262.ecma-international.org/6.0/#sec-daylight-saving-time-adjustment',
- DaysInYear: 'https://262.ecma-international.org/6.0/#sec-year-number',
- DayWithinYear: 'https://262.ecma-international.org/6.0/#sec-month-number',
- Decode: 'https://262.ecma-international.org/6.0/#sec-decode',
- DefinePropertyOrThrow: 'https://262.ecma-international.org/6.0/#sec-definepropertyorthrow',
- DeletePropertyOrThrow: 'https://262.ecma-international.org/6.0/#sec-deletepropertyorthrow',
- DetachArrayBuffer: 'https://262.ecma-international.org/6.0/#sec-detacharraybuffer',
- Encode: 'https://262.ecma-international.org/6.0/#sec-encode',
- EnqueueJob: 'https://262.ecma-international.org/6.0/#sec-enqueuejob',
- EnumerableOwnNames: 'https://262.ecma-international.org/6.0/#sec-enumerableownnames',
- EscapeRegExpPattern: 'https://262.ecma-international.org/6.0/#sec-escaperegexppattern',
- EvalDeclarationInstantiation: 'https://262.ecma-international.org/6.0/#sec-evaldeclarationinstantiation',
- EvaluateCall: 'https://262.ecma-international.org/6.0/#sec-evaluatecall',
- EvaluateDirectCall: 'https://262.ecma-international.org/6.0/#sec-evaluatedirectcall',
- EvaluateNew: 'https://262.ecma-international.org/6.0/#sec-evaluatenew',
- floor: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions',
- ForBodyEvaluation: 'https://262.ecma-international.org/6.0/#sec-forbodyevaluation',
- 'ForIn/OfBodyEvaluation': 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset',
- 'ForIn/OfHeadEvaluation': 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind',
- FromPropertyDescriptor: 'https://262.ecma-international.org/6.0/#sec-frompropertydescriptor',
- FulfillPromise: 'https://262.ecma-international.org/6.0/#sec-fulfillpromise',
- FunctionAllocate: 'https://262.ecma-international.org/6.0/#sec-functionallocate',
- FunctionCreate: 'https://262.ecma-international.org/6.0/#sec-functioncreate',
- FunctionInitialize: 'https://262.ecma-international.org/6.0/#sec-functioninitialize',
- GeneratorFunctionCreate: 'https://262.ecma-international.org/6.0/#sec-generatorfunctioncreate',
- GeneratorResume: 'https://262.ecma-international.org/6.0/#sec-generatorresume',
- GeneratorResumeAbrupt: 'https://262.ecma-international.org/6.0/#sec-generatorresumeabrupt',
- GeneratorStart: 'https://262.ecma-international.org/6.0/#sec-generatorstart',
- GeneratorValidate: 'https://262.ecma-international.org/6.0/#sec-generatorvalidate',
- GeneratorYield: 'https://262.ecma-international.org/6.0/#sec-generatoryield',
- Get: 'https://262.ecma-international.org/6.0/#sec-get-o-p',
- GetBase: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues',
- GetFunctionRealm: 'https://262.ecma-international.org/6.0/#sec-getfunctionrealm',
- GetGlobalObject: 'https://262.ecma-international.org/6.0/#sec-getglobalobject',
- GetIdentifierReference: 'https://262.ecma-international.org/6.0/#sec-getidentifierreference',
- GetIterator: 'https://262.ecma-international.org/6.0/#sec-getiterator',
- GetMethod: 'https://262.ecma-international.org/6.0/#sec-getmethod',
- GetModuleNamespace: 'https://262.ecma-international.org/6.0/#sec-getmodulenamespace',
- GetNewTarget: 'https://262.ecma-international.org/6.0/#sec-getnewtarget',
- GetOwnPropertyKeys: 'https://262.ecma-international.org/6.0/#sec-getownpropertykeys',
- GetPrototypeFromConstructor: 'https://262.ecma-international.org/6.0/#sec-getprototypefromconstructor',
- GetReferencedName: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues',
- GetSubstitution: 'https://262.ecma-international.org/6.0/#sec-getsubstitution',
- GetSuperConstructor: 'https://262.ecma-international.org/6.0/#sec-getsuperconstructor',
- GetTemplateObject: 'https://262.ecma-international.org/6.0/#sec-gettemplateobject',
- GetThisEnvironment: 'https://262.ecma-international.org/6.0/#sec-getthisenvironment',
- GetThisValue: 'https://262.ecma-international.org/6.0/#sec-getthisvalue',
- GetV: 'https://262.ecma-international.org/6.0/#sec-getv',
- GetValue: 'https://262.ecma-international.org/6.0/#sec-getvalue',
- GetValueFromBuffer: 'https://262.ecma-international.org/6.0/#sec-getvaluefrombuffer',
- GetViewValue: 'https://262.ecma-international.org/6.0/#sec-getviewvalue',
- HasOwnProperty: 'https://262.ecma-international.org/6.0/#sec-hasownproperty',
- HasPrimitiveBase: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues',
- HasProperty: 'https://262.ecma-international.org/6.0/#sec-hasproperty',
- HostResolveImportedModule: 'sec-hostresolveimportedmodule',
- HourFromTime: 'https://262.ecma-international.org/6.0/#sec-hours-minutes-second-and-milliseconds',
- ImportedLocalNames: 'https://262.ecma-international.org/6.0/#sec-importedlocalnames',
- InitializeHostDefinedRealm: 'https://262.ecma-international.org/6.0/#sec-initializehostdefinedrealm',
- InitializeReferencedBinding: 'https://262.ecma-international.org/6.0/#sec-initializereferencedbinding',
- InLeapYear: 'https://262.ecma-international.org/6.0/#sec-year-number',
- InstanceofOperator: 'https://262.ecma-international.org/6.0/#sec-instanceofoperator',
- IntegerIndexedElementGet: 'https://262.ecma-international.org/6.0/#sec-integerindexedelementget',
- IntegerIndexedElementSet: 'https://262.ecma-international.org/6.0/#sec-integerindexedelementset',
- IntegerIndexedObjectCreate: 'https://262.ecma-international.org/6.0/#sec-integerindexedobjectcreate',
- InternalizeJSONProperty: 'https://262.ecma-international.org/6.0/#sec-internalizejsonproperty',
- Invoke: 'https://262.ecma-international.org/6.0/#sec-invoke',
- IsAccessorDescriptor: 'https://262.ecma-international.org/6.0/#sec-isaccessordescriptor',
- IsAnonymousFunctionDefinition: 'https://262.ecma-international.org/6.0/#sec-isanonymousfunctiondefinition',
- IsArray: 'https://262.ecma-international.org/6.0/#sec-isarray',
- IsCallable: 'https://262.ecma-international.org/6.0/#sec-iscallable',
- IsCompatiblePropertyDescriptor: 'https://262.ecma-international.org/6.0/#sec-iscompatiblepropertydescriptor',
- IsConcatSpreadable: 'https://262.ecma-international.org/6.0/#sec-isconcatspreadable',
- IsConstructor: 'https://262.ecma-international.org/6.0/#sec-isconstructor',
- IsDataDescriptor: 'https://262.ecma-international.org/6.0/#sec-isdatadescriptor',
- IsDetachedBuffer: 'https://262.ecma-international.org/6.0/#sec-isdetachedbuffer',
- IsExtensible: 'https://262.ecma-international.org/6.0/#sec-isextensible-o',
- IsGenericDescriptor: 'https://262.ecma-international.org/6.0/#sec-isgenericdescriptor',
- IsInTailPosition: 'https://262.ecma-international.org/6.0/#sec-isintailposition',
- IsInteger: 'https://262.ecma-international.org/6.0/#sec-isinteger',
- IsLabelledFunction: 'https://262.ecma-international.org/6.0/#sec-islabelledfunction',
- IsPromise: 'https://262.ecma-international.org/6.0/#sec-ispromise',
- IsPropertyKey: 'https://262.ecma-international.org/6.0/#sec-ispropertykey',
- IsPropertyReference: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues',
- IsRegExp: 'https://262.ecma-international.org/6.0/#sec-isregexp',
- IsStrictReference: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues',
- IsSuperReference: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues',
- IsUnresolvableReference: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues',
- IsWordChar: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-iswordchar-abstract-operation',
- IteratorClose: 'https://262.ecma-international.org/6.0/#sec-iteratorclose',
- IteratorComplete: 'https://262.ecma-international.org/6.0/#sec-iteratorcomplete',
- IteratorNext: 'https://262.ecma-international.org/6.0/#sec-iteratornext',
- IteratorStep: 'https://262.ecma-international.org/6.0/#sec-iteratorstep',
- IteratorValue: 'https://262.ecma-international.org/6.0/#sec-iteratorvalue',
- LocalTime: 'https://262.ecma-international.org/6.0/#sec-localtime',
- LoopContinues: 'https://262.ecma-international.org/6.0/#sec-loopcontinues',
- MakeArgGetter: 'https://262.ecma-international.org/6.0/#sec-makearggetter',
- MakeArgSetter: 'https://262.ecma-international.org/6.0/#sec-makeargsetter',
- MakeClassConstructor: 'https://262.ecma-international.org/6.0/#sec-makeclassconstructor',
- MakeConstructor: 'https://262.ecma-international.org/6.0/#sec-makeconstructor',
- MakeDate: 'https://262.ecma-international.org/6.0/#sec-makedate',
- MakeDay: 'https://262.ecma-international.org/6.0/#sec-makeday',
- MakeMethod: 'https://262.ecma-international.org/6.0/#sec-makemethod',
- MakeSuperPropertyReference: 'https://262.ecma-international.org/6.0/#sec-makesuperpropertyreference',
- MakeTime: 'https://262.ecma-international.org/6.0/#sec-maketime',
- max: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions',
- min: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions',
- MinFromTime: 'https://262.ecma-international.org/6.0/#sec-hours-minutes-second-and-milliseconds',
- ModuleNamespaceCreate: 'https://262.ecma-international.org/6.0/#sec-modulenamespacecreate',
- modulo: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions',
- MonthFromTime: 'https://262.ecma-international.org/6.0/#sec-month-number',
- msFromTime: 'https://262.ecma-international.org/6.0/#sec-hours-minutes-second-and-milliseconds',
- msPerDay: 'https://262.ecma-international.org/6.0/#sec-day-number-and-time-within-day',
- NewDeclarativeEnvironment: 'https://262.ecma-international.org/6.0/#sec-newdeclarativeenvironment',
- NewFunctionEnvironment: 'https://262.ecma-international.org/6.0/#sec-newfunctionenvironment',
- NewGlobalEnvironment: 'https://262.ecma-international.org/6.0/#sec-newglobalenvironment',
- NewModuleEnvironment: 'https://262.ecma-international.org/6.0/#sec-newmoduleenvironment',
- NewObjectEnvironment: 'https://262.ecma-international.org/6.0/#sec-newobjectenvironment',
- NewPromiseCapability: 'https://262.ecma-international.org/6.0/#sec-newpromisecapability',
- NormalCompletion: 'https://262.ecma-international.org/6.0/#sec-normalcompletion',
- ObjectCreate: 'https://262.ecma-international.org/6.0/#sec-objectcreate',
- ObjectDefineProperties: 'https://262.ecma-international.org/6.0/#sec-objectdefineproperties',
- OrdinaryCallBindThis: 'https://262.ecma-international.org/6.0/#sec-ordinarycallbindthis',
- OrdinaryCallEvaluateBody: 'https://262.ecma-international.org/6.0/#sec-ordinarycallevaluatebody',
- OrdinaryCreateFromConstructor: 'https://262.ecma-international.org/6.0/#sec-ordinarycreatefromconstructor',
- OrdinaryDefineOwnProperty: 'https://262.ecma-international.org/6.0/#sec-ordinarydefineownproperty',
- OrdinaryGetOwnProperty: 'https://262.ecma-international.org/6.0/#sec-ordinarygetownproperty',
- OrdinaryHasInstance: 'https://262.ecma-international.org/6.0/#sec-ordinaryhasinstance',
- OrdinaryHasProperty: 'https://262.ecma-international.org/6.0/#sec-ordinaryhasproperty',
- ParseModule: 'https://262.ecma-international.org/6.0/#sec-parsemodule',
- PerformEval: 'https://262.ecma-international.org/6.0/#sec-performeval',
- PerformPromiseAll: 'https://262.ecma-international.org/6.0/#sec-performpromiseall',
- PerformPromiseRace: 'https://262.ecma-international.org/6.0/#sec-performpromiserace',
- PerformPromiseThen: 'https://262.ecma-international.org/6.0/#sec-performpromisethen',
- PrepareForOrdinaryCall: 'https://262.ecma-international.org/6.0/#sec-prepareforordinarycall',
- PrepareForTailCall: 'https://262.ecma-international.org/6.0/#sec-preparefortailcall',
- ProxyCreate: 'https://262.ecma-international.org/6.0/#sec-proxycreate',
- PutValue: 'https://262.ecma-international.org/6.0/#sec-putvalue',
- QuoteJSONString: 'https://262.ecma-international.org/6.0/#sec-quotejsonstring',
- RegExpAlloc: 'https://262.ecma-international.org/6.0/#sec-regexpalloc',
- RegExpBuiltinExec: 'https://262.ecma-international.org/6.0/#sec-regexpbuiltinexec',
- RegExpCreate: 'https://262.ecma-international.org/6.0/#sec-regexpcreate',
- RegExpExec: 'https://262.ecma-international.org/6.0/#sec-regexpexec',
- RegExpInitialize: 'https://262.ecma-international.org/6.0/#sec-regexpinitialize',
- RejectPromise: 'https://262.ecma-international.org/6.0/#sec-rejectpromise',
- RepeatMatcher: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-repeatmatcher-abstract-operation',
- RequireObjectCoercible: 'https://262.ecma-international.org/6.0/#sec-requireobjectcoercible',
- ResolveBinding: 'https://262.ecma-international.org/6.0/#sec-resolvebinding',
- ResolveThisBinding: 'https://262.ecma-international.org/6.0/#sec-resolvethisbinding',
- SameValue: 'https://262.ecma-international.org/6.0/#sec-samevalue',
- SameValueZero: 'https://262.ecma-international.org/6.0/#sec-samevaluezero',
- SecFromTime: 'https://262.ecma-international.org/6.0/#sec-hours-minutes-second-and-milliseconds',
- SerializeJSONArray: 'https://262.ecma-international.org/6.0/#sec-serializejsonarray',
- SerializeJSONObject: 'https://262.ecma-international.org/6.0/#sec-serializejsonobject',
- SerializeJSONProperty: 'https://262.ecma-international.org/6.0/#sec-serializejsonproperty',
- Set: 'https://262.ecma-international.org/6.0/#sec-set-o-p-v-throw',
- SetDefaultGlobalBindings: 'https://262.ecma-international.org/6.0/#sec-setdefaultglobalbindings',
- SetFunctionName: 'https://262.ecma-international.org/6.0/#sec-setfunctionname',
- SetIntegrityLevel: 'https://262.ecma-international.org/6.0/#sec-setintegritylevel',
- SetRealmGlobalObject: 'https://262.ecma-international.org/6.0/#sec-setrealmglobalobject',
- SetValueInBuffer: 'https://262.ecma-international.org/6.0/#sec-setvalueinbuffer',
- SetViewValue: 'https://262.ecma-international.org/6.0/#sec-setviewvalue',
- sign: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions',
- SortCompare: 'https://262.ecma-international.org/6.0/#sec-sortcompare',
- SpeciesConstructor: 'https://262.ecma-international.org/6.0/#sec-speciesconstructor',
- SplitMatch: 'https://262.ecma-international.org/6.0/#sec-splitmatch',
- 'Strict Equality Comparison': 'https://262.ecma-international.org/6.0/#sec-strict-equality-comparison',
- StringCreate: 'https://262.ecma-international.org/6.0/#sec-stringcreate',
- StringGetIndexProperty: 'https://262.ecma-international.org/6.0/#sec-stringgetindexproperty',
- SymbolDescriptiveString: 'https://262.ecma-international.org/6.0/#sec-symboldescriptivestring',
- TestIntegrityLevel: 'https://262.ecma-international.org/6.0/#sec-testintegritylevel',
- thisBooleanValue: 'https://262.ecma-international.org/6.0/#sec-properties-of-the-boolean-prototype-object',
- thisNumberValue: 'https://262.ecma-international.org/6.0/#sec-properties-of-the-number-prototype-object',
- thisStringValue: 'https://262.ecma-international.org/6.0/#sec-properties-of-the-string-prototype-object',
- thisTimeValue: 'https://262.ecma-international.org/6.0/#sec-properties-of-the-date-prototype-object',
- TimeClip: 'https://262.ecma-international.org/6.0/#sec-timeclip',
- TimeFromYear: 'https://262.ecma-international.org/6.0/#sec-year-number',
- TimeWithinDay: 'https://262.ecma-international.org/6.0/#sec-day-number-and-time-within-day',
- ToBoolean: 'https://262.ecma-international.org/6.0/#sec-toboolean',
- ToDateString: 'https://262.ecma-international.org/6.0/#sec-todatestring',
- ToInt16: 'https://262.ecma-international.org/6.0/#sec-toint16',
- ToInt32: 'https://262.ecma-international.org/6.0/#sec-toint32',
- ToInt8: 'https://262.ecma-international.org/6.0/#sec-toint8',
- ToInteger: 'https://262.ecma-international.org/6.0/#sec-tointeger',
- ToLength: 'https://262.ecma-international.org/6.0/#sec-tolength',
- ToNumber: 'https://262.ecma-international.org/6.0/#sec-tonumber',
- ToObject: 'https://262.ecma-international.org/6.0/#sec-toobject',
- ToPrimitive: 'https://262.ecma-international.org/6.0/#sec-toprimitive',
- ToPropertyDescriptor: 'https://262.ecma-international.org/6.0/#sec-topropertydescriptor',
- ToPropertyKey: 'https://262.ecma-international.org/6.0/#sec-topropertykey',
- ToString: 'https://262.ecma-international.org/6.0/#sec-tostring',
- ToUint16: 'https://262.ecma-international.org/6.0/#sec-touint16',
- ToUint32: 'https://262.ecma-international.org/6.0/#sec-touint32',
- ToUint8: 'https://262.ecma-international.org/6.0/#sec-touint8',
- ToUint8Clamp: 'https://262.ecma-international.org/6.0/#sec-touint8clamp',
- TriggerPromiseReactions: 'https://262.ecma-international.org/6.0/#sec-triggerpromisereactions',
- Type: 'https://262.ecma-international.org/6.0/#sec-ecmascript-data-types-and-values',
- TypedArrayFrom: 'https://262.ecma-international.org/6.0/#sec-typedarrayfrom',
- UpdateEmpty: 'https://262.ecma-international.org/6.0/#sec-updateempty',
- UTC: 'https://262.ecma-international.org/6.0/#sec-utc-t',
- ValidateAndApplyPropertyDescriptor: 'https://262.ecma-international.org/6.0/#sec-validateandapplypropertydescriptor',
- WeekDay: 'https://262.ecma-international.org/6.0/#sec-week-day',
- YearFromTime: 'https://262.ecma-international.org/6.0/#sec-year-number'
+ abs: {
+ url: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions'
+ },
+ 'Abstract Equality Comparison': {
+ url: 'https://262.ecma-international.org/6.0/#sec-abstract-equality-comparison'
+ },
+ 'Abstract Relational Comparison': {
+ url: 'https://262.ecma-international.org/6.0/#sec-abstract-relational-comparison'
+ },
+ AddRestrictedFunctionProperties: {
+ url: 'https://262.ecma-international.org/6.0/#sec-addrestrictedfunctionproperties'
+ },
+ AdvanceStringIndex: {
+ url: 'https://262.ecma-international.org/6.0/#sec-advancestringindex'
+ },
+ AllocateArrayBuffer: {
+ url: 'https://262.ecma-international.org/6.0/#sec-allocatearraybuffer'
+ },
+ AllocateTypedArray: {
+ url: 'https://262.ecma-international.org/6.0/#sec-allocatetypedarray'
+ },
+ ArrayCreate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-arraycreate'
+ },
+ ArraySetLength: {
+ url: 'https://262.ecma-international.org/6.0/#sec-arraysetlength'
+ },
+ ArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-arrayspeciescreate'
+ },
+ BoundFunctionCreate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-boundfunctioncreate'
+ },
+ Call: {
+ url: 'https://262.ecma-international.org/6.0/#sec-call'
+ },
+ Canonicalize: {
+ url: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-canonicalize-ch'
+ },
+ CanonicalNumericIndexString: {
+ url: 'https://262.ecma-international.org/6.0/#sec-canonicalnumericindexstring'
+ },
+ CharacterRange: {
+ url: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-characterrange-abstract-operation'
+ },
+ CharacterSetMatcher: {
+ url: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation'
+ },
+ CloneArrayBuffer: {
+ url: 'https://262.ecma-international.org/6.0/#sec-clonearraybuffer'
+ },
+ CompletePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-completepropertydescriptor'
+ },
+ Completion: {
+ url: 'https://262.ecma-international.org/6.0/#sec-implicit-completion-values'
+ },
+ CompletionRecord: {
+ url: 'https://262.ecma-international.org/6.0/#sec-completion-record-specification-type'
+ },
+ Construct: {
+ url: 'https://262.ecma-international.org/6.0/#sec-construct'
+ },
+ CopyDataBlockBytes: {
+ url: 'https://262.ecma-international.org/6.0/#sec-copydatablockbytes'
+ },
+ CreateArrayFromList: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createarrayfromlist'
+ },
+ CreateArrayIterator: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createarrayiterator'
+ },
+ CreateBuiltinFunction: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createbuiltinfunction'
+ },
+ CreateByteDataBlock: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createbytedatablock'
+ },
+ CreateDataProperty: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createdataproperty'
+ },
+ CreateDataPropertyOrThrow: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createdatapropertyorthrow'
+ },
+ CreateDynamicFunction: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createdynamicfunction'
+ },
+ CreateHTML: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createhtml'
+ },
+ CreateIntrinsics: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createintrinsics'
+ },
+ CreateIterResultObject: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createiterresultobject'
+ },
+ CreateListFromArrayLike: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createlistfromarraylike'
+ },
+ CreateListIterator: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createlistiterator'
+ },
+ CreateMapIterator: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createmapiterator'
+ },
+ CreateMappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createmappedargumentsobject'
+ },
+ CreateMethodProperty: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createmethodproperty'
+ },
+ CreatePerIterationEnvironment: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createperiterationenvironment'
+ },
+ CreateRealm: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createrealm'
+ },
+ CreateSetIterator: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createsetiterator'
+ },
+ CreateUnmappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/6.0/#sec-createunmappedargumentsobject'
+ },
+ DateFromTime: {
+ url: 'https://262.ecma-international.org/6.0/#sec-date-number'
+ },
+ Day: {
+ url: 'https://262.ecma-international.org/6.0/#sec-day-number-and-time-within-day'
+ },
+ DayFromYear: {
+ url: 'https://262.ecma-international.org/6.0/#sec-year-number'
+ },
+ DaylightSavingTA: {
+ url: 'https://262.ecma-international.org/6.0/#sec-daylight-saving-time-adjustment'
+ },
+ DaysInYear: {
+ url: 'https://262.ecma-international.org/6.0/#sec-year-number'
+ },
+ DayWithinYear: {
+ url: 'https://262.ecma-international.org/6.0/#sec-month-number'
+ },
+ Decode: {
+ url: 'https://262.ecma-international.org/6.0/#sec-decode'
+ },
+ DefinePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/6.0/#sec-definepropertyorthrow'
+ },
+ DeletePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/6.0/#sec-deletepropertyorthrow'
+ },
+ DetachArrayBuffer: {
+ url: 'https://262.ecma-international.org/6.0/#sec-detacharraybuffer'
+ },
+ Encode: {
+ url: 'https://262.ecma-international.org/6.0/#sec-encode'
+ },
+ EnqueueJob: {
+ url: 'https://262.ecma-international.org/6.0/#sec-enqueuejob'
+ },
+ EnumerableOwnNames: {
+ url: 'https://262.ecma-international.org/6.0/#sec-enumerableownnames'
+ },
+ EscapeRegExpPattern: {
+ url: 'https://262.ecma-international.org/6.0/#sec-escaperegexppattern'
+ },
+ EvalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/6.0/#sec-evaldeclarationinstantiation'
+ },
+ EvaluateCall: {
+ url: 'https://262.ecma-international.org/6.0/#sec-evaluatecall'
+ },
+ EvaluateDirectCall: {
+ url: 'https://262.ecma-international.org/6.0/#sec-evaluatedirectcall'
+ },
+ EvaluateNew: {
+ url: 'https://262.ecma-international.org/6.0/#sec-evaluatenew'
+ },
+ floor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions'
+ },
+ ForBodyEvaluation: {
+ url: 'https://262.ecma-international.org/6.0/#sec-forbodyevaluation'
+ },
+ 'ForIn/OfBodyEvaluation': {
+ url: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset'
+ },
+ 'ForIn/OfHeadEvaluation': {
+ url: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind'
+ },
+ FromPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-frompropertydescriptor'
+ },
+ FulfillPromise: {
+ url: 'https://262.ecma-international.org/6.0/#sec-fulfillpromise'
+ },
+ FunctionAllocate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-functionallocate'
+ },
+ FunctionCreate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-functioncreate'
+ },
+ FunctionInitialize: {
+ url: 'https://262.ecma-international.org/6.0/#sec-functioninitialize'
+ },
+ GeneratorFunctionCreate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-generatorfunctioncreate'
+ },
+ GeneratorResume: {
+ url: 'https://262.ecma-international.org/6.0/#sec-generatorresume'
+ },
+ GeneratorResumeAbrupt: {
+ url: 'https://262.ecma-international.org/6.0/#sec-generatorresumeabrupt'
+ },
+ GeneratorStart: {
+ url: 'https://262.ecma-international.org/6.0/#sec-generatorstart'
+ },
+ GeneratorValidate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-generatorvalidate'
+ },
+ GeneratorYield: {
+ url: 'https://262.ecma-international.org/6.0/#sec-generatoryield'
+ },
+ Get: {
+ url: 'https://262.ecma-international.org/6.0/#sec-get-o-p'
+ },
+ GetBase: {
+ url: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues'
+ },
+ GetFunctionRealm: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getfunctionrealm'
+ },
+ GetGlobalObject: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getglobalobject'
+ },
+ GetIdentifierReference: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getidentifierreference'
+ },
+ GetIterator: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getiterator'
+ },
+ GetMethod: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getmethod'
+ },
+ GetModuleNamespace: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getmodulenamespace'
+ },
+ GetNewTarget: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getnewtarget'
+ },
+ GetOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getownpropertykeys'
+ },
+ GetPrototypeFromConstructor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getprototypefromconstructor'
+ },
+ GetReferencedName: {
+ url: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues'
+ },
+ GetSubstitution: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getsubstitution'
+ },
+ GetSuperConstructor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getsuperconstructor'
+ },
+ GetTemplateObject: {
+ url: 'https://262.ecma-international.org/6.0/#sec-gettemplateobject'
+ },
+ GetThisEnvironment: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getthisenvironment'
+ },
+ GetThisValue: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getthisvalue'
+ },
+ GetV: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getv'
+ },
+ GetValue: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getvalue'
+ },
+ GetValueFromBuffer: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getvaluefrombuffer'
+ },
+ GetViewValue: {
+ url: 'https://262.ecma-international.org/6.0/#sec-getviewvalue'
+ },
+ HasOwnProperty: {
+ url: 'https://262.ecma-international.org/6.0/#sec-hasownproperty'
+ },
+ HasPrimitiveBase: {
+ url: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues'
+ },
+ HasProperty: {
+ url: 'https://262.ecma-international.org/6.0/#sec-hasproperty'
+ },
+ HourFromTime: {
+ url: 'https://262.ecma-international.org/6.0/#sec-hours-minutes-second-and-milliseconds'
+ },
+ ImportedLocalNames: {
+ url: 'https://262.ecma-international.org/6.0/#sec-importedlocalnames'
+ },
+ InitializeHostDefinedRealm: {
+ url: 'https://262.ecma-international.org/6.0/#sec-initializehostdefinedrealm'
+ },
+ InitializeReferencedBinding: {
+ url: 'https://262.ecma-international.org/6.0/#sec-initializereferencedbinding'
+ },
+ InLeapYear: {
+ url: 'https://262.ecma-international.org/6.0/#sec-year-number'
+ },
+ InstanceofOperator: {
+ url: 'https://262.ecma-international.org/6.0/#sec-instanceofoperator'
+ },
+ IntegerIndexedElementGet: {
+ url: 'https://262.ecma-international.org/6.0/#sec-integerindexedelementget'
+ },
+ IntegerIndexedElementSet: {
+ url: 'https://262.ecma-international.org/6.0/#sec-integerindexedelementset'
+ },
+ IntegerIndexedObjectCreate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-integerindexedobjectcreate'
+ },
+ InternalizeJSONProperty: {
+ url: 'https://262.ecma-international.org/6.0/#sec-internalizejsonproperty'
+ },
+ Invoke: {
+ url: 'https://262.ecma-international.org/6.0/#sec-invoke'
+ },
+ IsAccessorDescriptor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isaccessordescriptor'
+ },
+ IsAnonymousFunctionDefinition: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isanonymousfunctiondefinition'
+ },
+ IsArray: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isarray'
+ },
+ IsCallable: {
+ url: 'https://262.ecma-international.org/6.0/#sec-iscallable'
+ },
+ IsCompatiblePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-iscompatiblepropertydescriptor'
+ },
+ IsConcatSpreadable: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isconcatspreadable'
+ },
+ IsConstructor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isconstructor'
+ },
+ IsDataDescriptor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isdatadescriptor'
+ },
+ IsDetachedBuffer: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isdetachedbuffer'
+ },
+ IsExtensible: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isextensible-o'
+ },
+ IsGenericDescriptor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isgenericdescriptor'
+ },
+ IsInTailPosition: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isintailposition'
+ },
+ IsInteger: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isinteger'
+ },
+ IsLabelledFunction: {
+ url: 'https://262.ecma-international.org/6.0/#sec-islabelledfunction'
+ },
+ IsPromise: {
+ url: 'https://262.ecma-international.org/6.0/#sec-ispromise'
+ },
+ IsPropertyKey: {
+ url: 'https://262.ecma-international.org/6.0/#sec-ispropertykey'
+ },
+ IsPropertyReference: {
+ url: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues'
+ },
+ IsRegExp: {
+ url: 'https://262.ecma-international.org/6.0/#sec-isregexp'
+ },
+ IsStrictReference: {
+ url: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues'
+ },
+ IsSuperReference: {
+ url: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues'
+ },
+ IsUnresolvableReference: {
+ url: 'https://262.ecma-international.org/6.0/#sec-jobs-and-job-queues'
+ },
+ IsWordChar: {
+ url: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-iswordchar-abstract-operation'
+ },
+ IteratorClose: {
+ url: 'https://262.ecma-international.org/6.0/#sec-iteratorclose'
+ },
+ IteratorComplete: {
+ url: 'https://262.ecma-international.org/6.0/#sec-iteratorcomplete'
+ },
+ IteratorNext: {
+ url: 'https://262.ecma-international.org/6.0/#sec-iteratornext'
+ },
+ IteratorStep: {
+ url: 'https://262.ecma-international.org/6.0/#sec-iteratorstep'
+ },
+ IteratorValue: {
+ url: 'https://262.ecma-international.org/6.0/#sec-iteratorvalue'
+ },
+ LocalTime: {
+ url: 'https://262.ecma-international.org/6.0/#sec-localtime'
+ },
+ LoopContinues: {
+ url: 'https://262.ecma-international.org/6.0/#sec-loopcontinues'
+ },
+ MakeArgGetter: {
+ url: 'https://262.ecma-international.org/6.0/#sec-makearggetter'
+ },
+ MakeArgSetter: {
+ url: 'https://262.ecma-international.org/6.0/#sec-makeargsetter'
+ },
+ MakeClassConstructor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-makeclassconstructor'
+ },
+ MakeConstructor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-makeconstructor'
+ },
+ MakeDate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-makedate'
+ },
+ MakeDay: {
+ url: 'https://262.ecma-international.org/6.0/#sec-makeday'
+ },
+ MakeMethod: {
+ url: 'https://262.ecma-international.org/6.0/#sec-makemethod'
+ },
+ MakeSuperPropertyReference: {
+ url: 'https://262.ecma-international.org/6.0/#sec-makesuperpropertyreference'
+ },
+ MakeTime: {
+ url: 'https://262.ecma-international.org/6.0/#sec-maketime'
+ },
+ max: {
+ url: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions'
+ },
+ min: {
+ url: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions'
+ },
+ MinFromTime: {
+ url: 'https://262.ecma-international.org/6.0/#sec-hours-minutes-second-and-milliseconds'
+ },
+ ModuleNamespaceCreate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-modulenamespacecreate'
+ },
+ modulo: {
+ url: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions'
+ },
+ MonthFromTime: {
+ url: 'https://262.ecma-international.org/6.0/#sec-month-number'
+ },
+ msFromTime: {
+ url: 'https://262.ecma-international.org/6.0/#sec-hours-minutes-second-and-milliseconds'
+ },
+ msPerDay: {
+ url: 'https://262.ecma-international.org/6.0/#sec-day-number-and-time-within-day'
+ },
+ NewDeclarativeEnvironment: {
+ url: 'https://262.ecma-international.org/6.0/#sec-newdeclarativeenvironment'
+ },
+ NewFunctionEnvironment: {
+ url: 'https://262.ecma-international.org/6.0/#sec-newfunctionenvironment'
+ },
+ NewGlobalEnvironment: {
+ url: 'https://262.ecma-international.org/6.0/#sec-newglobalenvironment'
+ },
+ NewModuleEnvironment: {
+ url: 'https://262.ecma-international.org/6.0/#sec-newmoduleenvironment'
+ },
+ NewObjectEnvironment: {
+ url: 'https://262.ecma-international.org/6.0/#sec-newobjectenvironment'
+ },
+ NewPromiseCapability: {
+ url: 'https://262.ecma-international.org/6.0/#sec-newpromisecapability'
+ },
+ NormalCompletion: {
+ url: 'https://262.ecma-international.org/6.0/#sec-normalcompletion'
+ },
+ ObjectCreate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-objectcreate'
+ },
+ ObjectDefineProperties: {
+ url: 'https://262.ecma-international.org/6.0/#sec-objectdefineproperties'
+ },
+ OrdinaryCallBindThis: {
+ url: 'https://262.ecma-international.org/6.0/#sec-ordinarycallbindthis'
+ },
+ OrdinaryCallEvaluateBody: {
+ url: 'https://262.ecma-international.org/6.0/#sec-ordinarycallevaluatebody'
+ },
+ OrdinaryCreateFromConstructor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-ordinarycreatefromconstructor'
+ },
+ OrdinaryDefineOwnProperty: {
+ url: 'https://262.ecma-international.org/6.0/#sec-ordinarydefineownproperty'
+ },
+ OrdinaryGetOwnProperty: {
+ url: 'https://262.ecma-international.org/6.0/#sec-ordinarygetownproperty'
+ },
+ OrdinaryHasInstance: {
+ url: 'https://262.ecma-international.org/6.0/#sec-ordinaryhasinstance'
+ },
+ OrdinaryHasProperty: {
+ url: 'https://262.ecma-international.org/6.0/#sec-ordinaryhasproperty'
+ },
+ ParseModule: {
+ url: 'https://262.ecma-international.org/6.0/#sec-parsemodule'
+ },
+ PerformEval: {
+ url: 'https://262.ecma-international.org/6.0/#sec-performeval'
+ },
+ PerformPromiseAll: {
+ url: 'https://262.ecma-international.org/6.0/#sec-performpromiseall'
+ },
+ PerformPromiseRace: {
+ url: 'https://262.ecma-international.org/6.0/#sec-performpromiserace'
+ },
+ PerformPromiseThen: {
+ url: 'https://262.ecma-international.org/6.0/#sec-performpromisethen'
+ },
+ PrepareForOrdinaryCall: {
+ url: 'https://262.ecma-international.org/6.0/#sec-prepareforordinarycall'
+ },
+ PrepareForTailCall: {
+ url: 'https://262.ecma-international.org/6.0/#sec-preparefortailcall'
+ },
+ ProxyCreate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-proxycreate'
+ },
+ PutValue: {
+ url: 'https://262.ecma-international.org/6.0/#sec-putvalue'
+ },
+ QuoteJSONString: {
+ url: 'https://262.ecma-international.org/6.0/#sec-quotejsonstring'
+ },
+ RegExpAlloc: {
+ url: 'https://262.ecma-international.org/6.0/#sec-regexpalloc'
+ },
+ RegExpBuiltinExec: {
+ url: 'https://262.ecma-international.org/6.0/#sec-regexpbuiltinexec'
+ },
+ RegExpCreate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-regexpcreate'
+ },
+ RegExpExec: {
+ url: 'https://262.ecma-international.org/6.0/#sec-regexpexec'
+ },
+ RegExpInitialize: {
+ url: 'https://262.ecma-international.org/6.0/#sec-regexpinitialize'
+ },
+ RejectPromise: {
+ url: 'https://262.ecma-international.org/6.0/#sec-rejectpromise'
+ },
+ RepeatMatcher: {
+ url: 'https://262.ecma-international.org/6.0/#sec-runtime-semantics-repeatmatcher-abstract-operation'
+ },
+ RequireObjectCoercible: {
+ url: 'https://262.ecma-international.org/6.0/#sec-requireobjectcoercible'
+ },
+ ResolveBinding: {
+ url: 'https://262.ecma-international.org/6.0/#sec-resolvebinding'
+ },
+ ResolveThisBinding: {
+ url: 'https://262.ecma-international.org/6.0/#sec-resolvethisbinding'
+ },
+ SameValue: {
+ url: 'https://262.ecma-international.org/6.0/#sec-samevalue'
+ },
+ SameValueZero: {
+ url: 'https://262.ecma-international.org/6.0/#sec-samevaluezero'
+ },
+ SecFromTime: {
+ url: 'https://262.ecma-international.org/6.0/#sec-hours-minutes-second-and-milliseconds'
+ },
+ SerializeJSONArray: {
+ url: 'https://262.ecma-international.org/6.0/#sec-serializejsonarray'
+ },
+ SerializeJSONObject: {
+ url: 'https://262.ecma-international.org/6.0/#sec-serializejsonobject'
+ },
+ SerializeJSONProperty: {
+ url: 'https://262.ecma-international.org/6.0/#sec-serializejsonproperty'
+ },
+ Set: {
+ url: 'https://262.ecma-international.org/6.0/#sec-set-o-p-v-throw'
+ },
+ SetDefaultGlobalBindings: {
+ url: 'https://262.ecma-international.org/6.0/#sec-setdefaultglobalbindings'
+ },
+ SetFunctionName: {
+ url: 'https://262.ecma-international.org/6.0/#sec-setfunctionname'
+ },
+ SetIntegrityLevel: {
+ url: 'https://262.ecma-international.org/6.0/#sec-setintegritylevel'
+ },
+ SetRealmGlobalObject: {
+ url: 'https://262.ecma-international.org/6.0/#sec-setrealmglobalobject'
+ },
+ SetValueInBuffer: {
+ url: 'https://262.ecma-international.org/6.0/#sec-setvalueinbuffer'
+ },
+ SetViewValue: {
+ url: 'https://262.ecma-international.org/6.0/#sec-setviewvalue'
+ },
+ sign: {
+ url: 'https://262.ecma-international.org/6.0/#sec-algorithm-conventions'
+ },
+ SortCompare: {
+ url: 'https://262.ecma-international.org/6.0/#sec-sortcompare'
+ },
+ SpeciesConstructor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-speciesconstructor'
+ },
+ SplitMatch: {
+ url: 'https://262.ecma-international.org/6.0/#sec-splitmatch'
+ },
+ 'Strict Equality Comparison': {
+ url: 'https://262.ecma-international.org/6.0/#sec-strict-equality-comparison'
+ },
+ StringCreate: {
+ url: 'https://262.ecma-international.org/6.0/#sec-stringcreate'
+ },
+ StringGetIndexProperty: {
+ url: 'https://262.ecma-international.org/6.0/#sec-stringgetindexproperty'
+ },
+ SymbolDescriptiveString: {
+ url: 'https://262.ecma-international.org/6.0/#sec-symboldescriptivestring'
+ },
+ TestIntegrityLevel: {
+ url: 'https://262.ecma-international.org/6.0/#sec-testintegritylevel'
+ },
+ thisBooleanValue: {
+ url: 'https://262.ecma-international.org/6.0/#sec-properties-of-the-boolean-prototype-object'
+ },
+ thisNumberValue: {
+ url: 'https://262.ecma-international.org/6.0/#sec-properties-of-the-number-prototype-object'
+ },
+ thisStringValue: {
+ url: 'https://262.ecma-international.org/6.0/#sec-properties-of-the-string-prototype-object'
+ },
+ thisTimeValue: {
+ url: 'https://262.ecma-international.org/6.0/#sec-properties-of-the-date-prototype-object'
+ },
+ TimeClip: {
+ url: 'https://262.ecma-international.org/6.0/#sec-timeclip'
+ },
+ TimeFromYear: {
+ url: 'https://262.ecma-international.org/6.0/#sec-year-number'
+ },
+ TimeWithinDay: {
+ url: 'https://262.ecma-international.org/6.0/#sec-day-number-and-time-within-day'
+ },
+ ToBoolean: {
+ url: 'https://262.ecma-international.org/6.0/#sec-toboolean'
+ },
+ ToDateString: {
+ url: 'https://262.ecma-international.org/6.0/#sec-todatestring'
+ },
+ ToInt16: {
+ url: 'https://262.ecma-international.org/6.0/#sec-toint16'
+ },
+ ToInt32: {
+ url: 'https://262.ecma-international.org/6.0/#sec-toint32'
+ },
+ ToInt8: {
+ url: 'https://262.ecma-international.org/6.0/#sec-toint8'
+ },
+ ToInteger: {
+ url: 'https://262.ecma-international.org/6.0/#sec-tointeger'
+ },
+ ToLength: {
+ url: 'https://262.ecma-international.org/6.0/#sec-tolength'
+ },
+ ToNumber: {
+ url: 'https://262.ecma-international.org/6.0/#sec-tonumber'
+ },
+ ToObject: {
+ url: 'https://262.ecma-international.org/6.0/#sec-toobject'
+ },
+ ToPrimitive: {
+ url: 'https://262.ecma-international.org/6.0/#sec-toprimitive'
+ },
+ ToPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-topropertydescriptor'
+ },
+ ToPropertyKey: {
+ url: 'https://262.ecma-international.org/6.0/#sec-topropertykey'
+ },
+ ToString: {
+ url: 'https://262.ecma-international.org/6.0/#sec-tostring'
+ },
+ ToUint16: {
+ url: 'https://262.ecma-international.org/6.0/#sec-touint16'
+ },
+ ToUint32: {
+ url: 'https://262.ecma-international.org/6.0/#sec-touint32'
+ },
+ ToUint8: {
+ url: 'https://262.ecma-international.org/6.0/#sec-touint8'
+ },
+ ToUint8Clamp: {
+ url: 'https://262.ecma-international.org/6.0/#sec-touint8clamp'
+ },
+ TriggerPromiseReactions: {
+ url: 'https://262.ecma-international.org/6.0/#sec-triggerpromisereactions'
+ },
+ Type: {
+ url: 'https://262.ecma-international.org/6.0/#sec-ecmascript-data-types-and-values'
+ },
+ TypedArrayFrom: {
+ url: 'https://262.ecma-international.org/6.0/#sec-typedarrayfrom'
+ },
+ UpdateEmpty: {
+ url: 'https://262.ecma-international.org/6.0/#sec-updateempty'
+ },
+ UTC: {
+ url: 'https://262.ecma-international.org/6.0/#sec-utc-t'
+ },
+ ValidateAndApplyPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/6.0/#sec-validateandapplypropertydescriptor'
+ },
+ ValidateTypedArray: {
+ url: 'https://262.ecma-international.org/6.0/#sec-validatetypedarray'
+ },
+ WeekDay: {
+ url: 'https://262.ecma-international.org/6.0/#sec-week-day'
+ },
+ YearFromTime: {
+ url: 'https://262.ecma-international.org/6.0/#sec-year-number'
+ }
};
diff --git a/node_modules/es-abstract/operations/2016.js b/node_modules/es-abstract/operations/2016.js
index 3cfd8e7ac..66e6d4afc 100644
--- a/node_modules/es-abstract/operations/2016.js
+++ b/node_modules/es-abstract/operations/2016.js
@@ -3,275 +3,811 @@
module.exports = {
IsPropertyDescriptor: 'https://262.ecma-international.org/6.0/#sec-property-descriptor-specification-type', // not actually an abstract op
- abs: 'https://262.ecma-international.org/7.0/#sec-algorithm-conventions',
- 'Abstract Equality Comparison': 'https://262.ecma-international.org/7.0/#sec-abstract-equality-comparison',
- 'Abstract Relational Comparison': 'https://262.ecma-international.org/7.0/#sec-abstract-relational-comparison',
- AddRestrictedFunctionProperties: 'https://262.ecma-international.org/7.0/#sec-addrestrictedfunctionproperties',
- AdvanceStringIndex: 'https://262.ecma-international.org/7.0/#sec-advancestringindex',
- AllocateArrayBuffer: 'https://262.ecma-international.org/7.0/#sec-allocatearraybuffer',
- AllocateTypedArray: 'https://262.ecma-international.org/7.0/#sec-allocatetypedarray',
- AllocateTypedArrayBuffer: 'https://262.ecma-international.org/7.0/#sec-allocatetypedarraybuffer',
- ArrayCreate: 'https://262.ecma-international.org/7.0/#sec-arraycreate',
- ArraySetLength: 'https://262.ecma-international.org/7.0/#sec-arraysetlength',
- ArraySpeciesCreate: 'https://262.ecma-international.org/7.0/#sec-arrayspeciescreate',
- BlockDeclarationInstantiation: 'https://262.ecma-international.org/7.0/#sec-blockdeclarationinstantiation',
- BoundFunctionCreate: 'https://262.ecma-international.org/7.0/#sec-boundfunctioncreate',
- Call: 'https://262.ecma-international.org/7.0/#sec-call',
- Canonicalize: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-canonicalize-ch',
- CanonicalNumericIndexString: 'https://262.ecma-international.org/7.0/#sec-canonicalnumericindexstring',
- CharacterRange: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-characterrange-abstract-operation',
- CharacterRangeOrUnion: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation',
- CharacterSetMatcher: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation',
- CloneArrayBuffer: 'https://262.ecma-international.org/7.0/#sec-clonearraybuffer',
- CompletePropertyDescriptor: 'https://262.ecma-international.org/7.0/#sec-completepropertydescriptor',
- Completion: 'https://262.ecma-international.org/7.0/#sec-completion-record-specification-type',
- Construct: 'https://262.ecma-international.org/7.0/#sec-construct',
- CopyDataBlockBytes: 'https://262.ecma-international.org/7.0/#sec-copydatablockbytes',
- CreateArrayFromList: 'https://262.ecma-international.org/7.0/#sec-createarrayfromlist',
- CreateArrayIterator: 'https://262.ecma-international.org/7.0/#sec-createarrayiterator',
- CreateBuiltinFunction: 'https://262.ecma-international.org/7.0/#sec-createbuiltinfunction',
- CreateByteDataBlock: 'https://262.ecma-international.org/7.0/#sec-createbytedatablock',
- CreateDataProperty: 'https://262.ecma-international.org/7.0/#sec-createdataproperty',
- CreateDataPropertyOrThrow: 'https://262.ecma-international.org/7.0/#sec-createdatapropertyorthrow',
- CreateDynamicFunction: 'https://262.ecma-international.org/7.0/#sec-createdynamicfunction',
- CreateHTML: 'https://262.ecma-international.org/7.0/#sec-createhtml',
- CreateIntrinsics: 'https://262.ecma-international.org/7.0/#sec-createintrinsics',
- CreateIterResultObject: 'https://262.ecma-international.org/7.0/#sec-createiterresultobject',
- CreateListFromArrayLike: 'https://262.ecma-international.org/7.0/#sec-createlistfromarraylike',
- CreateListIterator: 'https://262.ecma-international.org/7.0/#sec-createlistiterator',
- CreateMapIterator: 'https://262.ecma-international.org/7.0/#sec-createmapiterator',
- CreateMappedArgumentsObject: 'https://262.ecma-international.org/7.0/#sec-createmappedargumentsobject',
- CreateMethodProperty: 'https://262.ecma-international.org/7.0/#sec-createmethodproperty',
- CreatePerIterationEnvironment: 'https://262.ecma-international.org/7.0/#sec-createperiterationenvironment',
- CreateRealm: 'https://262.ecma-international.org/7.0/#sec-createrealm',
- CreateResolvingFunctions: 'https://262.ecma-international.org/7.0/#sec-createresolvingfunctions',
- CreateSetIterator: 'https://262.ecma-international.org/7.0/#sec-createsetiterator',
- CreateStringIterator: 'https://262.ecma-international.org/7.0/#sec-createstringiterator',
- CreateUnmappedArgumentsObject: 'https://262.ecma-international.org/7.0/#sec-createunmappedargumentsobject',
- DateFromTime: 'https://262.ecma-international.org/7.0/#sec-date-number',
- Day: 'https://262.ecma-international.org/7.0/#sec-day-number-and-time-within-day',
- DayFromYear: 'https://262.ecma-international.org/7.0/#sec-year-number',
- DaylightSavingTA: 'https://262.ecma-international.org/7.0/#sec-daylight-saving-time-adjustment',
- DaysInYear: 'https://262.ecma-international.org/7.0/#sec-year-number',
- DayWithinYear: 'https://262.ecma-international.org/7.0/#sec-month-number',
- Decode: 'https://262.ecma-international.org/7.0/#sec-decode',
- DefinePropertyOrThrow: 'https://262.ecma-international.org/7.0/#sec-definepropertyorthrow',
- DeletePropertyOrThrow: 'https://262.ecma-international.org/7.0/#sec-deletepropertyorthrow',
- DetachArrayBuffer: 'https://262.ecma-international.org/7.0/#sec-detacharraybuffer',
- Encode: 'https://262.ecma-international.org/7.0/#sec-encode',
- EnqueueJob: 'https://262.ecma-international.org/7.0/#sec-enqueuejob',
- EnumerableOwnNames: 'https://262.ecma-international.org/7.0/#sec-enumerableownnames',
- EnumerateObjectProperties: 'https://262.ecma-international.org/7.0/#sec-enumerate-object-properties',
- EscapeRegExpPattern: 'https://262.ecma-international.org/7.0/#sec-escaperegexppattern',
- EvalDeclarationInstantiation: 'https://262.ecma-international.org/7.0/#sec-evaldeclarationinstantiation',
- EvaluateCall: 'https://262.ecma-international.org/7.0/#sec-evaluatecall',
- EvaluateDirectCall: 'https://262.ecma-international.org/7.0/#sec-evaluatedirectcall',
- EvaluateNew: 'https://262.ecma-international.org/7.0/#sec-evaluatenew',
- floor: 'https://262.ecma-international.org/7.0/#sec-algorithm-conventions',
- ForBodyEvaluation: 'https://262.ecma-international.org/7.0/#sec-forbodyevaluation',
- 'ForIn/OfBodyEvaluation': 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset',
- 'ForIn/OfHeadEvaluation': 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind',
- FromPropertyDescriptor: 'https://262.ecma-international.org/7.0/#sec-frompropertydescriptor',
- FulfillPromise: 'https://262.ecma-international.org/7.0/#sec-fulfillpromise',
- FunctionAllocate: 'https://262.ecma-international.org/7.0/#sec-functionallocate',
- FunctionCreate: 'https://262.ecma-international.org/7.0/#sec-functioncreate',
- FunctionDeclarationInstantiation: 'https://262.ecma-international.org/7.0/#sec-functiondeclarationinstantiation',
- FunctionInitialize: 'https://262.ecma-international.org/7.0/#sec-functioninitialize',
- GeneratorFunctionCreate: 'https://262.ecma-international.org/7.0/#sec-generatorfunctioncreate',
- GeneratorResume: 'https://262.ecma-international.org/7.0/#sec-generatorresume',
- GeneratorResumeAbrupt: 'https://262.ecma-international.org/7.0/#sec-generatorresumeabrupt',
- GeneratorStart: 'https://262.ecma-international.org/7.0/#sec-generatorstart',
- GeneratorValidate: 'https://262.ecma-international.org/7.0/#sec-generatorvalidate',
- GeneratorYield: 'https://262.ecma-international.org/7.0/#sec-generatoryield',
- Get: 'https://262.ecma-international.org/7.0/#sec-get-o-p',
- GetActiveScriptOrModule: 'https://262.ecma-international.org/7.0/#sec-getactivescriptormodule',
- GetFunctionRealm: 'https://262.ecma-international.org/7.0/#sec-getfunctionrealm',
- GetGlobalObject: 'https://262.ecma-international.org/7.0/#sec-getglobalobject',
- GetIdentifierReference: 'https://262.ecma-international.org/7.0/#sec-getidentifierreference',
- GetIterator: 'https://262.ecma-international.org/7.0/#sec-getiterator',
- GetMethod: 'https://262.ecma-international.org/7.0/#sec-getmethod',
- GetModuleNamespace: 'https://262.ecma-international.org/7.0/#sec-getmodulenamespace',
- GetNewTarget: 'https://262.ecma-international.org/7.0/#sec-getnewtarget',
- GetOwnPropertyKeys: 'https://262.ecma-international.org/7.0/#sec-getownpropertykeys',
- GetPrototypeFromConstructor: 'https://262.ecma-international.org/7.0/#sec-getprototypefromconstructor',
- GetSubstitution: 'https://262.ecma-international.org/7.0/#sec-getsubstitution',
- GetSuperConstructor: 'https://262.ecma-international.org/7.0/#sec-getsuperconstructor',
- GetTemplateObject: 'https://262.ecma-international.org/7.0/#sec-gettemplateobject',
- GetThisEnvironment: 'https://262.ecma-international.org/7.0/#sec-getthisenvironment',
- GetThisValue: 'https://262.ecma-international.org/7.0/#sec-getthisvalue',
- GetV: 'https://262.ecma-international.org/7.0/#sec-getv',
- GetValue: 'https://262.ecma-international.org/7.0/#sec-getvalue',
- GetValueFromBuffer: 'https://262.ecma-international.org/7.0/#sec-getvaluefrombuffer',
- GetViewValue: 'https://262.ecma-international.org/7.0/#sec-getviewvalue',
- GlobalDeclarationInstantiation: 'https://262.ecma-international.org/7.0/#sec-globaldeclarationinstantiation',
- HasOwnProperty: 'https://262.ecma-international.org/7.0/#sec-hasownproperty',
- HasProperty: 'https://262.ecma-international.org/7.0/#sec-hasproperty',
- HostPromiseRejectionTracker: 'https://262.ecma-international.org/7.0/#sec-host-promise-rejection-tracker',
- HostReportErrors: 'https://262.ecma-international.org/7.0/#sec-host-report-errors',
- HostResolveImportedModule: 'https://262.ecma-international.org/7.0/#sec-hostresolveimportedmodule',
- HourFromTime: 'https://262.ecma-international.org/7.0/#sec-hours-minutes-second-and-milliseconds',
- IfAbruptRejectPromise: 'https://262.ecma-international.org/7.0/#sec-ifabruptrejectpromise',
- ImportedLocalNames: 'https://262.ecma-international.org/7.0/#sec-importedlocalnames',
- InitializeBoundName: 'https://262.ecma-international.org/7.0/#sec-initializeboundname',
- InitializeHostDefinedRealm: 'https://262.ecma-international.org/7.0/#sec-initializehostdefinedrealm',
- InitializeReferencedBinding: 'https://262.ecma-international.org/7.0/#sec-initializereferencedbinding',
- InLeapYear: 'https://262.ecma-international.org/7.0/#sec-year-number',
- InstanceofOperator: 'https://262.ecma-international.org/7.0/#sec-instanceofoperator',
- IntegerIndexedElementGet: 'https://262.ecma-international.org/7.0/#sec-integerindexedelementget',
- IntegerIndexedElementSet: 'https://262.ecma-international.org/7.0/#sec-integerindexedelementset',
- IntegerIndexedObjectCreate: 'https://262.ecma-international.org/7.0/#sec-integerindexedobjectcreate',
- InternalizeJSONProperty: 'https://262.ecma-international.org/7.0/#sec-internalizejsonproperty',
- Invoke: 'https://262.ecma-international.org/7.0/#sec-invoke',
- IsAccessorDescriptor: 'https://262.ecma-international.org/7.0/#sec-isaccessordescriptor',
- IsAnonymousFunctionDefinition: 'https://262.ecma-international.org/7.0/#sec-isanonymousfunctiondefinition',
- IsArray: 'https://262.ecma-international.org/7.0/#sec-isarray',
- IsCallable: 'https://262.ecma-international.org/7.0/#sec-iscallable',
- IsCompatiblePropertyDescriptor: 'https://262.ecma-international.org/7.0/#sec-iscompatiblepropertydescriptor',
- IsConcatSpreadable: 'https://262.ecma-international.org/7.0/#sec-isconcatspreadable',
- IsConstructor: 'https://262.ecma-international.org/7.0/#sec-isconstructor',
- IsDataDescriptor: 'https://262.ecma-international.org/7.0/#sec-isdatadescriptor',
- IsDetachedBuffer: 'https://262.ecma-international.org/7.0/#sec-isdetachedbuffer',
- IsExtensible: 'https://262.ecma-international.org/7.0/#sec-isextensible-o',
- IsGenericDescriptor: 'https://262.ecma-international.org/7.0/#sec-isgenericdescriptor',
- IsInTailPosition: 'https://262.ecma-international.org/7.0/#sec-isintailposition',
- IsInteger: 'https://262.ecma-international.org/7.0/#sec-isinteger',
- IsLabelledFunction: 'https://262.ecma-international.org/7.0/#sec-islabelledfunction',
- IsPromise: 'https://262.ecma-international.org/7.0/#sec-ispromise',
- IsPropertyKey: 'https://262.ecma-international.org/7.0/#sec-ispropertykey',
- IsRegExp: 'https://262.ecma-international.org/7.0/#sec-isregexp',
- IsWordChar: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-iswordchar-abstract-operation',
- IterableToArrayLike: 'https://262.ecma-international.org/7.0/#sec-iterabletoarraylike',
- IteratorClose: 'https://262.ecma-international.org/7.0/#sec-iteratorclose',
- IteratorComplete: 'https://262.ecma-international.org/7.0/#sec-iteratorcomplete',
- IteratorNext: 'https://262.ecma-international.org/7.0/#sec-iteratornext',
- IteratorStep: 'https://262.ecma-international.org/7.0/#sec-iteratorstep',
- IteratorValue: 'https://262.ecma-international.org/7.0/#sec-iteratorvalue',
- LocalTime: 'https://262.ecma-international.org/7.0/#sec-localtime',
- LoopContinues: 'https://262.ecma-international.org/7.0/#sec-loopcontinues',
- MakeArgGetter: 'https://262.ecma-international.org/7.0/#sec-makearggetter',
- MakeArgSetter: 'https://262.ecma-international.org/7.0/#sec-makeargsetter',
- MakeClassConstructor: 'https://262.ecma-international.org/7.0/#sec-makeclassconstructor',
- MakeConstructor: 'https://262.ecma-international.org/7.0/#sec-makeconstructor',
- MakeDate: 'https://262.ecma-international.org/7.0/#sec-makedate',
- MakeDay: 'https://262.ecma-international.org/7.0/#sec-makeday',
- MakeMethod: 'https://262.ecma-international.org/7.0/#sec-makemethod',
- MakeSuperPropertyReference: 'https://262.ecma-international.org/7.0/#sec-makesuperpropertyreference',
- MakeTime: 'https://262.ecma-international.org/7.0/#sec-maketime',
- max: 'https://262.ecma-international.org/7.0/#sec-algorithm-conventions',
- min: 'https://262.ecma-international.org/7.0/#sec-algorithm-conventions',
- MinFromTime: 'https://262.ecma-international.org/7.0/#sec-hours-minutes-second-and-milliseconds',
- ModuleNamespaceCreate: 'https://262.ecma-international.org/7.0/#sec-modulenamespacecreate',
- modulo: 'https://262.ecma-international.org/7.0/#sec-algorithm-conventions',
- MonthFromTime: 'https://262.ecma-international.org/7.0/#sec-month-number',
- msFromTime: 'https://262.ecma-international.org/7.0/#sec-hours-minutes-second-and-milliseconds',
- NewDeclarativeEnvironment: 'https://262.ecma-international.org/7.0/#sec-newdeclarativeenvironment',
- NewFunctionEnvironment: 'https://262.ecma-international.org/7.0/#sec-newfunctionenvironment',
- NewGlobalEnvironment: 'https://262.ecma-international.org/7.0/#sec-newglobalenvironment',
- NewModuleEnvironment: 'https://262.ecma-international.org/7.0/#sec-newmoduleenvironment',
- NewObjectEnvironment: 'https://262.ecma-international.org/7.0/#sec-newobjectenvironment',
- NewPromiseCapability: 'https://262.ecma-international.org/7.0/#sec-newpromisecapability',
- NextJob: 'https://262.ecma-international.org/7.0/#sec-nextjob-result',
- NormalCompletion: 'https://262.ecma-international.org/7.0/#sec-normalcompletion',
- ObjectCreate: 'https://262.ecma-international.org/7.0/#sec-objectcreate',
- ObjectDefineProperties: 'https://262.ecma-international.org/7.0/#sec-objectdefineproperties',
- OrdinaryCallBindThis: 'https://262.ecma-international.org/7.0/#sec-ordinarycallbindthis',
- OrdinaryCallEvaluateBody: 'https://262.ecma-international.org/7.0/#sec-ordinarycallevaluatebody',
- OrdinaryCreateFromConstructor: 'https://262.ecma-international.org/7.0/#sec-ordinarycreatefromconstructor',
- OrdinaryDefineOwnProperty: 'https://262.ecma-international.org/7.0/#sec-ordinarydefineownproperty',
- OrdinaryDelete: 'https://262.ecma-international.org/7.0/#sec-ordinarydelete',
- OrdinaryGet: 'https://262.ecma-international.org/7.0/#sec-ordinaryget',
- OrdinaryGetOwnProperty: 'https://262.ecma-international.org/7.0/#sec-ordinarygetownproperty',
- OrdinaryGetPrototypeOf: 'https://262.ecma-international.org/7.0/#sec-ordinarygetprototypeof',
- OrdinaryHasInstance: 'https://262.ecma-international.org/7.0/#sec-ordinaryhasinstance',
- OrdinaryHasProperty: 'https://262.ecma-international.org/7.0/#sec-ordinaryhasproperty',
- OrdinaryIsExtensible: 'https://262.ecma-international.org/7.0/#sec-ordinaryisextensible',
- OrdinaryOwnPropertyKeys: 'https://262.ecma-international.org/7.0/#sec-ordinaryownpropertykeys',
- OrdinaryPreventExtensions: 'https://262.ecma-international.org/7.0/#sec-ordinarypreventextensions',
- OrdinarySet: 'https://262.ecma-international.org/7.0/#sec-ordinaryset',
- OrdinarySetPrototypeOf: 'https://262.ecma-international.org/7.0/#sec-ordinarysetprototypeof',
- ParseModule: 'https://262.ecma-international.org/7.0/#sec-parsemodule',
- ParseScript: 'https://262.ecma-international.org/7.0/#sec-parse-script',
- PerformEval: 'https://262.ecma-international.org/7.0/#sec-performeval',
- PerformPromiseAll: 'https://262.ecma-international.org/7.0/#sec-performpromiseall',
- PerformPromiseRace: 'https://262.ecma-international.org/7.0/#sec-performpromiserace',
- PerformPromiseThen: 'https://262.ecma-international.org/7.0/#sec-performpromisethen',
- PrepareForOrdinaryCall: 'https://262.ecma-international.org/7.0/#sec-prepareforordinarycall',
- PrepareForTailCall: 'https://262.ecma-international.org/7.0/#sec-preparefortailcall',
- PromiseReactionJob: 'https://262.ecma-international.org/7.0/#sec-promisereactionjob',
- PromiseResolveThenableJob: 'https://262.ecma-international.org/7.0/#sec-promiseresolvethenablejob',
- ProxyCreate: 'https://262.ecma-international.org/7.0/#sec-proxycreate',
- PutValue: 'https://262.ecma-international.org/7.0/#sec-putvalue',
- QuoteJSONString: 'https://262.ecma-international.org/7.0/#sec-quotejsonstring',
- RegExpAlloc: 'https://262.ecma-international.org/7.0/#sec-regexpalloc',
- RegExpBuiltinExec: 'https://262.ecma-international.org/7.0/#sec-regexpbuiltinexec',
- RegExpCreate: 'https://262.ecma-international.org/7.0/#sec-regexpcreate',
- RegExpExec: 'https://262.ecma-international.org/7.0/#sec-regexpexec',
- RegExpInitialize: 'https://262.ecma-international.org/7.0/#sec-regexpinitialize',
- RejectPromise: 'https://262.ecma-international.org/7.0/#sec-rejectpromise',
- RepeatMatcher: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-repeatmatcher-abstract-operation',
- RequireObjectCoercible: 'https://262.ecma-international.org/7.0/#sec-requireobjectcoercible',
- ResolveBinding: 'https://262.ecma-international.org/7.0/#sec-resolvebinding',
- ResolveThisBinding: 'https://262.ecma-international.org/7.0/#sec-resolvethisbinding',
- ReturnIfAbrupt: 'https://262.ecma-international.org/7.0/#sec-returnifabrupt',
- SameValue: 'https://262.ecma-international.org/7.0/#sec-samevalue',
- SameValueNonNumber: 'https://262.ecma-international.org/7.0/#sec-samevaluenonnumber',
- SameValueZero: 'https://262.ecma-international.org/7.0/#sec-samevaluezero',
- ScriptEvaluation: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-scriptevaluation',
- ScriptEvaluationJob: 'https://262.ecma-international.org/7.0/#sec-scriptevaluationjob',
- SecFromTime: 'https://262.ecma-international.org/7.0/#sec-hours-minutes-second-and-milliseconds',
- SerializeJSONArray: 'https://262.ecma-international.org/7.0/#sec-serializejsonarray',
- SerializeJSONObject: 'https://262.ecma-international.org/7.0/#sec-serializejsonobject',
- SerializeJSONProperty: 'https://262.ecma-international.org/7.0/#sec-serializejsonproperty',
- Set: 'https://262.ecma-international.org/7.0/#sec-set-o-p-v-throw',
- SetDefaultGlobalBindings: 'https://262.ecma-international.org/7.0/#sec-setdefaultglobalbindings',
- SetFunctionName: 'https://262.ecma-international.org/7.0/#sec-setfunctionname',
- SetIntegrityLevel: 'https://262.ecma-international.org/7.0/#sec-setintegritylevel',
- SetRealmGlobalObject: 'https://262.ecma-international.org/7.0/#sec-setrealmglobalobject',
- SetValueInBuffer: 'https://262.ecma-international.org/7.0/#sec-setvalueinbuffer',
- SetViewValue: 'https://262.ecma-international.org/7.0/#sec-setviewvalue',
- SortCompare: 'https://262.ecma-international.org/7.0/#sec-sortcompare',
- SpeciesConstructor: 'https://262.ecma-international.org/7.0/#sec-speciesconstructor',
- SplitMatch: 'https://262.ecma-international.org/7.0/#sec-splitmatch',
- 'Strict Equality Comparison': 'https://262.ecma-international.org/7.0/#sec-strict-equality-comparison',
- StringCreate: 'https://262.ecma-international.org/7.0/#sec-stringcreate',
- SymbolDescriptiveString: 'https://262.ecma-international.org/7.0/#sec-symboldescriptivestring',
- TestIntegrityLevel: 'https://262.ecma-international.org/7.0/#sec-testintegritylevel',
- thisBooleanValue: 'https://262.ecma-international.org/7.0/#sec-thisbooleanvalue',
- thisNumberValue: 'https://262.ecma-international.org/7.0/#sec-properties-of-the-number-prototype-object',
- thisStringValue: 'https://262.ecma-international.org/7.0/#sec-properties-of-the-string-prototype-object',
- thisTimeValue: 'https://262.ecma-international.org/7.0/#sec-properties-of-the-date-prototype-object',
- TimeClip: 'https://262.ecma-international.org/7.0/#sec-timeclip',
- TimeFromYear: 'https://262.ecma-international.org/7.0/#sec-year-number',
- TimeWithinDay: 'https://262.ecma-international.org/7.0/#sec-day-number-and-time-within-day',
- ToBoolean: 'https://262.ecma-international.org/7.0/#sec-toboolean',
- ToDateString: 'https://262.ecma-international.org/7.0/#sec-todatestring',
- ToInt16: 'https://262.ecma-international.org/7.0/#sec-toint16',
- ToInt32: 'https://262.ecma-international.org/7.0/#sec-toint32',
- ToInt8: 'https://262.ecma-international.org/7.0/#sec-toint8',
- ToInteger: 'https://262.ecma-international.org/7.0/#sec-tointeger',
- ToLength: 'https://262.ecma-international.org/7.0/#sec-tolength',
- ToNumber: 'https://262.ecma-international.org/7.0/#sec-tonumber',
- ToObject: 'https://262.ecma-international.org/7.0/#sec-toobject',
- TopLevelModuleEvaluationJob: 'https://262.ecma-international.org/7.0/#sec-toplevelmoduleevaluationjob',
- ToPrimitive: 'https://262.ecma-international.org/7.0/#sec-toprimitive',
- ToPropertyDescriptor: 'https://262.ecma-international.org/7.0/#sec-topropertydescriptor',
- ToPropertyKey: 'https://262.ecma-international.org/7.0/#sec-topropertykey',
- ToString: 'https://262.ecma-international.org/7.0/#sec-tostring',
- 'ToString Applied to the Number Type': 'https://262.ecma-international.org/7.0/#sec-tostring-applied-to-the-number-type',
- ToUint16: 'https://262.ecma-international.org/7.0/#sec-touint16',
- ToUint32: 'https://262.ecma-international.org/7.0/#sec-touint32',
- ToUint8: 'https://262.ecma-international.org/7.0/#sec-touint8',
- ToUint8Clamp: 'https://262.ecma-international.org/7.0/#sec-touint8clamp',
- TriggerPromiseReactions: 'https://262.ecma-international.org/7.0/#sec-triggerpromisereactions',
- Type: 'https://262.ecma-international.org/7.0/#sec-ecmascript-data-types-and-values',
- TypedArrayCreate: 'https://262.ecma-international.org/7.0/#typedarray-create',
- TypedArraySpeciesCreate: 'https://262.ecma-international.org/7.0/#typedarray-species-create',
- UpdateEmpty: 'https://262.ecma-international.org/7.0/#sec-updateempty',
- UTC: 'https://262.ecma-international.org/7.0/#sec-utc-t',
- UTF16Decode: 'https://262.ecma-international.org/7.0/#sec-utf16decode',
- UTF16Encoding: 'https://262.ecma-international.org/7.0/#sec-utf16encoding',
- ValidateAndApplyPropertyDescriptor: 'https://262.ecma-international.org/7.0/#sec-validateandapplypropertydescriptor',
- ValidateTypedArray: 'https://262.ecma-international.org/7.0/#sec-validatetypedarray',
- WeekDay: 'https://262.ecma-international.org/7.0/#sec-week-day',
- YearFromTime: 'https://262.ecma-international.org/7.0/#sec-year-number'
+ abs: {
+ url: 'https://262.ecma-international.org/7.0/#sec-algorithm-conventions'
+ },
+ 'Abstract Equality Comparison': {
+ url: 'https://262.ecma-international.org/7.0/#sec-abstract-equality-comparison'
+ },
+ 'Abstract Relational Comparison': {
+ url: 'https://262.ecma-international.org/7.0/#sec-abstract-relational-comparison'
+ },
+ AddRestrictedFunctionProperties: {
+ url: 'https://262.ecma-international.org/7.0/#sec-addrestrictedfunctionproperties'
+ },
+ AdvanceStringIndex: {
+ url: 'https://262.ecma-international.org/7.0/#sec-advancestringindex'
+ },
+ AllocateArrayBuffer: {
+ url: 'https://262.ecma-international.org/7.0/#sec-allocatearraybuffer'
+ },
+ AllocateTypedArray: {
+ url: 'https://262.ecma-international.org/7.0/#sec-allocatetypedarray'
+ },
+ AllocateTypedArrayBuffer: {
+ url: 'https://262.ecma-international.org/7.0/#sec-allocatetypedarraybuffer'
+ },
+ ArrayCreate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-arraycreate'
+ },
+ ArraySetLength: {
+ url: 'https://262.ecma-international.org/7.0/#sec-arraysetlength'
+ },
+ ArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-arrayspeciescreate'
+ },
+ BlockDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/7.0/#sec-blockdeclarationinstantiation'
+ },
+ BoundFunctionCreate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-boundfunctioncreate'
+ },
+ Call: {
+ url: 'https://262.ecma-international.org/7.0/#sec-call'
+ },
+ Canonicalize: {
+ url: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-canonicalize-ch'
+ },
+ CanonicalNumericIndexString: {
+ url: 'https://262.ecma-international.org/7.0/#sec-canonicalnumericindexstring'
+ },
+ CharacterRange: {
+ url: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-characterrange-abstract-operation'
+ },
+ CharacterRangeOrUnion: {
+ url: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation'
+ },
+ CharacterSetMatcher: {
+ url: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation'
+ },
+ CloneArrayBuffer: {
+ url: 'https://262.ecma-international.org/7.0/#sec-clonearraybuffer'
+ },
+ CompletePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-completepropertydescriptor'
+ },
+ Completion: {
+ url: 'https://262.ecma-international.org/7.0/#sec-completion-record-specification-type'
+ },
+ CompletionRecord: {
+ url: 'https://262.ecma-international.org/7.0/#sec-completion-record-specification-type'
+ },
+ Construct: {
+ url: 'https://262.ecma-international.org/7.0/#sec-construct'
+ },
+ CopyDataBlockBytes: {
+ url: 'https://262.ecma-international.org/7.0/#sec-copydatablockbytes'
+ },
+ CreateArrayFromList: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createarrayfromlist'
+ },
+ CreateArrayIterator: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createarrayiterator'
+ },
+ CreateBuiltinFunction: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createbuiltinfunction'
+ },
+ CreateByteDataBlock: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createbytedatablock'
+ },
+ CreateDataProperty: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createdataproperty'
+ },
+ CreateDataPropertyOrThrow: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createdatapropertyorthrow'
+ },
+ CreateDynamicFunction: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createdynamicfunction'
+ },
+ CreateHTML: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createhtml'
+ },
+ CreateIntrinsics: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createintrinsics'
+ },
+ CreateIterResultObject: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createiterresultobject'
+ },
+ CreateListFromArrayLike: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createlistfromarraylike'
+ },
+ CreateListIterator: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createlistiterator'
+ },
+ CreateMapIterator: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createmapiterator'
+ },
+ CreateMappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createmappedargumentsobject'
+ },
+ CreateMethodProperty: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createmethodproperty'
+ },
+ CreatePerIterationEnvironment: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createperiterationenvironment'
+ },
+ CreateRealm: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createrealm'
+ },
+ CreateResolvingFunctions: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createresolvingfunctions'
+ },
+ CreateSetIterator: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createsetiterator'
+ },
+ CreateStringIterator: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createstringiterator'
+ },
+ CreateUnmappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/7.0/#sec-createunmappedargumentsobject'
+ },
+ DateFromTime: {
+ url: 'https://262.ecma-international.org/7.0/#sec-date-number'
+ },
+ Day: {
+ url: 'https://262.ecma-international.org/7.0/#sec-day-number-and-time-within-day'
+ },
+ DayFromYear: {
+ url: 'https://262.ecma-international.org/7.0/#sec-year-number'
+ },
+ DaylightSavingTA: {
+ url: 'https://262.ecma-international.org/7.0/#sec-daylight-saving-time-adjustment'
+ },
+ DaysInYear: {
+ url: 'https://262.ecma-international.org/7.0/#sec-year-number'
+ },
+ DayWithinYear: {
+ url: 'https://262.ecma-international.org/7.0/#sec-month-number'
+ },
+ Decode: {
+ url: 'https://262.ecma-international.org/7.0/#sec-decode'
+ },
+ DefinePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/7.0/#sec-definepropertyorthrow'
+ },
+ DeletePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/7.0/#sec-deletepropertyorthrow'
+ },
+ DetachArrayBuffer: {
+ url: 'https://262.ecma-international.org/7.0/#sec-detacharraybuffer'
+ },
+ Encode: {
+ url: 'https://262.ecma-international.org/7.0/#sec-encode'
+ },
+ EnqueueJob: {
+ url: 'https://262.ecma-international.org/7.0/#sec-enqueuejob'
+ },
+ EnumerableOwnNames: {
+ url: 'https://262.ecma-international.org/7.0/#sec-enumerableownnames'
+ },
+ EnumerateObjectProperties: {
+ url: 'https://262.ecma-international.org/7.0/#sec-enumerate-object-properties'
+ },
+ EscapeRegExpPattern: {
+ url: 'https://262.ecma-international.org/7.0/#sec-escaperegexppattern'
+ },
+ EvalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/7.0/#sec-evaldeclarationinstantiation'
+ },
+ EvaluateCall: {
+ url: 'https://262.ecma-international.org/7.0/#sec-evaluatecall'
+ },
+ EvaluateDirectCall: {
+ url: 'https://262.ecma-international.org/7.0/#sec-evaluatedirectcall'
+ },
+ EvaluateNew: {
+ url: 'https://262.ecma-international.org/7.0/#sec-evaluatenew'
+ },
+ floor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-algorithm-conventions'
+ },
+ ForBodyEvaluation: {
+ url: 'https://262.ecma-international.org/7.0/#sec-forbodyevaluation'
+ },
+ 'ForIn/OfBodyEvaluation': {
+ url: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset'
+ },
+ 'ForIn/OfHeadEvaluation': {
+ url: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind'
+ },
+ FromPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-frompropertydescriptor'
+ },
+ FulfillPromise: {
+ url: 'https://262.ecma-international.org/7.0/#sec-fulfillpromise'
+ },
+ FunctionAllocate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-functionallocate'
+ },
+ FunctionCreate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-functioncreate'
+ },
+ FunctionDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/7.0/#sec-functiondeclarationinstantiation'
+ },
+ FunctionInitialize: {
+ url: 'https://262.ecma-international.org/7.0/#sec-functioninitialize'
+ },
+ GeneratorFunctionCreate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-generatorfunctioncreate'
+ },
+ GeneratorResume: {
+ url: 'https://262.ecma-international.org/7.0/#sec-generatorresume'
+ },
+ GeneratorResumeAbrupt: {
+ url: 'https://262.ecma-international.org/7.0/#sec-generatorresumeabrupt'
+ },
+ GeneratorStart: {
+ url: 'https://262.ecma-international.org/7.0/#sec-generatorstart'
+ },
+ GeneratorValidate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-generatorvalidate'
+ },
+ GeneratorYield: {
+ url: 'https://262.ecma-international.org/7.0/#sec-generatoryield'
+ },
+ Get: {
+ url: 'https://262.ecma-international.org/7.0/#sec-get-o-p'
+ },
+ GetActiveScriptOrModule: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getactivescriptormodule'
+ },
+ GetFunctionRealm: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getfunctionrealm'
+ },
+ GetGlobalObject: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getglobalobject'
+ },
+ GetIdentifierReference: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getidentifierreference'
+ },
+ GetIterator: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getiterator'
+ },
+ GetMethod: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getmethod'
+ },
+ GetModuleNamespace: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getmodulenamespace'
+ },
+ GetNewTarget: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getnewtarget'
+ },
+ GetOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getownpropertykeys'
+ },
+ GetPrototypeFromConstructor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getprototypefromconstructor'
+ },
+ GetSubstitution: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getsubstitution'
+ },
+ GetSuperConstructor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getsuperconstructor'
+ },
+ GetTemplateObject: {
+ url: 'https://262.ecma-international.org/7.0/#sec-gettemplateobject'
+ },
+ GetThisEnvironment: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getthisenvironment'
+ },
+ GetThisValue: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getthisvalue'
+ },
+ GetV: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getv'
+ },
+ GetValue: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getvalue'
+ },
+ GetValueFromBuffer: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getvaluefrombuffer'
+ },
+ GetViewValue: {
+ url: 'https://262.ecma-international.org/7.0/#sec-getviewvalue'
+ },
+ GlobalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/7.0/#sec-globaldeclarationinstantiation'
+ },
+ HasOwnProperty: {
+ url: 'https://262.ecma-international.org/7.0/#sec-hasownproperty'
+ },
+ HasProperty: {
+ url: 'https://262.ecma-international.org/7.0/#sec-hasproperty'
+ },
+ HourFromTime: {
+ url: 'https://262.ecma-international.org/7.0/#sec-hours-minutes-second-and-milliseconds'
+ },
+ IfAbruptRejectPromise: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ifabruptrejectpromise'
+ },
+ ImportedLocalNames: {
+ url: 'https://262.ecma-international.org/7.0/#sec-importedlocalnames'
+ },
+ InitializeBoundName: {
+ url: 'https://262.ecma-international.org/7.0/#sec-initializeboundname'
+ },
+ InitializeHostDefinedRealm: {
+ url: 'https://262.ecma-international.org/7.0/#sec-initializehostdefinedrealm'
+ },
+ InitializeReferencedBinding: {
+ url: 'https://262.ecma-international.org/7.0/#sec-initializereferencedbinding'
+ },
+ InLeapYear: {
+ url: 'https://262.ecma-international.org/7.0/#sec-year-number'
+ },
+ InstanceofOperator: {
+ url: 'https://262.ecma-international.org/7.0/#sec-instanceofoperator'
+ },
+ IntegerIndexedElementGet: {
+ url: 'https://262.ecma-international.org/7.0/#sec-integerindexedelementget'
+ },
+ IntegerIndexedElementSet: {
+ url: 'https://262.ecma-international.org/7.0/#sec-integerindexedelementset'
+ },
+ IntegerIndexedObjectCreate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-integerindexedobjectcreate'
+ },
+ InternalizeJSONProperty: {
+ url: 'https://262.ecma-international.org/7.0/#sec-internalizejsonproperty'
+ },
+ Invoke: {
+ url: 'https://262.ecma-international.org/7.0/#sec-invoke'
+ },
+ IsAccessorDescriptor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isaccessordescriptor'
+ },
+ IsAnonymousFunctionDefinition: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isanonymousfunctiondefinition'
+ },
+ IsArray: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isarray'
+ },
+ IsCallable: {
+ url: 'https://262.ecma-international.org/7.0/#sec-iscallable'
+ },
+ IsCompatiblePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-iscompatiblepropertydescriptor'
+ },
+ IsConcatSpreadable: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isconcatspreadable'
+ },
+ IsConstructor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isconstructor'
+ },
+ IsDataDescriptor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isdatadescriptor'
+ },
+ IsDetachedBuffer: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isdetachedbuffer'
+ },
+ IsExtensible: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isextensible-o'
+ },
+ IsGenericDescriptor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isgenericdescriptor'
+ },
+ IsInTailPosition: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isintailposition'
+ },
+ IsInteger: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isinteger'
+ },
+ IsLabelledFunction: {
+ url: 'https://262.ecma-international.org/7.0/#sec-islabelledfunction'
+ },
+ IsPromise: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ispromise'
+ },
+ IsPropertyKey: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ispropertykey'
+ },
+ IsRegExp: {
+ url: 'https://262.ecma-international.org/7.0/#sec-isregexp'
+ },
+ IsWordChar: {
+ url: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-iswordchar-abstract-operation'
+ },
+ IterableToArrayLike: {
+ url: 'https://262.ecma-international.org/7.0/#sec-iterabletoarraylike'
+ },
+ IteratorClose: {
+ url: 'https://262.ecma-international.org/7.0/#sec-iteratorclose'
+ },
+ IteratorComplete: {
+ url: 'https://262.ecma-international.org/7.0/#sec-iteratorcomplete'
+ },
+ IteratorNext: {
+ url: 'https://262.ecma-international.org/7.0/#sec-iteratornext'
+ },
+ IteratorStep: {
+ url: 'https://262.ecma-international.org/7.0/#sec-iteratorstep'
+ },
+ IteratorValue: {
+ url: 'https://262.ecma-international.org/7.0/#sec-iteratorvalue'
+ },
+ LocalTime: {
+ url: 'https://262.ecma-international.org/7.0/#sec-localtime'
+ },
+ LoopContinues: {
+ url: 'https://262.ecma-international.org/7.0/#sec-loopcontinues'
+ },
+ MakeArgGetter: {
+ url: 'https://262.ecma-international.org/7.0/#sec-makearggetter'
+ },
+ MakeArgSetter: {
+ url: 'https://262.ecma-international.org/7.0/#sec-makeargsetter'
+ },
+ MakeClassConstructor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-makeclassconstructor'
+ },
+ MakeConstructor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-makeconstructor'
+ },
+ MakeDate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-makedate'
+ },
+ MakeDay: {
+ url: 'https://262.ecma-international.org/7.0/#sec-makeday'
+ },
+ MakeMethod: {
+ url: 'https://262.ecma-international.org/7.0/#sec-makemethod'
+ },
+ MakeSuperPropertyReference: {
+ url: 'https://262.ecma-international.org/7.0/#sec-makesuperpropertyreference'
+ },
+ MakeTime: {
+ url: 'https://262.ecma-international.org/7.0/#sec-maketime'
+ },
+ max: {
+ url: 'https://262.ecma-international.org/7.0/#sec-algorithm-conventions'
+ },
+ min: {
+ url: 'https://262.ecma-international.org/7.0/#sec-algorithm-conventions'
+ },
+ MinFromTime: {
+ url: 'https://262.ecma-international.org/7.0/#sec-hours-minutes-second-and-milliseconds'
+ },
+ ModuleNamespaceCreate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-modulenamespacecreate'
+ },
+ modulo: {
+ url: 'https://262.ecma-international.org/7.0/#sec-algorithm-conventions'
+ },
+ MonthFromTime: {
+ url: 'https://262.ecma-international.org/7.0/#sec-month-number'
+ },
+ msFromTime: {
+ url: 'https://262.ecma-international.org/7.0/#sec-hours-minutes-second-and-milliseconds'
+ },
+ NewDeclarativeEnvironment: {
+ url: 'https://262.ecma-international.org/7.0/#sec-newdeclarativeenvironment'
+ },
+ NewFunctionEnvironment: {
+ url: 'https://262.ecma-international.org/7.0/#sec-newfunctionenvironment'
+ },
+ NewGlobalEnvironment: {
+ url: 'https://262.ecma-international.org/7.0/#sec-newglobalenvironment'
+ },
+ NewModuleEnvironment: {
+ url: 'https://262.ecma-international.org/7.0/#sec-newmoduleenvironment'
+ },
+ NewObjectEnvironment: {
+ url: 'https://262.ecma-international.org/7.0/#sec-newobjectenvironment'
+ },
+ NewPromiseCapability: {
+ url: 'https://262.ecma-international.org/7.0/#sec-newpromisecapability'
+ },
+ NextJob: {
+ url: 'https://262.ecma-international.org/7.0/#sec-nextjob-result'
+ },
+ NormalCompletion: {
+ url: 'https://262.ecma-international.org/7.0/#sec-normalcompletion'
+ },
+ ObjectCreate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-objectcreate'
+ },
+ ObjectDefineProperties: {
+ url: 'https://262.ecma-international.org/7.0/#sec-objectdefineproperties'
+ },
+ OrdinaryCallBindThis: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinarycallbindthis'
+ },
+ OrdinaryCallEvaluateBody: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinarycallevaluatebody'
+ },
+ OrdinaryCreateFromConstructor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinarycreatefromconstructor'
+ },
+ OrdinaryDefineOwnProperty: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinarydefineownproperty'
+ },
+ OrdinaryDelete: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinarydelete'
+ },
+ OrdinaryGet: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinaryget'
+ },
+ OrdinaryGetOwnProperty: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinarygetownproperty'
+ },
+ OrdinaryGetPrototypeOf: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinarygetprototypeof'
+ },
+ OrdinaryHasInstance: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinaryhasinstance'
+ },
+ OrdinaryHasProperty: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinaryhasproperty'
+ },
+ OrdinaryIsExtensible: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinaryisextensible'
+ },
+ OrdinaryOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinaryownpropertykeys'
+ },
+ OrdinaryPreventExtensions: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinarypreventextensions'
+ },
+ OrdinarySet: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinaryset'
+ },
+ OrdinarySetPrototypeOf: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ordinarysetprototypeof'
+ },
+ ParseModule: {
+ url: 'https://262.ecma-international.org/7.0/#sec-parsemodule'
+ },
+ ParseScript: {
+ url: 'https://262.ecma-international.org/7.0/#sec-parse-script'
+ },
+ PerformEval: {
+ url: 'https://262.ecma-international.org/7.0/#sec-performeval'
+ },
+ PerformPromiseAll: {
+ url: 'https://262.ecma-international.org/7.0/#sec-performpromiseall'
+ },
+ PerformPromiseRace: {
+ url: 'https://262.ecma-international.org/7.0/#sec-performpromiserace'
+ },
+ PerformPromiseThen: {
+ url: 'https://262.ecma-international.org/7.0/#sec-performpromisethen'
+ },
+ PrepareForOrdinaryCall: {
+ url: 'https://262.ecma-international.org/7.0/#sec-prepareforordinarycall'
+ },
+ PrepareForTailCall: {
+ url: 'https://262.ecma-international.org/7.0/#sec-preparefortailcall'
+ },
+ PromiseReactionJob: {
+ url: 'https://262.ecma-international.org/7.0/#sec-promisereactionjob'
+ },
+ PromiseResolveThenableJob: {
+ url: 'https://262.ecma-international.org/7.0/#sec-promiseresolvethenablejob'
+ },
+ ProxyCreate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-proxycreate'
+ },
+ PutValue: {
+ url: 'https://262.ecma-international.org/7.0/#sec-putvalue'
+ },
+ QuoteJSONString: {
+ url: 'https://262.ecma-international.org/7.0/#sec-quotejsonstring'
+ },
+ RegExpAlloc: {
+ url: 'https://262.ecma-international.org/7.0/#sec-regexpalloc'
+ },
+ RegExpBuiltinExec: {
+ url: 'https://262.ecma-international.org/7.0/#sec-regexpbuiltinexec'
+ },
+ RegExpCreate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-regexpcreate'
+ },
+ RegExpExec: {
+ url: 'https://262.ecma-international.org/7.0/#sec-regexpexec'
+ },
+ RegExpInitialize: {
+ url: 'https://262.ecma-international.org/7.0/#sec-regexpinitialize'
+ },
+ RejectPromise: {
+ url: 'https://262.ecma-international.org/7.0/#sec-rejectpromise'
+ },
+ RepeatMatcher: {
+ url: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-repeatmatcher-abstract-operation'
+ },
+ RequireObjectCoercible: {
+ url: 'https://262.ecma-international.org/7.0/#sec-requireobjectcoercible'
+ },
+ ResolveBinding: {
+ url: 'https://262.ecma-international.org/7.0/#sec-resolvebinding'
+ },
+ ResolveThisBinding: {
+ url: 'https://262.ecma-international.org/7.0/#sec-resolvethisbinding'
+ },
+ ReturnIfAbrupt: {
+ url: 'https://262.ecma-international.org/7.0/#sec-returnifabrupt'
+ },
+ SameValue: {
+ url: 'https://262.ecma-international.org/7.0/#sec-samevalue'
+ },
+ SameValueNonNumber: {
+ url: 'https://262.ecma-international.org/7.0/#sec-samevaluenonnumber'
+ },
+ SameValueZero: {
+ url: 'https://262.ecma-international.org/7.0/#sec-samevaluezero'
+ },
+ ScriptEvaluation: {
+ url: 'https://262.ecma-international.org/7.0/#sec-runtime-semantics-scriptevaluation'
+ },
+ ScriptEvaluationJob: {
+ url: 'https://262.ecma-international.org/7.0/#sec-scriptevaluationjob'
+ },
+ SecFromTime: {
+ url: 'https://262.ecma-international.org/7.0/#sec-hours-minutes-second-and-milliseconds'
+ },
+ SerializeJSONArray: {
+ url: 'https://262.ecma-international.org/7.0/#sec-serializejsonarray'
+ },
+ SerializeJSONObject: {
+ url: 'https://262.ecma-international.org/7.0/#sec-serializejsonobject'
+ },
+ SerializeJSONProperty: {
+ url: 'https://262.ecma-international.org/7.0/#sec-serializejsonproperty'
+ },
+ Set: {
+ url: 'https://262.ecma-international.org/7.0/#sec-set-o-p-v-throw'
+ },
+ SetDefaultGlobalBindings: {
+ url: 'https://262.ecma-international.org/7.0/#sec-setdefaultglobalbindings'
+ },
+ SetFunctionName: {
+ url: 'https://262.ecma-international.org/7.0/#sec-setfunctionname'
+ },
+ SetIntegrityLevel: {
+ url: 'https://262.ecma-international.org/7.0/#sec-setintegritylevel'
+ },
+ SetRealmGlobalObject: {
+ url: 'https://262.ecma-international.org/7.0/#sec-setrealmglobalobject'
+ },
+ SetValueInBuffer: {
+ url: 'https://262.ecma-international.org/7.0/#sec-setvalueinbuffer'
+ },
+ SetViewValue: {
+ url: 'https://262.ecma-international.org/7.0/#sec-setviewvalue'
+ },
+ SortCompare: {
+ url: 'https://262.ecma-international.org/7.0/#sec-sortcompare'
+ },
+ SpeciesConstructor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-speciesconstructor'
+ },
+ SplitMatch: {
+ url: 'https://262.ecma-international.org/7.0/#sec-splitmatch'
+ },
+ 'Strict Equality Comparison': {
+ url: 'https://262.ecma-international.org/7.0/#sec-strict-equality-comparison'
+ },
+ StringCreate: {
+ url: 'https://262.ecma-international.org/7.0/#sec-stringcreate'
+ },
+ SymbolDescriptiveString: {
+ url: 'https://262.ecma-international.org/7.0/#sec-symboldescriptivestring'
+ },
+ TestIntegrityLevel: {
+ url: 'https://262.ecma-international.org/7.0/#sec-testintegritylevel'
+ },
+ thisBooleanValue: {
+ url: 'https://262.ecma-international.org/7.0/#sec-thisbooleanvalue'
+ },
+ thisNumberValue: {
+ url: 'https://262.ecma-international.org/7.0/#sec-properties-of-the-number-prototype-object'
+ },
+ thisStringValue: {
+ url: 'https://262.ecma-international.org/7.0/#sec-properties-of-the-string-prototype-object'
+ },
+ thisTimeValue: {
+ url: 'https://262.ecma-international.org/7.0/#sec-properties-of-the-date-prototype-object'
+ },
+ TimeClip: {
+ url: 'https://262.ecma-international.org/7.0/#sec-timeclip'
+ },
+ TimeFromYear: {
+ url: 'https://262.ecma-international.org/7.0/#sec-year-number'
+ },
+ TimeWithinDay: {
+ url: 'https://262.ecma-international.org/7.0/#sec-day-number-and-time-within-day'
+ },
+ ToBoolean: {
+ url: 'https://262.ecma-international.org/7.0/#sec-toboolean'
+ },
+ ToDateString: {
+ url: 'https://262.ecma-international.org/7.0/#sec-todatestring'
+ },
+ ToInt16: {
+ url: 'https://262.ecma-international.org/7.0/#sec-toint16'
+ },
+ ToInt32: {
+ url: 'https://262.ecma-international.org/7.0/#sec-toint32'
+ },
+ ToInt8: {
+ url: 'https://262.ecma-international.org/7.0/#sec-toint8'
+ },
+ ToInteger: {
+ url: 'https://262.ecma-international.org/7.0/#sec-tointeger'
+ },
+ ToLength: {
+ url: 'https://262.ecma-international.org/7.0/#sec-tolength'
+ },
+ ToNumber: {
+ url: 'https://262.ecma-international.org/7.0/#sec-tonumber'
+ },
+ ToObject: {
+ url: 'https://262.ecma-international.org/7.0/#sec-toobject'
+ },
+ TopLevelModuleEvaluationJob: {
+ url: 'https://262.ecma-international.org/7.0/#sec-toplevelmoduleevaluationjob'
+ },
+ ToPrimitive: {
+ url: 'https://262.ecma-international.org/7.0/#sec-toprimitive'
+ },
+ ToPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-topropertydescriptor'
+ },
+ ToPropertyKey: {
+ url: 'https://262.ecma-international.org/7.0/#sec-topropertykey'
+ },
+ ToString: {
+ url: 'https://262.ecma-international.org/7.0/#sec-tostring'
+ },
+ 'ToString Applied to the Number Type': {
+ url: 'https://262.ecma-international.org/7.0/#sec-tostring-applied-to-the-number-type'
+ },
+ ToUint16: {
+ url: 'https://262.ecma-international.org/7.0/#sec-touint16'
+ },
+ ToUint32: {
+ url: 'https://262.ecma-international.org/7.0/#sec-touint32'
+ },
+ ToUint8: {
+ url: 'https://262.ecma-international.org/7.0/#sec-touint8'
+ },
+ ToUint8Clamp: {
+ url: 'https://262.ecma-international.org/7.0/#sec-touint8clamp'
+ },
+ TriggerPromiseReactions: {
+ url: 'https://262.ecma-international.org/7.0/#sec-triggerpromisereactions'
+ },
+ Type: {
+ url: 'https://262.ecma-international.org/7.0/#sec-ecmascript-data-types-and-values'
+ },
+ TypedArrayCreate: {
+ url: 'https://262.ecma-international.org/7.0/#typedarray-create'
+ },
+ TypedArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/7.0/#typedarray-species-create'
+ },
+ UpdateEmpty: {
+ url: 'https://262.ecma-international.org/7.0/#sec-updateempty'
+ },
+ UTC: {
+ url: 'https://262.ecma-international.org/7.0/#sec-utc-t'
+ },
+ UTF16Decode: {
+ url: 'https://262.ecma-international.org/7.0/#sec-utf16decode'
+ },
+ UTF16Encoding: {
+ url: 'https://262.ecma-international.org/7.0/#sec-utf16encoding'
+ },
+ ValidateAndApplyPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/7.0/#sec-validateandapplypropertydescriptor'
+ },
+ ValidateTypedArray: {
+ url: 'https://262.ecma-international.org/7.0/#sec-validatetypedarray'
+ },
+ WeekDay: {
+ url: 'https://262.ecma-international.org/7.0/#sec-week-day'
+ },
+ YearFromTime: {
+ url: 'https://262.ecma-international.org/7.0/#sec-year-number'
+ }
};
diff --git a/node_modules/es-abstract/operations/2017.js b/node_modules/es-abstract/operations/2017.js
index b3a313f5c..5fa6e6aea 100644
--- a/node_modules/es-abstract/operations/2017.js
+++ b/node_modules/es-abstract/operations/2017.js
@@ -3,323 +3,952 @@
module.exports = {
IsPropertyDescriptor: 'https://262.ecma-international.org/6.0/#sec-property-descriptor-specification-type', // not actually an abstract op
- abs: 'https://262.ecma-international.org/8.0/#eqn-abs',
- 'Abstract Equality Comparison': 'https://262.ecma-international.org/8.0/#sec-abstract-equality-comparison',
- 'Abstract Relational Comparison': 'https://262.ecma-international.org/8.0/#sec-abstract-relational-comparison',
- AddRestrictedFunctionProperties: 'https://262.ecma-international.org/8.0/#sec-addrestrictedfunctionproperties',
- AddWaiter: 'https://262.ecma-international.org/8.0/#sec-addwaiter',
- AdvanceStringIndex: 'https://262.ecma-international.org/8.0/#sec-advancestringindex',
- 'agent-order': 'https://262.ecma-international.org/8.0/#sec-agent-order',
- AgentCanSuspend: 'https://262.ecma-international.org/8.0/#sec-agentcansuspend',
- AgentSignifier: 'https://262.ecma-international.org/8.0/#sec-agentsignifier',
- AllocateArrayBuffer: 'https://262.ecma-international.org/8.0/#sec-allocatearraybuffer',
- AllocateSharedArrayBuffer: 'https://262.ecma-international.org/8.0/#sec-allocatesharedarraybuffer',
- AllocateTypedArray: 'https://262.ecma-international.org/8.0/#sec-allocatetypedarray',
- AllocateTypedArrayBuffer: 'https://262.ecma-international.org/8.0/#sec-allocatetypedarraybuffer',
- ArrayCreate: 'https://262.ecma-international.org/8.0/#sec-arraycreate',
- ArraySetLength: 'https://262.ecma-international.org/8.0/#sec-arraysetlength',
- ArraySpeciesCreate: 'https://262.ecma-international.org/8.0/#sec-arrayspeciescreate',
- AsyncFunctionAwait: 'https://262.ecma-international.org/8.0/#sec-async-functions-abstract-operations-async-function-await',
- AsyncFunctionCreate: 'https://262.ecma-international.org/8.0/#sec-async-functions-abstract-operations-async-function-create',
- AsyncFunctionStart: 'https://262.ecma-international.org/8.0/#sec-async-functions-abstract-operations-async-function-start',
- AtomicLoad: 'https://262.ecma-international.org/8.0/#sec-atomicload',
- AtomicReadModifyWrite: 'https://262.ecma-international.org/8.0/#sec-atomicreadmodifywrite',
- BlockDeclarationInstantiation: 'https://262.ecma-international.org/8.0/#sec-blockdeclarationinstantiation',
- BoundFunctionCreate: 'https://262.ecma-international.org/8.0/#sec-boundfunctioncreate',
- Call: 'https://262.ecma-international.org/8.0/#sec-call',
- Canonicalize: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-canonicalize-ch',
- CanonicalNumericIndexString: 'https://262.ecma-international.org/8.0/#sec-canonicalnumericindexstring',
- CharacterRange: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-characterrange-abstract-operation',
- CharacterRangeOrUnion: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation',
- CharacterSetMatcher: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation',
- CloneArrayBuffer: 'https://262.ecma-international.org/8.0/#sec-clonearraybuffer',
- CompletePropertyDescriptor: 'https://262.ecma-international.org/8.0/#sec-completepropertydescriptor',
- Completion: 'https://262.ecma-international.org/8.0/#sec-completion-record-specification-type',
- ComposeWriteEventBytes: 'https://262.ecma-international.org/8.0/#sec-composewriteeventbytes',
- Construct: 'https://262.ecma-international.org/8.0/#sec-construct',
- CopyDataBlockBytes: 'https://262.ecma-international.org/8.0/#sec-copydatablockbytes',
- CreateArrayFromList: 'https://262.ecma-international.org/8.0/#sec-createarrayfromlist',
- CreateArrayIterator: 'https://262.ecma-international.org/8.0/#sec-createarrayiterator',
- CreateBuiltinFunction: 'https://262.ecma-international.org/8.0/#sec-createbuiltinfunction',
- CreateByteDataBlock: 'https://262.ecma-international.org/8.0/#sec-createbytedatablock',
- CreateDataProperty: 'https://262.ecma-international.org/8.0/#sec-createdataproperty',
- CreateDataPropertyOrThrow: 'https://262.ecma-international.org/8.0/#sec-createdatapropertyorthrow',
- CreateDynamicFunction: 'https://262.ecma-international.org/8.0/#sec-createdynamicfunction',
- CreateHTML: 'https://262.ecma-international.org/8.0/#sec-createhtml',
- CreateIntrinsics: 'https://262.ecma-international.org/8.0/#sec-createintrinsics',
- CreateIterResultObject: 'https://262.ecma-international.org/8.0/#sec-createiterresultobject',
- CreateListFromArrayLike: 'https://262.ecma-international.org/8.0/#sec-createlistfromarraylike',
- CreateListIterator: 'https://262.ecma-international.org/8.0/#sec-createlistiterator',
- CreateMapIterator: 'https://262.ecma-international.org/8.0/#sec-createmapiterator',
- CreateMappedArgumentsObject: 'https://262.ecma-international.org/8.0/#sec-createmappedargumentsobject',
- CreateMethodProperty: 'https://262.ecma-international.org/8.0/#sec-createmethodproperty',
- CreatePerIterationEnvironment: 'https://262.ecma-international.org/8.0/#sec-createperiterationenvironment',
- CreateRealm: 'https://262.ecma-international.org/8.0/#sec-createrealm',
- CreateResolvingFunctions: 'https://262.ecma-international.org/8.0/#sec-createresolvingfunctions',
- CreateSetIterator: 'https://262.ecma-international.org/8.0/#sec-createsetiterator',
- CreateSharedByteDataBlock: 'https://262.ecma-international.org/8.0/#sec-createsharedbytedatablock',
- CreateStringIterator: 'https://262.ecma-international.org/8.0/#sec-createstringiterator',
- CreateUnmappedArgumentsObject: 'https://262.ecma-international.org/8.0/#sec-createunmappedargumentsobject',
- DateFromTime: 'https://262.ecma-international.org/8.0/#sec-date-number',
- Day: 'https://262.ecma-international.org/8.0/#eqn-Day',
- DayFromYear: 'https://262.ecma-international.org/8.0/#eqn-DaysFromYear',
- DaylightSavingTA: 'https://262.ecma-international.org/8.0/#sec-daylight-saving-time-adjustment',
- DaysInYear: 'https://262.ecma-international.org/8.0/#eqn-DaysInYear',
- DayWithinYear: 'https://262.ecma-international.org/8.0/#eqn-DayWithinYear',
- Decode: 'https://262.ecma-international.org/8.0/#sec-decode',
- DefinePropertyOrThrow: 'https://262.ecma-international.org/8.0/#sec-definepropertyorthrow',
- DeletePropertyOrThrow: 'https://262.ecma-international.org/8.0/#sec-deletepropertyorthrow',
- DetachArrayBuffer: 'https://262.ecma-international.org/8.0/#sec-detacharraybuffer',
- Encode: 'https://262.ecma-international.org/8.0/#sec-encode',
- EnqueueJob: 'https://262.ecma-international.org/8.0/#sec-enqueuejob',
- EnterCriticalSection: 'https://262.ecma-international.org/8.0/#sec-entercriticalsection',
- EnumerableOwnProperties: 'https://262.ecma-international.org/8.0/#sec-enumerableownproperties',
- EnumerateObjectProperties: 'https://262.ecma-international.org/8.0/#sec-enumerate-object-properties',
- EscapeRegExpPattern: 'https://262.ecma-international.org/8.0/#sec-escaperegexppattern',
- EvalDeclarationInstantiation: 'https://262.ecma-international.org/8.0/#sec-evaldeclarationinstantiation',
- EvaluateCall: 'https://262.ecma-international.org/8.0/#sec-evaluatecall',
- EvaluateDirectCall: 'https://262.ecma-international.org/8.0/#sec-evaluatedirectcall',
- EvaluateNew: 'https://262.ecma-international.org/8.0/#sec-evaluatenew',
- EventSet: 'https://262.ecma-international.org/8.0/#sec-event-set',
- floor: 'https://262.ecma-international.org/8.0/#eqn-floor',
- ForBodyEvaluation: 'https://262.ecma-international.org/8.0/#sec-forbodyevaluation',
- 'ForIn/OfBodyEvaluation': 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset',
- 'ForIn/OfHeadEvaluation': 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind',
- FromPropertyDescriptor: 'https://262.ecma-international.org/8.0/#sec-frompropertydescriptor',
- FulfillPromise: 'https://262.ecma-international.org/8.0/#sec-fulfillpromise',
- FunctionAllocate: 'https://262.ecma-international.org/8.0/#sec-functionallocate',
- FunctionCreate: 'https://262.ecma-international.org/8.0/#sec-functioncreate',
- FunctionDeclarationInstantiation: 'https://262.ecma-international.org/8.0/#sec-functiondeclarationinstantiation',
- FunctionInitialize: 'https://262.ecma-international.org/8.0/#sec-functioninitialize',
- GeneratorFunctionCreate: 'https://262.ecma-international.org/8.0/#sec-generatorfunctioncreate',
- GeneratorResume: 'https://262.ecma-international.org/8.0/#sec-generatorresume',
- GeneratorResumeAbrupt: 'https://262.ecma-international.org/8.0/#sec-generatorresumeabrupt',
- GeneratorStart: 'https://262.ecma-international.org/8.0/#sec-generatorstart',
- GeneratorValidate: 'https://262.ecma-international.org/8.0/#sec-generatorvalidate',
- GeneratorYield: 'https://262.ecma-international.org/8.0/#sec-generatoryield',
- Get: 'https://262.ecma-international.org/8.0/#sec-get-o-p',
- GetActiveScriptOrModule: 'https://262.ecma-international.org/8.0/#sec-getactivescriptormodule',
- GetBase: 'https://262.ecma-international.org/8.0/#ao-getbase',
- GetFunctionRealm: 'https://262.ecma-international.org/8.0/#sec-getfunctionrealm',
- GetGlobalObject: 'https://262.ecma-international.org/8.0/#sec-getglobalobject',
- GetIdentifierReference: 'https://262.ecma-international.org/8.0/#sec-getidentifierreference',
- GetIterator: 'https://262.ecma-international.org/8.0/#sec-getiterator',
- GetMethod: 'https://262.ecma-international.org/8.0/#sec-getmethod',
- GetModifySetValueInBuffer: 'https://262.ecma-international.org/8.0/#sec-getmodifysetvalueinbuffer',
- GetModuleNamespace: 'https://262.ecma-international.org/8.0/#sec-getmodulenamespace',
- GetNewTarget: 'https://262.ecma-international.org/8.0/#sec-getnewtarget',
- GetOwnPropertyKeys: 'https://262.ecma-international.org/8.0/#sec-getownpropertykeys',
- GetPrototypeFromConstructor: 'https://262.ecma-international.org/8.0/#sec-getprototypefromconstructor',
- GetReferencedName: 'https://262.ecma-international.org/8.0/#ao-getreferencedname',
- GetSubstitution: 'https://262.ecma-international.org/8.0/#sec-getsubstitution',
- GetSuperConstructor: 'https://262.ecma-international.org/8.0/#sec-getsuperconstructor',
- GetTemplateObject: 'https://262.ecma-international.org/8.0/#sec-gettemplateobject',
- GetThisEnvironment: 'https://262.ecma-international.org/8.0/#sec-getthisenvironment',
- GetThisValue: 'https://262.ecma-international.org/8.0/#sec-getthisvalue',
- GetV: 'https://262.ecma-international.org/8.0/#sec-getv',
- GetValue: 'https://262.ecma-international.org/8.0/#sec-getvalue',
- GetValueFromBuffer: 'https://262.ecma-international.org/8.0/#sec-getvaluefrombuffer',
- GetViewValue: 'https://262.ecma-international.org/8.0/#sec-getviewvalue',
- GetWaiterList: 'https://262.ecma-international.org/8.0/#sec-getwaiterlist',
- GlobalDeclarationInstantiation: 'https://262.ecma-international.org/8.0/#sec-globaldeclarationinstantiation',
- 'happens-before': 'https://262.ecma-international.org/8.0/#sec-happens-before',
- HasOwnProperty: 'https://262.ecma-international.org/8.0/#sec-hasownproperty',
- HasPrimitiveBase: 'https://262.ecma-international.org/8.0/#ao-hasprimitivebase',
- HasProperty: 'https://262.ecma-international.org/8.0/#sec-hasproperty',
- 'host-synchronizes-with': 'https://262.ecma-international.org/8.0/#sec-host-synchronizes-with',
- HostEnsureCanCompileStrings: 'https://262.ecma-international.org/8.0/#sec-hostensurecancompilestrings',
- HostEventSet: 'https://262.ecma-international.org/8.0/#sec-hosteventset',
- HostPromiseRejectionTracker: 'https://262.ecma-international.org/8.0/#sec-host-promise-rejection-tracker',
- HostReportErrors: 'https://262.ecma-international.org/8.0/#sec-host-report-errors',
- HostResolveImportedModule: 'https://262.ecma-international.org/8.0/#sec-hostresolveimportedmodule',
- HourFromTime: 'https://262.ecma-international.org/8.0/#eqn-HourFromTime',
- IfAbruptRejectPromise: 'https://262.ecma-international.org/8.0/#sec-ifabruptrejectpromise',
- ImportedLocalNames: 'https://262.ecma-international.org/8.0/#sec-importedlocalnames',
- InitializeBoundName: 'https://262.ecma-international.org/8.0/#sec-initializeboundname',
- InitializeHostDefinedRealm: 'https://262.ecma-international.org/8.0/#sec-initializehostdefinedrealm',
- InitializeReferencedBinding: 'https://262.ecma-international.org/8.0/#sec-initializereferencedbinding',
- InLeapYear: 'https://262.ecma-international.org/8.0/#eqn-InLeapYear',
- InstanceofOperator: 'https://262.ecma-international.org/8.0/#sec-instanceofoperator',
- IntegerIndexedElementGet: 'https://262.ecma-international.org/8.0/#sec-integerindexedelementget',
- IntegerIndexedElementSet: 'https://262.ecma-international.org/8.0/#sec-integerindexedelementset',
- IntegerIndexedObjectCreate: 'https://262.ecma-international.org/8.0/#sec-integerindexedobjectcreate',
- InternalizeJSONProperty: 'https://262.ecma-international.org/8.0/#sec-internalizejsonproperty',
- Invoke: 'https://262.ecma-international.org/8.0/#sec-invoke',
- IsAccessorDescriptor: 'https://262.ecma-international.org/8.0/#sec-isaccessordescriptor',
- IsAnonymousFunctionDefinition: 'https://262.ecma-international.org/8.0/#sec-isanonymousfunctiondefinition',
- IsArray: 'https://262.ecma-international.org/8.0/#sec-isarray',
- IsCallable: 'https://262.ecma-international.org/8.0/#sec-iscallable',
- IsCompatiblePropertyDescriptor: 'https://262.ecma-international.org/8.0/#sec-iscompatiblepropertydescriptor',
- IsConcatSpreadable: 'https://262.ecma-international.org/8.0/#sec-isconcatspreadable',
- IsConstructor: 'https://262.ecma-international.org/8.0/#sec-isconstructor',
- IsDataDescriptor: 'https://262.ecma-international.org/8.0/#sec-isdatadescriptor',
- IsDetachedBuffer: 'https://262.ecma-international.org/8.0/#sec-isdetachedbuffer',
- IsExtensible: 'https://262.ecma-international.org/8.0/#sec-isextensible-o',
- IsGenericDescriptor: 'https://262.ecma-international.org/8.0/#sec-isgenericdescriptor',
- IsInTailPosition: 'https://262.ecma-international.org/8.0/#sec-isintailposition',
- IsInteger: 'https://262.ecma-international.org/8.0/#sec-isinteger',
- IsLabelledFunction: 'https://262.ecma-international.org/8.0/#sec-islabelledfunction',
- IsPromise: 'https://262.ecma-international.org/8.0/#sec-ispromise',
- IsPropertyKey: 'https://262.ecma-international.org/8.0/#sec-ispropertykey',
- IsPropertyReference: 'https://262.ecma-international.org/8.0/#ao-ispropertyreference',
- IsRegExp: 'https://262.ecma-international.org/8.0/#sec-isregexp',
- IsSharedArrayBuffer: 'https://262.ecma-international.org/8.0/#sec-issharedarraybuffer',
- IsStrictReference: 'https://262.ecma-international.org/8.0/#ao-isstrictreference',
- IsSuperReference: 'https://262.ecma-international.org/8.0/#ao-issuperreference',
- IsUnresolvableReference: 'https://262.ecma-international.org/8.0/#ao-isunresolvablereference',
- IsWordChar: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-iswordchar-abstract-operation',
- IterableToList: 'https://262.ecma-international.org/8.0/#sec-iterabletolist',
- IteratorClose: 'https://262.ecma-international.org/8.0/#sec-iteratorclose',
- IteratorComplete: 'https://262.ecma-international.org/8.0/#sec-iteratorcomplete',
- IteratorNext: 'https://262.ecma-international.org/8.0/#sec-iteratornext',
- IteratorStep: 'https://262.ecma-international.org/8.0/#sec-iteratorstep',
- IteratorValue: 'https://262.ecma-international.org/8.0/#sec-iteratorvalue',
- LeaveCriticalSection: 'https://262.ecma-international.org/8.0/#sec-leavecriticalsection',
- LocalTime: 'https://262.ecma-international.org/8.0/#sec-localtime',
- LoopContinues: 'https://262.ecma-international.org/8.0/#sec-loopcontinues',
- MakeArgGetter: 'https://262.ecma-international.org/8.0/#sec-makearggetter',
- MakeArgSetter: 'https://262.ecma-international.org/8.0/#sec-makeargsetter',
- MakeClassConstructor: 'https://262.ecma-international.org/8.0/#sec-makeclassconstructor',
- MakeConstructor: 'https://262.ecma-international.org/8.0/#sec-makeconstructor',
- MakeDate: 'https://262.ecma-international.org/8.0/#sec-makedate',
- MakeDay: 'https://262.ecma-international.org/8.0/#sec-makeday',
- MakeMethod: 'https://262.ecma-international.org/8.0/#sec-makemethod',
- MakeSuperPropertyReference: 'https://262.ecma-international.org/8.0/#sec-makesuperpropertyreference',
- MakeTime: 'https://262.ecma-international.org/8.0/#sec-maketime',
- max: 'https://262.ecma-international.org/8.0/#eqn-max',
- 'memory-order': 'https://262.ecma-international.org/8.0/#sec-memory-order',
- min: 'https://262.ecma-international.org/8.0/#eqn-min',
- MinFromTime: 'https://262.ecma-international.org/8.0/#eqn-MinFromTime',
- ModuleNamespaceCreate: 'https://262.ecma-international.org/8.0/#sec-modulenamespacecreate',
- modulo: 'https://262.ecma-international.org/8.0/#eqn-modulo',
- MonthFromTime: 'https://262.ecma-international.org/8.0/#eqn-MonthFromTime',
- msFromTime: 'https://262.ecma-international.org/8.0/#eqn-msFromTime',
- NewDeclarativeEnvironment: 'https://262.ecma-international.org/8.0/#sec-newdeclarativeenvironment',
- NewFunctionEnvironment: 'https://262.ecma-international.org/8.0/#sec-newfunctionenvironment',
- NewGlobalEnvironment: 'https://262.ecma-international.org/8.0/#sec-newglobalenvironment',
- NewModuleEnvironment: 'https://262.ecma-international.org/8.0/#sec-newmoduleenvironment',
- NewObjectEnvironment: 'https://262.ecma-international.org/8.0/#sec-newobjectenvironment',
- NewPromiseCapability: 'https://262.ecma-international.org/8.0/#sec-newpromisecapability',
- NormalCompletion: 'https://262.ecma-international.org/8.0/#sec-normalcompletion',
- NumberToRawBytes: 'https://262.ecma-international.org/8.0/#sec-numbertorawbytes',
- ObjectCreate: 'https://262.ecma-international.org/8.0/#sec-objectcreate',
- ObjectDefineProperties: 'https://262.ecma-international.org/8.0/#sec-objectdefineproperties',
- OrdinaryCallBindThis: 'https://262.ecma-international.org/8.0/#sec-ordinarycallbindthis',
- OrdinaryCallEvaluateBody: 'https://262.ecma-international.org/8.0/#sec-ordinarycallevaluatebody',
- OrdinaryCreateFromConstructor: 'https://262.ecma-international.org/8.0/#sec-ordinarycreatefromconstructor',
- OrdinaryDefineOwnProperty: 'https://262.ecma-international.org/8.0/#sec-ordinarydefineownproperty',
- OrdinaryDelete: 'https://262.ecma-international.org/8.0/#sec-ordinarydelete',
- OrdinaryGet: 'https://262.ecma-international.org/8.0/#sec-ordinaryget',
- OrdinaryGetOwnProperty: 'https://262.ecma-international.org/8.0/#sec-ordinarygetownproperty',
- OrdinaryGetPrototypeOf: 'https://262.ecma-international.org/8.0/#sec-ordinarygetprototypeof',
- OrdinaryHasInstance: 'https://262.ecma-international.org/8.0/#sec-ordinaryhasinstance',
- OrdinaryHasProperty: 'https://262.ecma-international.org/8.0/#sec-ordinaryhasproperty',
- OrdinaryIsExtensible: 'https://262.ecma-international.org/8.0/#sec-ordinaryisextensible',
- OrdinaryOwnPropertyKeys: 'https://262.ecma-international.org/8.0/#sec-ordinaryownpropertykeys',
- OrdinaryPreventExtensions: 'https://262.ecma-international.org/8.0/#sec-ordinarypreventextensions',
- OrdinarySet: 'https://262.ecma-international.org/8.0/#sec-ordinaryset',
- OrdinarySetPrototypeOf: 'https://262.ecma-international.org/8.0/#sec-ordinarysetprototypeof',
- OrdinaryToPrimitive: 'https://262.ecma-international.org/8.0/#sec-ordinarytoprimitive',
- ParseModule: 'https://262.ecma-international.org/8.0/#sec-parsemodule',
- ParseScript: 'https://262.ecma-international.org/8.0/#sec-parse-script',
- PerformEval: 'https://262.ecma-international.org/8.0/#sec-performeval',
- PerformPromiseAll: 'https://262.ecma-international.org/8.0/#sec-performpromiseall',
- PerformPromiseRace: 'https://262.ecma-international.org/8.0/#sec-performpromiserace',
- PerformPromiseThen: 'https://262.ecma-international.org/8.0/#sec-performpromisethen',
- PrepareForOrdinaryCall: 'https://262.ecma-international.org/8.0/#sec-prepareforordinarycall',
- PrepareForTailCall: 'https://262.ecma-international.org/8.0/#sec-preparefortailcall',
- PromiseReactionJob: 'https://262.ecma-international.org/8.0/#sec-promisereactionjob',
- PromiseResolveThenableJob: 'https://262.ecma-international.org/8.0/#sec-promiseresolvethenablejob',
- ProxyCreate: 'https://262.ecma-international.org/8.0/#sec-proxycreate',
- PutValue: 'https://262.ecma-international.org/8.0/#sec-putvalue',
- QuoteJSONString: 'https://262.ecma-international.org/8.0/#sec-quotejsonstring',
- RawBytesToNumber: 'https://262.ecma-international.org/8.0/#sec-rawbytestonumber',
- 'reads-bytes-from': 'https://262.ecma-international.org/8.0/#sec-reads-bytes-from',
- 'reads-from': 'https://262.ecma-international.org/8.0/#sec-reads-from',
- RegExpAlloc: 'https://262.ecma-international.org/8.0/#sec-regexpalloc',
- RegExpBuiltinExec: 'https://262.ecma-international.org/8.0/#sec-regexpbuiltinexec',
- RegExpCreate: 'https://262.ecma-international.org/8.0/#sec-regexpcreate',
- RegExpExec: 'https://262.ecma-international.org/8.0/#sec-regexpexec',
- RegExpInitialize: 'https://262.ecma-international.org/8.0/#sec-regexpinitialize',
- RejectPromise: 'https://262.ecma-international.org/8.0/#sec-rejectpromise',
- RemoveWaiter: 'https://262.ecma-international.org/8.0/#sec-removewaiter',
- RemoveWaiters: 'https://262.ecma-international.org/8.0/#sec-removewaiters',
- RepeatMatcher: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-repeatmatcher-abstract-operation',
- RequireObjectCoercible: 'https://262.ecma-international.org/8.0/#sec-requireobjectcoercible',
- ResolveBinding: 'https://262.ecma-international.org/8.0/#sec-resolvebinding',
- ResolveThisBinding: 'https://262.ecma-international.org/8.0/#sec-resolvethisbinding',
- ReturnIfAbrupt: 'https://262.ecma-international.org/8.0/#sec-returnifabrupt',
- RunJobs: 'https://262.ecma-international.org/8.0/#sec-runjobs',
- SameValue: 'https://262.ecma-international.org/8.0/#sec-samevalue',
- SameValueNonNumber: 'https://262.ecma-international.org/8.0/#sec-samevaluenonnumber',
- SameValueZero: 'https://262.ecma-international.org/8.0/#sec-samevaluezero',
- ScriptEvaluation: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-scriptevaluation',
- ScriptEvaluationJob: 'https://262.ecma-international.org/8.0/#sec-scriptevaluationjob',
- SecFromTime: 'https://262.ecma-international.org/8.0/#eqn-SecFromTime',
- SerializeJSONArray: 'https://262.ecma-international.org/8.0/#sec-serializejsonarray',
- SerializeJSONObject: 'https://262.ecma-international.org/8.0/#sec-serializejsonobject',
- SerializeJSONProperty: 'https://262.ecma-international.org/8.0/#sec-serializejsonproperty',
- Set: 'https://262.ecma-international.org/8.0/#sec-set-o-p-v-throw',
- SetDefaultGlobalBindings: 'https://262.ecma-international.org/8.0/#sec-setdefaultglobalbindings',
- SetFunctionName: 'https://262.ecma-international.org/8.0/#sec-setfunctionname',
- SetImmutablePrototype: 'https://262.ecma-international.org/8.0/#sec-set-immutable-prototype',
- SetIntegrityLevel: 'https://262.ecma-international.org/8.0/#sec-setintegritylevel',
- SetRealmGlobalObject: 'https://262.ecma-international.org/8.0/#sec-setrealmglobalobject',
- SetValueInBuffer: 'https://262.ecma-international.org/8.0/#sec-setvalueinbuffer',
- SetViewValue: 'https://262.ecma-international.org/8.0/#sec-setviewvalue',
- SharedDataBlockEventSet: 'https://262.ecma-international.org/8.0/#sec-sharedatablockeventset',
- SortCompare: 'https://262.ecma-international.org/8.0/#sec-sortcompare',
- SpeciesConstructor: 'https://262.ecma-international.org/8.0/#sec-speciesconstructor',
- SplitMatch: 'https://262.ecma-international.org/8.0/#sec-splitmatch',
- 'Strict Equality Comparison': 'https://262.ecma-international.org/8.0/#sec-strict-equality-comparison',
- StringCreate: 'https://262.ecma-international.org/8.0/#sec-stringcreate',
- StringGetOwnProperty: 'https://262.ecma-international.org/8.0/#sec-stringgetownproperty',
- Suspend: 'https://262.ecma-international.org/8.0/#sec-suspend',
- SymbolDescriptiveString: 'https://262.ecma-international.org/8.0/#sec-symboldescriptivestring',
- 'synchronizes-with': 'https://262.ecma-international.org/8.0/#sec-synchronizes-with',
- TestIntegrityLevel: 'https://262.ecma-international.org/8.0/#sec-testintegritylevel',
- thisBooleanValue: 'https://262.ecma-international.org/8.0/#sec-thisbooleanvalue',
- thisNumberValue: 'https://262.ecma-international.org/8.0/#sec-thisnumbervalue',
- thisStringValue: 'https://262.ecma-international.org/8.0/#sec-thisstringvalue',
- thisTimeValue: 'https://262.ecma-international.org/8.0/#sec-thistimevalue',
- TimeClip: 'https://262.ecma-international.org/8.0/#sec-timeclip',
- TimeFromYear: 'https://262.ecma-international.org/8.0/#eqn-TimeFromYear',
- TimeWithinDay: 'https://262.ecma-international.org/8.0/#eqn-TimeWithinDay',
- ToBoolean: 'https://262.ecma-international.org/8.0/#sec-toboolean',
- ToDateString: 'https://262.ecma-international.org/8.0/#sec-todatestring',
- ToIndex: 'https://262.ecma-international.org/8.0/#sec-toindex',
- ToInt16: 'https://262.ecma-international.org/8.0/#sec-toint16',
- ToInt32: 'https://262.ecma-international.org/8.0/#sec-toint32',
- ToInt8: 'https://262.ecma-international.org/8.0/#sec-toint8',
- ToInteger: 'https://262.ecma-international.org/8.0/#sec-tointeger',
- ToLength: 'https://262.ecma-international.org/8.0/#sec-tolength',
- ToNumber: 'https://262.ecma-international.org/8.0/#sec-tonumber',
- ToObject: 'https://262.ecma-international.org/8.0/#sec-toobject',
- TopLevelModuleEvaluationJob: 'https://262.ecma-international.org/8.0/#sec-toplevelmoduleevaluationjob',
- ToPrimitive: 'https://262.ecma-international.org/8.0/#sec-toprimitive',
- ToPropertyDescriptor: 'https://262.ecma-international.org/8.0/#sec-topropertydescriptor',
- ToPropertyKey: 'https://262.ecma-international.org/8.0/#sec-topropertykey',
- ToString: 'https://262.ecma-international.org/8.0/#sec-tostring',
- 'ToString Applied to the Number Type': 'https://262.ecma-international.org/8.0/#sec-tostring-applied-to-the-number-type',
- ToUint16: 'https://262.ecma-international.org/8.0/#sec-touint16',
- ToUint32: 'https://262.ecma-international.org/8.0/#sec-touint32',
- ToUint8: 'https://262.ecma-international.org/8.0/#sec-touint8',
- ToUint8Clamp: 'https://262.ecma-international.org/8.0/#sec-touint8clamp',
- TriggerPromiseReactions: 'https://262.ecma-international.org/8.0/#sec-triggerpromisereactions',
- Type: 'https://262.ecma-international.org/8.0/#sec-ecmascript-data-types-and-values',
- TypedArrayCreate: 'https://262.ecma-international.org/8.0/#typedarray-create',
- TypedArraySpeciesCreate: 'https://262.ecma-international.org/8.0/#typedarray-species-create',
- UpdateEmpty: 'https://262.ecma-international.org/8.0/#sec-updateempty',
- UTC: 'https://262.ecma-international.org/8.0/#sec-utc-t',
- UTF16Decode: 'https://262.ecma-international.org/8.0/#sec-utf16decode',
- UTF16Encoding: 'https://262.ecma-international.org/8.0/#sec-utf16encoding',
- ValidateAndApplyPropertyDescriptor: 'https://262.ecma-international.org/8.0/#sec-validateandapplypropertydescriptor',
- ValidateAtomicAccess: 'https://262.ecma-international.org/8.0/#sec-validateatomicaccess',
- ValidateSharedIntegerTypedArray: 'https://262.ecma-international.org/8.0/#sec-validatesharedintegertypedarray',
- ValidateTypedArray: 'https://262.ecma-international.org/8.0/#sec-validatetypedarray',
- ValueOfReadEvent: 'https://262.ecma-international.org/8.0/#sec-valueofreadevent',
- WakeWaiter: 'https://262.ecma-international.org/8.0/#sec-wakewaiter',
- WeekDay: 'https://262.ecma-international.org/8.0/#sec-week-day',
- WordCharacters: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-wordcharacters-abstract-operation',
- YearFromTime: 'https://262.ecma-international.org/8.0/#eqn-YearFromTime'
+ abs: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-abs'
+ },
+ 'Abstract Equality Comparison': {
+ url: 'https://262.ecma-international.org/8.0/#sec-abstract-equality-comparison'
+ },
+ 'Abstract Relational Comparison': {
+ url: 'https://262.ecma-international.org/8.0/#sec-abstract-relational-comparison'
+ },
+ AddRestrictedFunctionProperties: {
+ url: 'https://262.ecma-international.org/8.0/#sec-addrestrictedfunctionproperties'
+ },
+ AddWaiter: {
+ url: 'https://262.ecma-international.org/8.0/#sec-addwaiter'
+ },
+ AdvanceStringIndex: {
+ url: 'https://262.ecma-international.org/8.0/#sec-advancestringindex'
+ },
+ 'agent-order': {
+ url: 'https://262.ecma-international.org/8.0/#sec-agent-order'
+ },
+ AgentCanSuspend: {
+ url: 'https://262.ecma-international.org/8.0/#sec-agentcansuspend'
+ },
+ AgentSignifier: {
+ url: 'https://262.ecma-international.org/8.0/#sec-agentsignifier'
+ },
+ AllocateArrayBuffer: {
+ url: 'https://262.ecma-international.org/8.0/#sec-allocatearraybuffer'
+ },
+ AllocateSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/8.0/#sec-allocatesharedarraybuffer'
+ },
+ AllocateTypedArray: {
+ url: 'https://262.ecma-international.org/8.0/#sec-allocatetypedarray'
+ },
+ AllocateTypedArrayBuffer: {
+ url: 'https://262.ecma-international.org/8.0/#sec-allocatetypedarraybuffer'
+ },
+ ArrayCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-arraycreate'
+ },
+ ArraySetLength: {
+ url: 'https://262.ecma-international.org/8.0/#sec-arraysetlength'
+ },
+ ArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-arrayspeciescreate'
+ },
+ AsyncFunctionAwait: {
+ url: 'https://262.ecma-international.org/8.0/#sec-async-functions-abstract-operations-async-function-await'
+ },
+ AsyncFunctionCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-async-functions-abstract-operations-async-function-create'
+ },
+ AsyncFunctionStart: {
+ url: 'https://262.ecma-international.org/8.0/#sec-async-functions-abstract-operations-async-function-start'
+ },
+ AtomicLoad: {
+ url: 'https://262.ecma-international.org/8.0/#sec-atomicload'
+ },
+ AtomicReadModifyWrite: {
+ url: 'https://262.ecma-international.org/8.0/#sec-atomicreadmodifywrite'
+ },
+ BlockDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/8.0/#sec-blockdeclarationinstantiation'
+ },
+ BoundFunctionCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-boundfunctioncreate'
+ },
+ Call: {
+ url: 'https://262.ecma-international.org/8.0/#sec-call'
+ },
+ Canonicalize: {
+ url: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-canonicalize-ch'
+ },
+ CanonicalNumericIndexString: {
+ url: 'https://262.ecma-international.org/8.0/#sec-canonicalnumericindexstring'
+ },
+ CharacterRange: {
+ url: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-characterrange-abstract-operation'
+ },
+ CharacterRangeOrUnion: {
+ url: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation'
+ },
+ CharacterSetMatcher: {
+ url: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation'
+ },
+ CloneArrayBuffer: {
+ url: 'https://262.ecma-international.org/8.0/#sec-clonearraybuffer'
+ },
+ CompletePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-completepropertydescriptor'
+ },
+ Completion: {
+ url: 'https://262.ecma-international.org/8.0/#sec-completion-record-specification-type'
+ },
+ CompletionRecord: {
+ url: 'https://262.ecma-international.org/8.0/#sec-completion-record-specification-type'
+ },
+ ComposeWriteEventBytes: {
+ url: 'https://262.ecma-international.org/8.0/#sec-composewriteeventbytes'
+ },
+ Construct: {
+ url: 'https://262.ecma-international.org/8.0/#sec-construct'
+ },
+ CopyDataBlockBytes: {
+ url: 'https://262.ecma-international.org/8.0/#sec-copydatablockbytes'
+ },
+ CreateArrayFromList: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createarrayfromlist'
+ },
+ CreateArrayIterator: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createarrayiterator'
+ },
+ CreateBuiltinFunction: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createbuiltinfunction'
+ },
+ CreateByteDataBlock: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createbytedatablock'
+ },
+ CreateDataProperty: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createdataproperty'
+ },
+ CreateDataPropertyOrThrow: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createdatapropertyorthrow'
+ },
+ CreateDynamicFunction: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createdynamicfunction'
+ },
+ CreateHTML: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createhtml'
+ },
+ CreateIntrinsics: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createintrinsics'
+ },
+ CreateIterResultObject: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createiterresultobject'
+ },
+ CreateListFromArrayLike: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createlistfromarraylike'
+ },
+ CreateListIterator: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createlistiterator'
+ },
+ CreateMapIterator: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createmapiterator'
+ },
+ CreateMappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createmappedargumentsobject'
+ },
+ CreateMethodProperty: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createmethodproperty'
+ },
+ CreatePerIterationEnvironment: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createperiterationenvironment'
+ },
+ CreateRealm: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createrealm'
+ },
+ CreateResolvingFunctions: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createresolvingfunctions'
+ },
+ CreateSetIterator: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createsetiterator'
+ },
+ CreateSharedByteDataBlock: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createsharedbytedatablock'
+ },
+ CreateStringIterator: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createstringiterator'
+ },
+ CreateUnmappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/8.0/#sec-createunmappedargumentsobject'
+ },
+ DateFromTime: {
+ url: 'https://262.ecma-international.org/8.0/#sec-date-number'
+ },
+ Day: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-Day'
+ },
+ DayFromYear: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-DaysFromYear'
+ },
+ DaylightSavingTA: {
+ url: 'https://262.ecma-international.org/8.0/#sec-daylight-saving-time-adjustment'
+ },
+ DaysInYear: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-DaysInYear'
+ },
+ DayWithinYear: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-DayWithinYear'
+ },
+ Decode: {
+ url: 'https://262.ecma-international.org/8.0/#sec-decode'
+ },
+ DefinePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/8.0/#sec-definepropertyorthrow'
+ },
+ DeletePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/8.0/#sec-deletepropertyorthrow'
+ },
+ DetachArrayBuffer: {
+ url: 'https://262.ecma-international.org/8.0/#sec-detacharraybuffer'
+ },
+ Encode: {
+ url: 'https://262.ecma-international.org/8.0/#sec-encode'
+ },
+ EnqueueJob: {
+ url: 'https://262.ecma-international.org/8.0/#sec-enqueuejob'
+ },
+ EnterCriticalSection: {
+ url: 'https://262.ecma-international.org/8.0/#sec-entercriticalsection'
+ },
+ EnumerableOwnProperties: {
+ url: 'https://262.ecma-international.org/8.0/#sec-enumerableownproperties'
+ },
+ EnumerateObjectProperties: {
+ url: 'https://262.ecma-international.org/8.0/#sec-enumerate-object-properties'
+ },
+ EscapeRegExpPattern: {
+ url: 'https://262.ecma-international.org/8.0/#sec-escaperegexppattern'
+ },
+ EvalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/8.0/#sec-evaldeclarationinstantiation'
+ },
+ EvaluateCall: {
+ url: 'https://262.ecma-international.org/8.0/#sec-evaluatecall'
+ },
+ EvaluateDirectCall: {
+ url: 'https://262.ecma-international.org/8.0/#sec-evaluatedirectcall'
+ },
+ EvaluateNew: {
+ url: 'https://262.ecma-international.org/8.0/#sec-evaluatenew'
+ },
+ EventSet: {
+ url: 'https://262.ecma-international.org/8.0/#sec-event-set'
+ },
+ floor: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-floor'
+ },
+ ForBodyEvaluation: {
+ url: 'https://262.ecma-international.org/8.0/#sec-forbodyevaluation'
+ },
+ 'ForIn/OfBodyEvaluation': {
+ url: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset'
+ },
+ 'ForIn/OfHeadEvaluation': {
+ url: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind'
+ },
+ FromPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-frompropertydescriptor'
+ },
+ FulfillPromise: {
+ url: 'https://262.ecma-international.org/8.0/#sec-fulfillpromise'
+ },
+ FunctionAllocate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-functionallocate'
+ },
+ FunctionCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-functioncreate'
+ },
+ FunctionDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/8.0/#sec-functiondeclarationinstantiation'
+ },
+ FunctionInitialize: {
+ url: 'https://262.ecma-international.org/8.0/#sec-functioninitialize'
+ },
+ GeneratorFunctionCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-generatorfunctioncreate'
+ },
+ GeneratorResume: {
+ url: 'https://262.ecma-international.org/8.0/#sec-generatorresume'
+ },
+ GeneratorResumeAbrupt: {
+ url: 'https://262.ecma-international.org/8.0/#sec-generatorresumeabrupt'
+ },
+ GeneratorStart: {
+ url: 'https://262.ecma-international.org/8.0/#sec-generatorstart'
+ },
+ GeneratorValidate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-generatorvalidate'
+ },
+ GeneratorYield: {
+ url: 'https://262.ecma-international.org/8.0/#sec-generatoryield'
+ },
+ Get: {
+ url: 'https://262.ecma-international.org/8.0/#sec-get-o-p'
+ },
+ GetActiveScriptOrModule: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getactivescriptormodule'
+ },
+ GetBase: {
+ url: 'https://262.ecma-international.org/8.0/#ao-getbase'
+ },
+ GetFunctionRealm: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getfunctionrealm'
+ },
+ GetGlobalObject: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getglobalobject'
+ },
+ GetIdentifierReference: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getidentifierreference'
+ },
+ GetIterator: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getiterator'
+ },
+ GetMethod: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getmethod'
+ },
+ GetModifySetValueInBuffer: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getmodifysetvalueinbuffer'
+ },
+ GetModuleNamespace: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getmodulenamespace'
+ },
+ GetNewTarget: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getnewtarget'
+ },
+ GetOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getownpropertykeys'
+ },
+ GetPrototypeFromConstructor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getprototypefromconstructor'
+ },
+ GetReferencedName: {
+ url: 'https://262.ecma-international.org/8.0/#ao-getreferencedname'
+ },
+ GetSubstitution: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getsubstitution'
+ },
+ GetSuperConstructor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getsuperconstructor'
+ },
+ GetTemplateObject: {
+ url: 'https://262.ecma-international.org/8.0/#sec-gettemplateobject'
+ },
+ GetThisEnvironment: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getthisenvironment'
+ },
+ GetThisValue: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getthisvalue'
+ },
+ GetV: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getv'
+ },
+ GetValue: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getvalue'
+ },
+ GetValueFromBuffer: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getvaluefrombuffer'
+ },
+ GetViewValue: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getviewvalue'
+ },
+ GetWaiterList: {
+ url: 'https://262.ecma-international.org/8.0/#sec-getwaiterlist'
+ },
+ GlobalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/8.0/#sec-globaldeclarationinstantiation'
+ },
+ 'happens-before': {
+ url: 'https://262.ecma-international.org/8.0/#sec-happens-before'
+ },
+ HasOwnProperty: {
+ url: 'https://262.ecma-international.org/8.0/#sec-hasownproperty'
+ },
+ HasPrimitiveBase: {
+ url: 'https://262.ecma-international.org/8.0/#ao-hasprimitivebase'
+ },
+ HasProperty: {
+ url: 'https://262.ecma-international.org/8.0/#sec-hasproperty'
+ },
+ 'host-synchronizes-with': {
+ url: 'https://262.ecma-international.org/8.0/#sec-host-synchronizes-with'
+ },
+ HostEventSet: {
+ url: 'https://262.ecma-international.org/8.0/#sec-hosteventset'
+ },
+ HourFromTime: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-HourFromTime'
+ },
+ IfAbruptRejectPromise: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ifabruptrejectpromise'
+ },
+ ImportedLocalNames: {
+ url: 'https://262.ecma-international.org/8.0/#sec-importedlocalnames'
+ },
+ InitializeBoundName: {
+ url: 'https://262.ecma-international.org/8.0/#sec-initializeboundname'
+ },
+ InitializeHostDefinedRealm: {
+ url: 'https://262.ecma-international.org/8.0/#sec-initializehostdefinedrealm'
+ },
+ InitializeReferencedBinding: {
+ url: 'https://262.ecma-international.org/8.0/#sec-initializereferencedbinding'
+ },
+ InLeapYear: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-InLeapYear'
+ },
+ InstanceofOperator: {
+ url: 'https://262.ecma-international.org/8.0/#sec-instanceofoperator'
+ },
+ IntegerIndexedElementGet: {
+ url: 'https://262.ecma-international.org/8.0/#sec-integerindexedelementget'
+ },
+ IntegerIndexedElementSet: {
+ url: 'https://262.ecma-international.org/8.0/#sec-integerindexedelementset'
+ },
+ IntegerIndexedObjectCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-integerindexedobjectcreate'
+ },
+ InternalizeJSONProperty: {
+ url: 'https://262.ecma-international.org/8.0/#sec-internalizejsonproperty'
+ },
+ Invoke: {
+ url: 'https://262.ecma-international.org/8.0/#sec-invoke'
+ },
+ IsAccessorDescriptor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isaccessordescriptor'
+ },
+ IsAnonymousFunctionDefinition: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isanonymousfunctiondefinition'
+ },
+ IsArray: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isarray'
+ },
+ IsCallable: {
+ url: 'https://262.ecma-international.org/8.0/#sec-iscallable'
+ },
+ IsCompatiblePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-iscompatiblepropertydescriptor'
+ },
+ IsConcatSpreadable: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isconcatspreadable'
+ },
+ IsConstructor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isconstructor'
+ },
+ IsDataDescriptor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isdatadescriptor'
+ },
+ IsDetachedBuffer: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isdetachedbuffer'
+ },
+ IsExtensible: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isextensible-o'
+ },
+ IsGenericDescriptor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isgenericdescriptor'
+ },
+ IsInTailPosition: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isintailposition'
+ },
+ IsInteger: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isinteger'
+ },
+ IsLabelledFunction: {
+ url: 'https://262.ecma-international.org/8.0/#sec-islabelledfunction'
+ },
+ IsPromise: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ispromise'
+ },
+ IsPropertyKey: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ispropertykey'
+ },
+ IsPropertyReference: {
+ url: 'https://262.ecma-international.org/8.0/#ao-ispropertyreference'
+ },
+ IsRegExp: {
+ url: 'https://262.ecma-international.org/8.0/#sec-isregexp'
+ },
+ IsSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/8.0/#sec-issharedarraybuffer'
+ },
+ IsStrictReference: {
+ url: 'https://262.ecma-international.org/8.0/#ao-isstrictreference'
+ },
+ IsSuperReference: {
+ url: 'https://262.ecma-international.org/8.0/#ao-issuperreference'
+ },
+ IsUnresolvableReference: {
+ url: 'https://262.ecma-international.org/8.0/#ao-isunresolvablereference'
+ },
+ IsWordChar: {
+ url: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-iswordchar-abstract-operation'
+ },
+ IterableToList: {
+ url: 'https://262.ecma-international.org/8.0/#sec-iterabletolist'
+ },
+ IteratorClose: {
+ url: 'https://262.ecma-international.org/8.0/#sec-iteratorclose'
+ },
+ IteratorComplete: {
+ url: 'https://262.ecma-international.org/8.0/#sec-iteratorcomplete'
+ },
+ IteratorNext: {
+ url: 'https://262.ecma-international.org/8.0/#sec-iteratornext'
+ },
+ IteratorStep: {
+ url: 'https://262.ecma-international.org/8.0/#sec-iteratorstep'
+ },
+ IteratorValue: {
+ url: 'https://262.ecma-international.org/8.0/#sec-iteratorvalue'
+ },
+ LeaveCriticalSection: {
+ url: 'https://262.ecma-international.org/8.0/#sec-leavecriticalsection'
+ },
+ LocalTime: {
+ url: 'https://262.ecma-international.org/8.0/#sec-localtime'
+ },
+ LoopContinues: {
+ url: 'https://262.ecma-international.org/8.0/#sec-loopcontinues'
+ },
+ MakeArgGetter: {
+ url: 'https://262.ecma-international.org/8.0/#sec-makearggetter'
+ },
+ MakeArgSetter: {
+ url: 'https://262.ecma-international.org/8.0/#sec-makeargsetter'
+ },
+ MakeClassConstructor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-makeclassconstructor'
+ },
+ MakeConstructor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-makeconstructor'
+ },
+ MakeDate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-makedate'
+ },
+ MakeDay: {
+ url: 'https://262.ecma-international.org/8.0/#sec-makeday'
+ },
+ MakeMethod: {
+ url: 'https://262.ecma-international.org/8.0/#sec-makemethod'
+ },
+ MakeSuperPropertyReference: {
+ url: 'https://262.ecma-international.org/8.0/#sec-makesuperpropertyreference'
+ },
+ MakeTime: {
+ url: 'https://262.ecma-international.org/8.0/#sec-maketime'
+ },
+ max: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-max'
+ },
+ 'memory-order': {
+ url: 'https://262.ecma-international.org/8.0/#sec-memory-order'
+ },
+ min: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-min'
+ },
+ MinFromTime: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-MinFromTime'
+ },
+ ModuleNamespaceCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-modulenamespacecreate'
+ },
+ modulo: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-modulo'
+ },
+ MonthFromTime: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-MonthFromTime'
+ },
+ msFromTime: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-msFromTime'
+ },
+ NewDeclarativeEnvironment: {
+ url: 'https://262.ecma-international.org/8.0/#sec-newdeclarativeenvironment'
+ },
+ NewFunctionEnvironment: {
+ url: 'https://262.ecma-international.org/8.0/#sec-newfunctionenvironment'
+ },
+ NewGlobalEnvironment: {
+ url: 'https://262.ecma-international.org/8.0/#sec-newglobalenvironment'
+ },
+ NewModuleEnvironment: {
+ url: 'https://262.ecma-international.org/8.0/#sec-newmoduleenvironment'
+ },
+ NewObjectEnvironment: {
+ url: 'https://262.ecma-international.org/8.0/#sec-newobjectenvironment'
+ },
+ NewPromiseCapability: {
+ url: 'https://262.ecma-international.org/8.0/#sec-newpromisecapability'
+ },
+ NormalCompletion: {
+ url: 'https://262.ecma-international.org/8.0/#sec-normalcompletion'
+ },
+ NumberToRawBytes: {
+ url: 'https://262.ecma-international.org/8.0/#sec-numbertorawbytes'
+ },
+ ObjectCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-objectcreate'
+ },
+ ObjectDefineProperties: {
+ url: 'https://262.ecma-international.org/8.0/#sec-objectdefineproperties'
+ },
+ OrdinaryCallBindThis: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinarycallbindthis'
+ },
+ OrdinaryCallEvaluateBody: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinarycallevaluatebody'
+ },
+ OrdinaryCreateFromConstructor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinarycreatefromconstructor'
+ },
+ OrdinaryDefineOwnProperty: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinarydefineownproperty'
+ },
+ OrdinaryDelete: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinarydelete'
+ },
+ OrdinaryGet: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinaryget'
+ },
+ OrdinaryGetOwnProperty: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinarygetownproperty'
+ },
+ OrdinaryGetPrototypeOf: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinarygetprototypeof'
+ },
+ OrdinaryHasInstance: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinaryhasinstance'
+ },
+ OrdinaryHasProperty: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinaryhasproperty'
+ },
+ OrdinaryIsExtensible: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinaryisextensible'
+ },
+ OrdinaryOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinaryownpropertykeys'
+ },
+ OrdinaryPreventExtensions: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinarypreventextensions'
+ },
+ OrdinarySet: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinaryset'
+ },
+ OrdinarySetPrototypeOf: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinarysetprototypeof'
+ },
+ OrdinaryToPrimitive: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ordinarytoprimitive'
+ },
+ ParseModule: {
+ url: 'https://262.ecma-international.org/8.0/#sec-parsemodule'
+ },
+ ParseScript: {
+ url: 'https://262.ecma-international.org/8.0/#sec-parse-script'
+ },
+ PerformEval: {
+ url: 'https://262.ecma-international.org/8.0/#sec-performeval'
+ },
+ PerformPromiseAll: {
+ url: 'https://262.ecma-international.org/8.0/#sec-performpromiseall'
+ },
+ PerformPromiseRace: {
+ url: 'https://262.ecma-international.org/8.0/#sec-performpromiserace'
+ },
+ PerformPromiseThen: {
+ url: 'https://262.ecma-international.org/8.0/#sec-performpromisethen'
+ },
+ PrepareForOrdinaryCall: {
+ url: 'https://262.ecma-international.org/8.0/#sec-prepareforordinarycall'
+ },
+ PrepareForTailCall: {
+ url: 'https://262.ecma-international.org/8.0/#sec-preparefortailcall'
+ },
+ PromiseReactionJob: {
+ url: 'https://262.ecma-international.org/8.0/#sec-promisereactionjob'
+ },
+ PromiseResolveThenableJob: {
+ url: 'https://262.ecma-international.org/8.0/#sec-promiseresolvethenablejob'
+ },
+ ProxyCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-proxycreate'
+ },
+ PutValue: {
+ url: 'https://262.ecma-international.org/8.0/#sec-putvalue'
+ },
+ QuoteJSONString: {
+ url: 'https://262.ecma-international.org/8.0/#sec-quotejsonstring'
+ },
+ RawBytesToNumber: {
+ url: 'https://262.ecma-international.org/8.0/#sec-rawbytestonumber'
+ },
+ 'reads-bytes-from': {
+ url: 'https://262.ecma-international.org/8.0/#sec-reads-bytes-from'
+ },
+ 'reads-from': {
+ url: 'https://262.ecma-international.org/8.0/#sec-reads-from'
+ },
+ RegExpAlloc: {
+ url: 'https://262.ecma-international.org/8.0/#sec-regexpalloc'
+ },
+ RegExpBuiltinExec: {
+ url: 'https://262.ecma-international.org/8.0/#sec-regexpbuiltinexec'
+ },
+ RegExpCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-regexpcreate'
+ },
+ RegExpExec: {
+ url: 'https://262.ecma-international.org/8.0/#sec-regexpexec'
+ },
+ RegExpInitialize: {
+ url: 'https://262.ecma-international.org/8.0/#sec-regexpinitialize'
+ },
+ RejectPromise: {
+ url: 'https://262.ecma-international.org/8.0/#sec-rejectpromise'
+ },
+ RemoveWaiter: {
+ url: 'https://262.ecma-international.org/8.0/#sec-removewaiter'
+ },
+ RemoveWaiters: {
+ url: 'https://262.ecma-international.org/8.0/#sec-removewaiters'
+ },
+ RepeatMatcher: {
+ url: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-repeatmatcher-abstract-operation'
+ },
+ RequireObjectCoercible: {
+ url: 'https://262.ecma-international.org/8.0/#sec-requireobjectcoercible'
+ },
+ ResolveBinding: {
+ url: 'https://262.ecma-international.org/8.0/#sec-resolvebinding'
+ },
+ ResolveThisBinding: {
+ url: 'https://262.ecma-international.org/8.0/#sec-resolvethisbinding'
+ },
+ ReturnIfAbrupt: {
+ url: 'https://262.ecma-international.org/8.0/#sec-returnifabrupt'
+ },
+ RunJobs: {
+ url: 'https://262.ecma-international.org/8.0/#sec-runjobs'
+ },
+ SameValue: {
+ url: 'https://262.ecma-international.org/8.0/#sec-samevalue'
+ },
+ SameValueNonNumber: {
+ url: 'https://262.ecma-international.org/8.0/#sec-samevaluenonnumber'
+ },
+ SameValueZero: {
+ url: 'https://262.ecma-international.org/8.0/#sec-samevaluezero'
+ },
+ ScriptEvaluation: {
+ url: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-scriptevaluation'
+ },
+ ScriptEvaluationJob: {
+ url: 'https://262.ecma-international.org/8.0/#sec-scriptevaluationjob'
+ },
+ SecFromTime: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-SecFromTime'
+ },
+ SerializeJSONArray: {
+ url: 'https://262.ecma-international.org/8.0/#sec-serializejsonarray'
+ },
+ SerializeJSONObject: {
+ url: 'https://262.ecma-international.org/8.0/#sec-serializejsonobject'
+ },
+ SerializeJSONProperty: {
+ url: 'https://262.ecma-international.org/8.0/#sec-serializejsonproperty'
+ },
+ Set: {
+ url: 'https://262.ecma-international.org/8.0/#sec-set-o-p-v-throw'
+ },
+ SetDefaultGlobalBindings: {
+ url: 'https://262.ecma-international.org/8.0/#sec-setdefaultglobalbindings'
+ },
+ SetFunctionName: {
+ url: 'https://262.ecma-international.org/8.0/#sec-setfunctionname'
+ },
+ SetImmutablePrototype: {
+ url: 'https://262.ecma-international.org/8.0/#sec-set-immutable-prototype'
+ },
+ SetIntegrityLevel: {
+ url: 'https://262.ecma-international.org/8.0/#sec-setintegritylevel'
+ },
+ SetRealmGlobalObject: {
+ url: 'https://262.ecma-international.org/8.0/#sec-setrealmglobalobject'
+ },
+ SetValueInBuffer: {
+ url: 'https://262.ecma-international.org/8.0/#sec-setvalueinbuffer'
+ },
+ SetViewValue: {
+ url: 'https://262.ecma-international.org/8.0/#sec-setviewvalue'
+ },
+ SharedDataBlockEventSet: {
+ url: 'https://262.ecma-international.org/8.0/#sec-sharedatablockeventset'
+ },
+ SortCompare: {
+ url: 'https://262.ecma-international.org/8.0/#sec-sortcompare'
+ },
+ SpeciesConstructor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-speciesconstructor'
+ },
+ SplitMatch: {
+ url: 'https://262.ecma-international.org/8.0/#sec-splitmatch'
+ },
+ 'Strict Equality Comparison': {
+ url: 'https://262.ecma-international.org/8.0/#sec-strict-equality-comparison'
+ },
+ StringCreate: {
+ url: 'https://262.ecma-international.org/8.0/#sec-stringcreate'
+ },
+ StringGetOwnProperty: {
+ url: 'https://262.ecma-international.org/8.0/#sec-stringgetownproperty'
+ },
+ Suspend: {
+ url: 'https://262.ecma-international.org/8.0/#sec-suspend'
+ },
+ SymbolDescriptiveString: {
+ url: 'https://262.ecma-international.org/8.0/#sec-symboldescriptivestring'
+ },
+ 'synchronizes-with': {
+ url: 'https://262.ecma-international.org/8.0/#sec-synchronizes-with'
+ },
+ TestIntegrityLevel: {
+ url: 'https://262.ecma-international.org/8.0/#sec-testintegritylevel'
+ },
+ thisBooleanValue: {
+ url: 'https://262.ecma-international.org/8.0/#sec-thisbooleanvalue'
+ },
+ thisNumberValue: {
+ url: 'https://262.ecma-international.org/8.0/#sec-thisnumbervalue'
+ },
+ thisStringValue: {
+ url: 'https://262.ecma-international.org/8.0/#sec-thisstringvalue'
+ },
+ thisTimeValue: {
+ url: 'https://262.ecma-international.org/8.0/#sec-thistimevalue'
+ },
+ TimeClip: {
+ url: 'https://262.ecma-international.org/8.0/#sec-timeclip'
+ },
+ TimeFromYear: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-TimeFromYear'
+ },
+ TimeWithinDay: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-TimeWithinDay'
+ },
+ ToBoolean: {
+ url: 'https://262.ecma-international.org/8.0/#sec-toboolean'
+ },
+ ToDateString: {
+ url: 'https://262.ecma-international.org/8.0/#sec-todatestring'
+ },
+ ToIndex: {
+ url: 'https://262.ecma-international.org/8.0/#sec-toindex'
+ },
+ ToInt16: {
+ url: 'https://262.ecma-international.org/8.0/#sec-toint16'
+ },
+ ToInt32: {
+ url: 'https://262.ecma-international.org/8.0/#sec-toint32'
+ },
+ ToInt8: {
+ url: 'https://262.ecma-international.org/8.0/#sec-toint8'
+ },
+ ToInteger: {
+ url: 'https://262.ecma-international.org/8.0/#sec-tointeger'
+ },
+ ToLength: {
+ url: 'https://262.ecma-international.org/8.0/#sec-tolength'
+ },
+ ToNumber: {
+ url: 'https://262.ecma-international.org/8.0/#sec-tonumber'
+ },
+ ToObject: {
+ url: 'https://262.ecma-international.org/8.0/#sec-toobject'
+ },
+ TopLevelModuleEvaluationJob: {
+ url: 'https://262.ecma-international.org/8.0/#sec-toplevelmoduleevaluationjob'
+ },
+ ToPrimitive: {
+ url: 'https://262.ecma-international.org/8.0/#sec-toprimitive'
+ },
+ ToPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-topropertydescriptor'
+ },
+ ToPropertyKey: {
+ url: 'https://262.ecma-international.org/8.0/#sec-topropertykey'
+ },
+ ToString: {
+ url: 'https://262.ecma-international.org/8.0/#sec-tostring'
+ },
+ 'ToString Applied to the Number Type': {
+ url: 'https://262.ecma-international.org/8.0/#sec-tostring-applied-to-the-number-type'
+ },
+ ToUint16: {
+ url: 'https://262.ecma-international.org/8.0/#sec-touint16'
+ },
+ ToUint32: {
+ url: 'https://262.ecma-international.org/8.0/#sec-touint32'
+ },
+ ToUint8: {
+ url: 'https://262.ecma-international.org/8.0/#sec-touint8'
+ },
+ ToUint8Clamp: {
+ url: 'https://262.ecma-international.org/8.0/#sec-touint8clamp'
+ },
+ TriggerPromiseReactions: {
+ url: 'https://262.ecma-international.org/8.0/#sec-triggerpromisereactions'
+ },
+ Type: {
+ url: 'https://262.ecma-international.org/8.0/#sec-ecmascript-data-types-and-values'
+ },
+ TypedArrayCreate: {
+ url: 'https://262.ecma-international.org/8.0/#typedarray-create'
+ },
+ TypedArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/8.0/#typedarray-species-create'
+ },
+ UpdateEmpty: {
+ url: 'https://262.ecma-international.org/8.0/#sec-updateempty'
+ },
+ UTC: {
+ url: 'https://262.ecma-international.org/8.0/#sec-utc-t'
+ },
+ UTF16Decode: {
+ url: 'https://262.ecma-international.org/8.0/#sec-utf16decode'
+ },
+ UTF16Encoding: {
+ url: 'https://262.ecma-international.org/8.0/#sec-utf16encoding'
+ },
+ ValidateAndApplyPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/8.0/#sec-validateandapplypropertydescriptor'
+ },
+ ValidateAtomicAccess: {
+ url: 'https://262.ecma-international.org/8.0/#sec-validateatomicaccess'
+ },
+ ValidateSharedIntegerTypedArray: {
+ url: 'https://262.ecma-international.org/8.0/#sec-validatesharedintegertypedarray'
+ },
+ ValidateTypedArray: {
+ url: 'https://262.ecma-international.org/8.0/#sec-validatetypedarray'
+ },
+ ValueOfReadEvent: {
+ url: 'https://262.ecma-international.org/8.0/#sec-valueofreadevent'
+ },
+ WakeWaiter: {
+ url: 'https://262.ecma-international.org/8.0/#sec-wakewaiter'
+ },
+ WeekDay: {
+ url: 'https://262.ecma-international.org/8.0/#sec-week-day'
+ },
+ WordCharacters: {
+ url: 'https://262.ecma-international.org/8.0/#sec-runtime-semantics-wordcharacters-abstract-operation'
+ },
+ YearFromTime: {
+ url: 'https://262.ecma-international.org/8.0/#eqn-YearFromTime'
+ }
};
diff --git a/node_modules/es-abstract/operations/2018.js b/node_modules/es-abstract/operations/2018.js
index 10d10f212..251a40920 100644
--- a/node_modules/es-abstract/operations/2018.js
+++ b/node_modules/es-abstract/operations/2018.js
@@ -1,350 +1,1033 @@
'use strict';
module.exports = {
- abs: 'https://262.ecma-international.org/9.0/#eqn-abs',
- 'Abstract Equality Comparison': 'https://262.ecma-international.org/9.0/#sec-abstract-equality-comparison',
- 'Abstract Relational Comparison': 'https://262.ecma-international.org/9.0/#sec-abstract-relational-comparison',
- AddRestrictedFunctionProperties: 'https://262.ecma-international.org/9.0/#sec-addrestrictedfunctionproperties',
- AddWaiter: 'https://262.ecma-international.org/9.0/#sec-addwaiter',
- AdvanceStringIndex: 'https://262.ecma-international.org/9.0/#sec-advancestringindex',
- 'agent-order': 'https://262.ecma-international.org/9.0/#sec-agent-order',
- AgentCanSuspend: 'https://262.ecma-international.org/9.0/#sec-agentcansuspend',
- AgentSignifier: 'https://262.ecma-international.org/9.0/#sec-agentsignifier',
- AllocateArrayBuffer: 'https://262.ecma-international.org/9.0/#sec-allocatearraybuffer',
- AllocateSharedArrayBuffer: 'https://262.ecma-international.org/9.0/#sec-allocatesharedarraybuffer',
- AllocateTypedArray: 'https://262.ecma-international.org/9.0/#sec-allocatetypedarray',
- AllocateTypedArrayBuffer: 'https://262.ecma-international.org/9.0/#sec-allocatetypedarraybuffer',
- ArrayCreate: 'https://262.ecma-international.org/9.0/#sec-arraycreate',
- ArraySetLength: 'https://262.ecma-international.org/9.0/#sec-arraysetlength',
- ArraySpeciesCreate: 'https://262.ecma-international.org/9.0/#sec-arrayspeciescreate',
- AsyncFunctionCreate: 'https://262.ecma-international.org/9.0/#sec-async-functions-abstract-operations-async-function-create',
- AsyncFunctionStart: 'https://262.ecma-international.org/9.0/#sec-async-functions-abstract-operations-async-function-start',
- AsyncGeneratorEnqueue: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorenqueue',
- AsyncGeneratorFunctionCreate: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorfunctioncreate',
- AsyncGeneratorReject: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorreject',
- AsyncGeneratorResolve: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorresolve',
- AsyncGeneratorResumeNext: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorresumenext',
- AsyncGeneratorStart: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorstart',
- AsyncGeneratorYield: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratoryield',
- AsyncIteratorClose: 'https://262.ecma-international.org/9.0/#sec-asynciteratorclose',
- AtomicLoad: 'https://262.ecma-international.org/9.0/#sec-atomicload',
- AtomicReadModifyWrite: 'https://262.ecma-international.org/9.0/#sec-atomicreadmodifywrite',
- Await: 'https://262.ecma-international.org/9.0/#await',
- BackreferenceMatcher: 'https://262.ecma-international.org/9.0/#sec-backreference-matcher',
- BlockDeclarationInstantiation: 'https://262.ecma-international.org/9.0/#sec-blockdeclarationinstantiation',
- BoundFunctionCreate: 'https://262.ecma-international.org/9.0/#sec-boundfunctioncreate',
- Call: 'https://262.ecma-international.org/9.0/#sec-call',
- Canonicalize: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-canonicalize-ch',
- CanonicalNumericIndexString: 'https://262.ecma-international.org/9.0/#sec-canonicalnumericindexstring',
- CaseClauseIsSelected: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-caseclauseisselected',
- CharacterRange: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-characterrange-abstract-operation',
- CharacterRangeOrUnion: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation',
- CharacterSetMatcher: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation',
- CloneArrayBuffer: 'https://262.ecma-international.org/9.0/#sec-clonearraybuffer',
- CompletePropertyDescriptor: 'https://262.ecma-international.org/9.0/#sec-completepropertydescriptor',
- Completion: 'https://262.ecma-international.org/9.0/#sec-completion-record-specification-type',
- ComposeWriteEventBytes: 'https://262.ecma-international.org/9.0/#sec-composewriteeventbytes',
- Construct: 'https://262.ecma-international.org/9.0/#sec-construct',
- CopyDataBlockBytes: 'https://262.ecma-international.org/9.0/#sec-copydatablockbytes',
- CopyDataProperties: 'https://262.ecma-international.org/9.0/#sec-copydataproperties',
- CreateArrayFromList: 'https://262.ecma-international.org/9.0/#sec-createarrayfromlist',
- CreateArrayIterator: 'https://262.ecma-international.org/9.0/#sec-createarrayiterator',
- CreateAsyncFromSyncIterator: 'https://262.ecma-international.org/9.0/#sec-createasyncfromsynciterator',
- CreateBuiltinFunction: 'https://262.ecma-international.org/9.0/#sec-createbuiltinfunction',
- CreateByteDataBlock: 'https://262.ecma-international.org/9.0/#sec-createbytedatablock',
- CreateDataProperty: 'https://262.ecma-international.org/9.0/#sec-createdataproperty',
- CreateDataPropertyOrThrow: 'https://262.ecma-international.org/9.0/#sec-createdatapropertyorthrow',
- CreateDynamicFunction: 'https://262.ecma-international.org/9.0/#sec-createdynamicfunction',
- CreateHTML: 'https://262.ecma-international.org/9.0/#sec-createhtml',
- CreateIntrinsics: 'https://262.ecma-international.org/9.0/#sec-createintrinsics',
- CreateIterResultObject: 'https://262.ecma-international.org/9.0/#sec-createiterresultobject',
- CreateListFromArrayLike: 'https://262.ecma-international.org/9.0/#sec-createlistfromarraylike',
- CreateListIteratorRecord: 'https://262.ecma-international.org/9.0/#sec-createlistiteratorRecord',
- CreateMapIterator: 'https://262.ecma-international.org/9.0/#sec-createmapiterator',
- CreateMappedArgumentsObject: 'https://262.ecma-international.org/9.0/#sec-createmappedargumentsobject',
- CreateMethodProperty: 'https://262.ecma-international.org/9.0/#sec-createmethodproperty',
- CreatePerIterationEnvironment: 'https://262.ecma-international.org/9.0/#sec-createperiterationenvironment',
- CreateRealm: 'https://262.ecma-international.org/9.0/#sec-createrealm',
- CreateResolvingFunctions: 'https://262.ecma-international.org/9.0/#sec-createresolvingfunctions',
- CreateSetIterator: 'https://262.ecma-international.org/9.0/#sec-createsetiterator',
- CreateSharedByteDataBlock: 'https://262.ecma-international.org/9.0/#sec-createsharedbytedatablock',
- CreateStringIterator: 'https://262.ecma-international.org/9.0/#sec-createstringiterator',
- CreateUnmappedArgumentsObject: 'https://262.ecma-international.org/9.0/#sec-createunmappedargumentsobject',
- DateFromTime: 'https://262.ecma-international.org/9.0/#sec-date-number',
- DateString: 'https://262.ecma-international.org/9.0/#sec-datestring',
- Day: 'https://262.ecma-international.org/9.0/#eqn-Day',
- DayFromYear: 'https://262.ecma-international.org/9.0/#eqn-DaysFromYear',
- DaysInYear: 'https://262.ecma-international.org/9.0/#eqn-DaysInYear',
- DayWithinYear: 'https://262.ecma-international.org/9.0/#eqn-DayWithinYear',
- Decode: 'https://262.ecma-international.org/9.0/#sec-decode',
- DefinePropertyOrThrow: 'https://262.ecma-international.org/9.0/#sec-definepropertyorthrow',
- DeletePropertyOrThrow: 'https://262.ecma-international.org/9.0/#sec-deletepropertyorthrow',
- DetachArrayBuffer: 'https://262.ecma-international.org/9.0/#sec-detacharraybuffer',
- Encode: 'https://262.ecma-international.org/9.0/#sec-encode',
- EnqueueJob: 'https://262.ecma-international.org/9.0/#sec-enqueuejob',
- EnterCriticalSection: 'https://262.ecma-international.org/9.0/#sec-entercriticalsection',
- EnumerableOwnPropertyNames: 'https://262.ecma-international.org/9.0/#sec-enumerableownpropertynames',
- EnumerateObjectProperties: 'https://262.ecma-international.org/9.0/#sec-enumerate-object-properties',
- EscapeRegExpPattern: 'https://262.ecma-international.org/9.0/#sec-escaperegexppattern',
- EvalDeclarationInstantiation: 'https://262.ecma-international.org/9.0/#sec-evaldeclarationinstantiation',
- EvaluateCall: 'https://262.ecma-international.org/9.0/#sec-evaluatecall',
- EvaluateNew: 'https://262.ecma-international.org/9.0/#sec-evaluatenew',
- EventSet: 'https://262.ecma-international.org/9.0/#sec-event-set',
- floor: 'https://262.ecma-international.org/9.0/#eqn-floor',
- ForBodyEvaluation: 'https://262.ecma-international.org/9.0/#sec-forbodyevaluation',
- 'ForIn/OfBodyEvaluation': 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset',
- 'ForIn/OfHeadEvaluation': 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind',
- FromPropertyDescriptor: 'https://262.ecma-international.org/9.0/#sec-frompropertydescriptor',
- FulfillPromise: 'https://262.ecma-international.org/9.0/#sec-fulfillpromise',
- FunctionAllocate: 'https://262.ecma-international.org/9.0/#sec-functionallocate',
- FunctionCreate: 'https://262.ecma-international.org/9.0/#sec-functioncreate',
- FunctionDeclarationInstantiation: 'https://262.ecma-international.org/9.0/#sec-functiondeclarationinstantiation',
- FunctionInitialize: 'https://262.ecma-international.org/9.0/#sec-functioninitialize',
- GeneratorFunctionCreate: 'https://262.ecma-international.org/9.0/#sec-generatorfunctioncreate',
- GeneratorResume: 'https://262.ecma-international.org/9.0/#sec-generatorresume',
- GeneratorResumeAbrupt: 'https://262.ecma-international.org/9.0/#sec-generatorresumeabrupt',
- GeneratorStart: 'https://262.ecma-international.org/9.0/#sec-generatorstart',
- GeneratorValidate: 'https://262.ecma-international.org/9.0/#sec-generatorvalidate',
- GeneratorYield: 'https://262.ecma-international.org/9.0/#sec-generatoryield',
- Get: 'https://262.ecma-international.org/9.0/#sec-get-o-p',
- GetActiveScriptOrModule: 'https://262.ecma-international.org/9.0/#sec-getactivescriptormodule',
- GetBase: 'https://262.ecma-international.org/9.0/#sec-getbase',
- GetFunctionRealm: 'https://262.ecma-international.org/9.0/#sec-getfunctionrealm',
- GetGeneratorKind: 'https://262.ecma-international.org/9.0/#sec-getgeneratorkind',
- GetGlobalObject: 'https://262.ecma-international.org/9.0/#sec-getglobalobject',
- GetIdentifierReference: 'https://262.ecma-international.org/9.0/#sec-getidentifierreference',
- GetIterator: 'https://262.ecma-international.org/9.0/#sec-getiterator',
- GetMethod: 'https://262.ecma-international.org/9.0/#sec-getmethod',
- GetModifySetValueInBuffer: 'https://262.ecma-international.org/9.0/#sec-getmodifysetvalueinbuffer',
- GetModuleNamespace: 'https://262.ecma-international.org/9.0/#sec-getmodulenamespace',
- GetNewTarget: 'https://262.ecma-international.org/9.0/#sec-getnewtarget',
- GetOwnPropertyKeys: 'https://262.ecma-international.org/9.0/#sec-getownpropertykeys',
- GetPrototypeFromConstructor: 'https://262.ecma-international.org/9.0/#sec-getprototypefromconstructor',
- GetReferencedName: 'https://262.ecma-international.org/9.0/#sec-getreferencedname',
- GetSubstitution: 'https://262.ecma-international.org/9.0/#sec-getsubstitution',
- GetSuperConstructor: 'https://262.ecma-international.org/9.0/#sec-getsuperconstructor',
- GetTemplateObject: 'https://262.ecma-international.org/9.0/#sec-gettemplateobject',
- GetThisEnvironment: 'https://262.ecma-international.org/9.0/#sec-getthisenvironment',
- GetThisValue: 'https://262.ecma-international.org/9.0/#sec-getthisvalue',
- GetV: 'https://262.ecma-international.org/9.0/#sec-getv',
- GetValue: 'https://262.ecma-international.org/9.0/#sec-getvalue',
- GetValueFromBuffer: 'https://262.ecma-international.org/9.0/#sec-getvaluefrombuffer',
- GetViewValue: 'https://262.ecma-international.org/9.0/#sec-getviewvalue',
- GetWaiterList: 'https://262.ecma-international.org/9.0/#sec-getwaiterlist',
- GlobalDeclarationInstantiation: 'https://262.ecma-international.org/9.0/#sec-globaldeclarationinstantiation',
- 'happens-before': 'https://262.ecma-international.org/9.0/#sec-happens-before',
- HasOwnProperty: 'https://262.ecma-international.org/9.0/#sec-hasownproperty',
- HasPrimitiveBase: 'https://262.ecma-international.org/9.0/#sec-hasprimitivebase',
- HasProperty: 'https://262.ecma-international.org/9.0/#sec-hasproperty',
- 'host-synchronizes-with': 'https://262.ecma-international.org/9.0/#sec-host-synchronizes-with',
- HostEnsureCanCompileStrings: 'https://262.ecma-international.org/9.0/#sec-hostensurecancompilestrings',
- HostEventSet: 'https://262.ecma-international.org/9.0/#sec-hosteventset',
- HostPromiseRejectionTracker: 'https://262.ecma-international.org/9.0/#sec-host-promise-rejection-tracker',
- HostReportErrors: 'https://262.ecma-international.org/9.0/#sec-host-report-errors',
- HostResolveImportedModule: 'https://262.ecma-international.org/9.0/#sec-hostresolveimportedmodule',
- HourFromTime: 'https://262.ecma-international.org/9.0/#eqn-HourFromTime',
- IfAbruptRejectPromise: 'https://262.ecma-international.org/9.0/#sec-ifabruptrejectpromise',
- ImportedLocalNames: 'https://262.ecma-international.org/9.0/#sec-importedlocalnames',
- InitializeBoundName: 'https://262.ecma-international.org/9.0/#sec-initializeboundname',
- InitializeHostDefinedRealm: 'https://262.ecma-international.org/9.0/#sec-initializehostdefinedrealm',
- InitializeReferencedBinding: 'https://262.ecma-international.org/9.0/#sec-initializereferencedbinding',
- InLeapYear: 'https://262.ecma-international.org/9.0/#eqn-InLeapYear',
- InnerModuleEvaluation: 'https://262.ecma-international.org/9.0/#sec-innermoduleevaluation',
- InnerModuleInstantiation: 'https://262.ecma-international.org/9.0/#sec-innermoduleinstantiation',
- InstanceofOperator: 'https://262.ecma-international.org/9.0/#sec-instanceofoperator',
- IntegerIndexedElementGet: 'https://262.ecma-international.org/9.0/#sec-integerindexedelementget',
- IntegerIndexedElementSet: 'https://262.ecma-international.org/9.0/#sec-integerindexedelementset',
- IntegerIndexedObjectCreate: 'https://262.ecma-international.org/9.0/#sec-integerindexedobjectcreate',
- InternalizeJSONProperty: 'https://262.ecma-international.org/9.0/#sec-internalizejsonproperty',
- Invoke: 'https://262.ecma-international.org/9.0/#sec-invoke',
- IsAccessorDescriptor: 'https://262.ecma-international.org/9.0/#sec-isaccessordescriptor',
- IsAnonymousFunctionDefinition: 'https://262.ecma-international.org/9.0/#sec-isanonymousfunctiondefinition',
- IsArray: 'https://262.ecma-international.org/9.0/#sec-isarray',
- IsCallable: 'https://262.ecma-international.org/9.0/#sec-iscallable',
- IsCompatiblePropertyDescriptor: 'https://262.ecma-international.org/9.0/#sec-iscompatiblepropertydescriptor',
- IsConcatSpreadable: 'https://262.ecma-international.org/9.0/#sec-isconcatspreadable',
- IsConstructor: 'https://262.ecma-international.org/9.0/#sec-isconstructor',
- IsDataDescriptor: 'https://262.ecma-international.org/9.0/#sec-isdatadescriptor',
- IsDetachedBuffer: 'https://262.ecma-international.org/9.0/#sec-isdetachedbuffer',
- IsExtensible: 'https://262.ecma-international.org/9.0/#sec-isextensible-o',
- IsGenericDescriptor: 'https://262.ecma-international.org/9.0/#sec-isgenericdescriptor',
- IsInTailPosition: 'https://262.ecma-international.org/9.0/#sec-isintailposition',
- IsInteger: 'https://262.ecma-international.org/9.0/#sec-isinteger',
- IsLabelledFunction: 'https://262.ecma-international.org/9.0/#sec-islabelledfunction',
- IsPromise: 'https://262.ecma-international.org/9.0/#sec-ispromise',
- IsPropertyKey: 'https://262.ecma-international.org/9.0/#sec-ispropertykey',
- IsPropertyReference: 'https://262.ecma-international.org/9.0/#sec-ispropertyreference',
- IsRegExp: 'https://262.ecma-international.org/9.0/#sec-isregexp',
- IsSharedArrayBuffer: 'https://262.ecma-international.org/9.0/#sec-issharedarraybuffer',
- IsStrictReference: 'https://262.ecma-international.org/9.0/#sec-isstrictreference',
- IsStringPrefix: 'https://262.ecma-international.org/9.0/#sec-isstringprefix',
- IsSuperReference: 'https://262.ecma-international.org/9.0/#sec-issuperreference',
- IsUnresolvableReference: 'https://262.ecma-international.org/9.0/#sec-isunresolvablereference',
- IsWordChar: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-iswordchar-abstract-operation',
- IterableToList: 'https://262.ecma-international.org/9.0/#sec-iterabletolist',
- IteratorClose: 'https://262.ecma-international.org/9.0/#sec-iteratorclose',
- IteratorComplete: 'https://262.ecma-international.org/9.0/#sec-iteratorcomplete',
- IteratorNext: 'https://262.ecma-international.org/9.0/#sec-iteratornext',
- IteratorStep: 'https://262.ecma-international.org/9.0/#sec-iteratorstep',
- IteratorValue: 'https://262.ecma-international.org/9.0/#sec-iteratorvalue',
- LeaveCriticalSection: 'https://262.ecma-international.org/9.0/#sec-leavecriticalsection',
- LocalTime: 'https://262.ecma-international.org/9.0/#sec-localtime',
- LoopContinues: 'https://262.ecma-international.org/9.0/#sec-loopcontinues',
- MakeArgGetter: 'https://262.ecma-international.org/9.0/#sec-makearggetter',
- MakeArgSetter: 'https://262.ecma-international.org/9.0/#sec-makeargsetter',
- MakeClassConstructor: 'https://262.ecma-international.org/9.0/#sec-makeclassconstructor',
- MakeConstructor: 'https://262.ecma-international.org/9.0/#sec-makeconstructor',
- MakeDate: 'https://262.ecma-international.org/9.0/#sec-makedate',
- MakeDay: 'https://262.ecma-international.org/9.0/#sec-makeday',
- MakeMethod: 'https://262.ecma-international.org/9.0/#sec-makemethod',
- MakeSuperPropertyReference: 'https://262.ecma-international.org/9.0/#sec-makesuperpropertyreference',
- MakeTime: 'https://262.ecma-international.org/9.0/#sec-maketime',
- max: 'https://262.ecma-international.org/9.0/#eqn-max',
- 'memory-order': 'https://262.ecma-international.org/9.0/#sec-memory-order',
- min: 'https://262.ecma-international.org/9.0/#eqn-min',
- MinFromTime: 'https://262.ecma-international.org/9.0/#eqn-MinFromTime',
- ModuleDeclarationEnvironmentSetup: 'https://262.ecma-international.org/9.0/#sec-moduledeclarationenvironmentsetup',
- ModuleExecution: 'https://262.ecma-international.org/9.0/#sec-moduleexecution',
- ModuleNamespaceCreate: 'https://262.ecma-international.org/9.0/#sec-modulenamespacecreate',
- modulo: 'https://262.ecma-international.org/9.0/#eqn-modulo',
- MonthFromTime: 'https://262.ecma-international.org/9.0/#eqn-MonthFromTime',
- msFromTime: 'https://262.ecma-international.org/9.0/#eqn-msFromTime',
- NewDeclarativeEnvironment: 'https://262.ecma-international.org/9.0/#sec-newdeclarativeenvironment',
- NewFunctionEnvironment: 'https://262.ecma-international.org/9.0/#sec-newfunctionenvironment',
- NewGlobalEnvironment: 'https://262.ecma-international.org/9.0/#sec-newglobalenvironment',
- NewModuleEnvironment: 'https://262.ecma-international.org/9.0/#sec-newmoduleenvironment',
- NewObjectEnvironment: 'https://262.ecma-international.org/9.0/#sec-newobjectenvironment',
- NewPromiseCapability: 'https://262.ecma-international.org/9.0/#sec-newpromisecapability',
- NormalCompletion: 'https://262.ecma-international.org/9.0/#sec-normalcompletion',
- NumberToRawBytes: 'https://262.ecma-international.org/9.0/#sec-numbertorawbytes',
- NumberToString: 'https://262.ecma-international.org/9.0/#sec-tostring-applied-to-the-number-type',
- ObjectCreate: 'https://262.ecma-international.org/9.0/#sec-objectcreate',
- ObjectDefineProperties: 'https://262.ecma-international.org/9.0/#sec-objectdefineproperties',
- OrdinaryCallBindThis: 'https://262.ecma-international.org/9.0/#sec-ordinarycallbindthis',
- OrdinaryCallEvaluateBody: 'https://262.ecma-international.org/9.0/#sec-ordinarycallevaluatebody',
- OrdinaryCreateFromConstructor: 'https://262.ecma-international.org/9.0/#sec-ordinarycreatefromconstructor',
- OrdinaryDefineOwnProperty: 'https://262.ecma-international.org/9.0/#sec-ordinarydefineownproperty',
- OrdinaryDelete: 'https://262.ecma-international.org/9.0/#sec-ordinarydelete',
- OrdinaryGet: 'https://262.ecma-international.org/9.0/#sec-ordinaryget',
- OrdinaryGetOwnProperty: 'https://262.ecma-international.org/9.0/#sec-ordinarygetownproperty',
- OrdinaryGetPrototypeOf: 'https://262.ecma-international.org/9.0/#sec-ordinarygetprototypeof',
- OrdinaryHasInstance: 'https://262.ecma-international.org/9.0/#sec-ordinaryhasinstance',
- OrdinaryHasProperty: 'https://262.ecma-international.org/9.0/#sec-ordinaryhasproperty',
- OrdinaryIsExtensible: 'https://262.ecma-international.org/9.0/#sec-ordinaryisextensible',
- OrdinaryOwnPropertyKeys: 'https://262.ecma-international.org/9.0/#sec-ordinaryownpropertykeys',
- OrdinaryPreventExtensions: 'https://262.ecma-international.org/9.0/#sec-ordinarypreventextensions',
- OrdinarySet: 'https://262.ecma-international.org/9.0/#sec-ordinaryset',
- OrdinarySetPrototypeOf: 'https://262.ecma-international.org/9.0/#sec-ordinarysetprototypeof',
- OrdinarySetWithOwnDescriptor: 'https://262.ecma-international.org/9.0/#sec-ordinarysetwithowndescriptor',
- OrdinaryToPrimitive: 'https://262.ecma-international.org/9.0/#sec-ordinarytoprimitive',
- ParseModule: 'https://262.ecma-international.org/9.0/#sec-parsemodule',
- ParseScript: 'https://262.ecma-international.org/9.0/#sec-parse-script',
- PerformEval: 'https://262.ecma-international.org/9.0/#sec-performeval',
- PerformPromiseAll: 'https://262.ecma-international.org/9.0/#sec-performpromiseall',
- PerformPromiseRace: 'https://262.ecma-international.org/9.0/#sec-performpromiserace',
- PerformPromiseThen: 'https://262.ecma-international.org/9.0/#sec-performpromisethen',
- PrepareForOrdinaryCall: 'https://262.ecma-international.org/9.0/#sec-prepareforordinarycall',
- PrepareForTailCall: 'https://262.ecma-international.org/9.0/#sec-preparefortailcall',
- PromiseReactionJob: 'https://262.ecma-international.org/9.0/#sec-promisereactionjob',
- PromiseResolve: 'https://262.ecma-international.org/9.0/#sec-promise-resolve',
- PromiseResolveThenableJob: 'https://262.ecma-international.org/9.0/#sec-promiseresolvethenablejob',
- ProxyCreate: 'https://262.ecma-international.org/9.0/#sec-proxycreate',
- PutValue: 'https://262.ecma-international.org/9.0/#sec-putvalue',
- QuoteJSONString: 'https://262.ecma-international.org/9.0/#sec-quotejsonstring',
- RawBytesToNumber: 'https://262.ecma-international.org/9.0/#sec-rawbytestonumber',
- 'reads-bytes-from': 'https://262.ecma-international.org/9.0/#sec-reads-bytes-from',
- 'reads-from': 'https://262.ecma-international.org/9.0/#sec-reads-from',
- RegExpAlloc: 'https://262.ecma-international.org/9.0/#sec-regexpalloc',
- RegExpBuiltinExec: 'https://262.ecma-international.org/9.0/#sec-regexpbuiltinexec',
- RegExpCreate: 'https://262.ecma-international.org/9.0/#sec-regexpcreate',
- RegExpExec: 'https://262.ecma-international.org/9.0/#sec-regexpexec',
- RegExpInitialize: 'https://262.ecma-international.org/9.0/#sec-regexpinitialize',
- RejectPromise: 'https://262.ecma-international.org/9.0/#sec-rejectpromise',
- RemoveWaiter: 'https://262.ecma-international.org/9.0/#sec-removewaiter',
- RemoveWaiters: 'https://262.ecma-international.org/9.0/#sec-removewaiters',
- RepeatMatcher: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-repeatmatcher-abstract-operation',
- RequireObjectCoercible: 'https://262.ecma-international.org/9.0/#sec-requireobjectcoercible',
- ResolveBinding: 'https://262.ecma-international.org/9.0/#sec-resolvebinding',
- ResolveThisBinding: 'https://262.ecma-international.org/9.0/#sec-resolvethisbinding',
- ReturnIfAbrupt: 'https://262.ecma-international.org/9.0/#sec-returnifabrupt',
- RunJobs: 'https://262.ecma-international.org/9.0/#sec-runjobs',
- SameValue: 'https://262.ecma-international.org/9.0/#sec-samevalue',
- SameValueNonNumber: 'https://262.ecma-international.org/9.0/#sec-samevaluenonnumber',
- SameValueZero: 'https://262.ecma-international.org/9.0/#sec-samevaluezero',
- ScriptEvaluation: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-scriptevaluation',
- ScriptEvaluationJob: 'https://262.ecma-international.org/9.0/#sec-scriptevaluationjob',
- SecFromTime: 'https://262.ecma-international.org/9.0/#eqn-SecFromTime',
- SerializeJSONArray: 'https://262.ecma-international.org/9.0/#sec-serializejsonarray',
- SerializeJSONObject: 'https://262.ecma-international.org/9.0/#sec-serializejsonobject',
- SerializeJSONProperty: 'https://262.ecma-international.org/9.0/#sec-serializejsonproperty',
- Set: 'https://262.ecma-international.org/9.0/#sec-set-o-p-v-throw',
- SetDefaultGlobalBindings: 'https://262.ecma-international.org/9.0/#sec-setdefaultglobalbindings',
- SetFunctionLength: 'https://262.ecma-international.org/9.0/#sec-setfunctionlength',
- SetFunctionName: 'https://262.ecma-international.org/9.0/#sec-setfunctionname',
- SetImmutablePrototype: 'https://262.ecma-international.org/9.0/#sec-set-immutable-prototype',
- SetIntegrityLevel: 'https://262.ecma-international.org/9.0/#sec-setintegritylevel',
- SetRealmGlobalObject: 'https://262.ecma-international.org/9.0/#sec-setrealmglobalobject',
- SetValueInBuffer: 'https://262.ecma-international.org/9.0/#sec-setvalueinbuffer',
- SetViewValue: 'https://262.ecma-international.org/9.0/#sec-setviewvalue',
- SharedDataBlockEventSet: 'https://262.ecma-international.org/9.0/#sec-sharedatablockeventset',
- SortCompare: 'https://262.ecma-international.org/9.0/#sec-sortcompare',
- SpeciesConstructor: 'https://262.ecma-international.org/9.0/#sec-speciesconstructor',
- SplitMatch: 'https://262.ecma-international.org/9.0/#sec-splitmatch',
- 'Strict Equality Comparison': 'https://262.ecma-international.org/9.0/#sec-strict-equality-comparison',
- StringCreate: 'https://262.ecma-international.org/9.0/#sec-stringcreate',
- StringGetOwnProperty: 'https://262.ecma-international.org/9.0/#sec-stringgetownproperty',
- Suspend: 'https://262.ecma-international.org/9.0/#sec-suspend',
- SymbolDescriptiveString: 'https://262.ecma-international.org/9.0/#sec-symboldescriptivestring',
- 'synchronizes-with': 'https://262.ecma-international.org/9.0/#sec-synchronizes-with',
- TestIntegrityLevel: 'https://262.ecma-international.org/9.0/#sec-testintegritylevel',
- thisBooleanValue: 'https://262.ecma-international.org/9.0/#sec-thisbooleanvalue',
- thisNumberValue: 'https://262.ecma-international.org/9.0/#sec-thisnumbervalue',
- thisStringValue: 'https://262.ecma-international.org/9.0/#sec-thisstringvalue',
- thisSymbolValue: 'https://262.ecma-international.org/9.0/#sec-thissymbolvalue',
- thisTimeValue: 'https://262.ecma-international.org/9.0/#sec-thistimevalue',
- ThrowCompletion: 'https://262.ecma-international.org/9.0/#sec-throwcompletion',
- TimeClip: 'https://262.ecma-international.org/9.0/#sec-timeclip',
- TimeFromYear: 'https://262.ecma-international.org/9.0/#eqn-TimeFromYear',
- TimeString: 'https://262.ecma-international.org/9.0/#sec-timestring',
- TimeWithinDay: 'https://262.ecma-international.org/9.0/#eqn-TimeWithinDay',
- TimeZoneString: 'https://262.ecma-international.org/9.0/#sec-timezoneestring',
- ToBoolean: 'https://262.ecma-international.org/9.0/#sec-toboolean',
- ToDateString: 'https://262.ecma-international.org/9.0/#sec-todatestring',
- ToIndex: 'https://262.ecma-international.org/9.0/#sec-toindex',
- ToInt16: 'https://262.ecma-international.org/9.0/#sec-toint16',
- ToInt32: 'https://262.ecma-international.org/9.0/#sec-toint32',
- ToInt8: 'https://262.ecma-international.org/9.0/#sec-toint8',
- ToInteger: 'https://262.ecma-international.org/9.0/#sec-tointeger',
- ToLength: 'https://262.ecma-international.org/9.0/#sec-tolength',
- ToNumber: 'https://262.ecma-international.org/9.0/#sec-tonumber',
- ToObject: 'https://262.ecma-international.org/9.0/#sec-toobject',
- TopLevelModuleEvaluationJob: 'https://262.ecma-international.org/9.0/#sec-toplevelmoduleevaluationjob',
- ToPrimitive: 'https://262.ecma-international.org/9.0/#sec-toprimitive',
- ToPropertyDescriptor: 'https://262.ecma-international.org/9.0/#sec-topropertydescriptor',
- ToPropertyKey: 'https://262.ecma-international.org/9.0/#sec-topropertykey',
- ToString: 'https://262.ecma-international.org/9.0/#sec-tostring',
- ToUint16: 'https://262.ecma-international.org/9.0/#sec-touint16',
- ToUint32: 'https://262.ecma-international.org/9.0/#sec-touint32',
- ToUint8: 'https://262.ecma-international.org/9.0/#sec-touint8',
- ToUint8Clamp: 'https://262.ecma-international.org/9.0/#sec-touint8clamp',
- TriggerPromiseReactions: 'https://262.ecma-international.org/9.0/#sec-triggerpromisereactions',
- Type: 'https://262.ecma-international.org/9.0/#sec-ecmascript-data-types-and-values',
- TypedArrayCreate: 'https://262.ecma-international.org/9.0/#typedarray-create',
- TypedArraySpeciesCreate: 'https://262.ecma-international.org/9.0/#typedarray-species-create',
- UnicodeEscape: 'https://262.ecma-international.org/9.0/#sec-unicodeescape',
- UnicodeMatchProperty: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-unicodematchproperty-p',
- UnicodeMatchPropertyValue: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-unicodematchpropertyvalue-p-v',
- UpdateEmpty: 'https://262.ecma-international.org/9.0/#sec-updateempty',
- UTC: 'https://262.ecma-international.org/9.0/#sec-utc-t',
- UTF16Decode: 'https://262.ecma-international.org/9.0/#sec-utf16decode',
- UTF16Encoding: 'https://262.ecma-international.org/9.0/#sec-utf16encoding',
- ValidateAndApplyPropertyDescriptor: 'https://262.ecma-international.org/9.0/#sec-validateandapplypropertydescriptor',
- ValidateAtomicAccess: 'https://262.ecma-international.org/9.0/#sec-validateatomicaccess',
- ValidateSharedIntegerTypedArray: 'https://262.ecma-international.org/9.0/#sec-validatesharedintegertypedarray',
- ValidateTypedArray: 'https://262.ecma-international.org/9.0/#sec-validatetypedarray',
- ValueOfReadEvent: 'https://262.ecma-international.org/9.0/#sec-valueofreadevent',
- WakeWaiter: 'https://262.ecma-international.org/9.0/#sec-wakewaiter',
- WeekDay: 'https://262.ecma-international.org/9.0/#sec-week-day',
- WordCharacters: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-wordcharacters-abstract-operation',
- YearFromTime: 'https://262.ecma-international.org/9.0/#eqn-YearFromTime'
+ abs: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-abs'
+ },
+ 'Abstract Equality Comparison': {
+ url: 'https://262.ecma-international.org/9.0/#sec-abstract-equality-comparison'
+ },
+ 'Abstract Relational Comparison': {
+ url: 'https://262.ecma-international.org/9.0/#sec-abstract-relational-comparison'
+ },
+ AddRestrictedFunctionProperties: {
+ url: 'https://262.ecma-international.org/9.0/#sec-addrestrictedfunctionproperties'
+ },
+ AddWaiter: {
+ url: 'https://262.ecma-international.org/9.0/#sec-addwaiter'
+ },
+ AdvanceStringIndex: {
+ url: 'https://262.ecma-international.org/9.0/#sec-advancestringindex'
+ },
+ 'agent-order': {
+ url: 'https://262.ecma-international.org/9.0/#sec-agent-order'
+ },
+ AgentCanSuspend: {
+ url: 'https://262.ecma-international.org/9.0/#sec-agentcansuspend'
+ },
+ AgentSignifier: {
+ url: 'https://262.ecma-international.org/9.0/#sec-agentsignifier'
+ },
+ AllocateArrayBuffer: {
+ url: 'https://262.ecma-international.org/9.0/#sec-allocatearraybuffer'
+ },
+ AllocateSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/9.0/#sec-allocatesharedarraybuffer'
+ },
+ AllocateTypedArray: {
+ url: 'https://262.ecma-international.org/9.0/#sec-allocatetypedarray'
+ },
+ AllocateTypedArrayBuffer: {
+ url: 'https://262.ecma-international.org/9.0/#sec-allocatetypedarraybuffer'
+ },
+ ArrayCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-arraycreate'
+ },
+ ArraySetLength: {
+ url: 'https://262.ecma-international.org/9.0/#sec-arraysetlength'
+ },
+ ArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-arrayspeciescreate'
+ },
+ AsyncFunctionCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-async-functions-abstract-operations-async-function-create'
+ },
+ AsyncFunctionStart: {
+ url: 'https://262.ecma-international.org/9.0/#sec-async-functions-abstract-operations-async-function-start'
+ },
+ AsyncGeneratorEnqueue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorenqueue'
+ },
+ AsyncGeneratorFunctionCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorfunctioncreate'
+ },
+ AsyncGeneratorReject: {
+ url: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorreject'
+ },
+ AsyncGeneratorResolve: {
+ url: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorresolve'
+ },
+ AsyncGeneratorResumeNext: {
+ url: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorresumenext'
+ },
+ AsyncGeneratorStart: {
+ url: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratorstart'
+ },
+ AsyncGeneratorYield: {
+ url: 'https://262.ecma-international.org/9.0/#sec-asyncgeneratoryield'
+ },
+ AsyncIteratorClose: {
+ url: 'https://262.ecma-international.org/9.0/#sec-asynciteratorclose'
+ },
+ AtomicLoad: {
+ url: 'https://262.ecma-international.org/9.0/#sec-atomicload'
+ },
+ AtomicReadModifyWrite: {
+ url: 'https://262.ecma-international.org/9.0/#sec-atomicreadmodifywrite'
+ },
+ Await: {
+ url: 'https://262.ecma-international.org/9.0/#await'
+ },
+ BackreferenceMatcher: {
+ url: 'https://262.ecma-international.org/9.0/#sec-backreference-matcher'
+ },
+ BlockDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/9.0/#sec-blockdeclarationinstantiation'
+ },
+ BoundFunctionCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-boundfunctioncreate'
+ },
+ Call: {
+ url: 'https://262.ecma-international.org/9.0/#sec-call'
+ },
+ Canonicalize: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-canonicalize-ch'
+ },
+ CanonicalNumericIndexString: {
+ url: 'https://262.ecma-international.org/9.0/#sec-canonicalnumericindexstring'
+ },
+ CaseClauseIsSelected: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-caseclauseisselected'
+ },
+ CharacterRange: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-characterrange-abstract-operation'
+ },
+ CharacterRangeOrUnion: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation'
+ },
+ CharacterSetMatcher: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation'
+ },
+ CloneArrayBuffer: {
+ url: 'https://262.ecma-international.org/9.0/#sec-clonearraybuffer'
+ },
+ CompletePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-completepropertydescriptor'
+ },
+ Completion: {
+ url: 'https://262.ecma-international.org/9.0/#sec-completion-record-specification-type'
+ },
+ CompletionRecord: {
+ url: 'https://262.ecma-international.org/9.0/#sec-completion-record-specification-type'
+ },
+ ComposeWriteEventBytes: {
+ url: 'https://262.ecma-international.org/9.0/#sec-composewriteeventbytes'
+ },
+ Construct: {
+ url: 'https://262.ecma-international.org/9.0/#sec-construct'
+ },
+ CopyDataBlockBytes: {
+ url: 'https://262.ecma-international.org/9.0/#sec-copydatablockbytes'
+ },
+ CopyDataProperties: {
+ url: 'https://262.ecma-international.org/9.0/#sec-copydataproperties'
+ },
+ CreateArrayFromList: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createarrayfromlist'
+ },
+ CreateArrayIterator: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createarrayiterator'
+ },
+ CreateAsyncFromSyncIterator: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createasyncfromsynciterator'
+ },
+ CreateBuiltinFunction: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createbuiltinfunction'
+ },
+ CreateByteDataBlock: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createbytedatablock'
+ },
+ CreateDataProperty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createdataproperty'
+ },
+ CreateDataPropertyOrThrow: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createdatapropertyorthrow'
+ },
+ CreateDynamicFunction: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createdynamicfunction'
+ },
+ CreateHTML: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createhtml'
+ },
+ CreateIntrinsics: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createintrinsics'
+ },
+ CreateIterResultObject: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createiterresultobject'
+ },
+ CreateListFromArrayLike: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createlistfromarraylike'
+ },
+ CreateListIteratorRecord: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createlistiteratorRecord'
+ },
+ CreateMapIterator: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createmapiterator'
+ },
+ CreateMappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createmappedargumentsobject'
+ },
+ CreateMethodProperty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createmethodproperty'
+ },
+ CreatePerIterationEnvironment: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createperiterationenvironment'
+ },
+ CreateRealm: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createrealm'
+ },
+ CreateResolvingFunctions: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createresolvingfunctions'
+ },
+ CreateSetIterator: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createsetiterator'
+ },
+ CreateSharedByteDataBlock: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createsharedbytedatablock'
+ },
+ CreateStringIterator: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createstringiterator'
+ },
+ CreateUnmappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/9.0/#sec-createunmappedargumentsobject'
+ },
+ DateFromTime: {
+ url: 'https://262.ecma-international.org/9.0/#sec-date-number'
+ },
+ DateString: {
+ url: 'https://262.ecma-international.org/9.0/#sec-datestring'
+ },
+ Day: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-Day'
+ },
+ DayFromYear: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-DaysFromYear'
+ },
+ DaysInYear: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-DaysInYear'
+ },
+ DayWithinYear: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-DayWithinYear'
+ },
+ Decode: {
+ url: 'https://262.ecma-international.org/9.0/#sec-decode'
+ },
+ DefinePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/9.0/#sec-definepropertyorthrow'
+ },
+ DeletePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/9.0/#sec-deletepropertyorthrow'
+ },
+ DetachArrayBuffer: {
+ url: 'https://262.ecma-international.org/9.0/#sec-detacharraybuffer'
+ },
+ Encode: {
+ url: 'https://262.ecma-international.org/9.0/#sec-encode'
+ },
+ EnqueueJob: {
+ url: 'https://262.ecma-international.org/9.0/#sec-enqueuejob'
+ },
+ EnterCriticalSection: {
+ url: 'https://262.ecma-international.org/9.0/#sec-entercriticalsection'
+ },
+ EnumerableOwnPropertyNames: {
+ url: 'https://262.ecma-international.org/9.0/#sec-enumerableownpropertynames'
+ },
+ EnumerateObjectProperties: {
+ url: 'https://262.ecma-international.org/9.0/#sec-enumerate-object-properties'
+ },
+ EscapeRegExpPattern: {
+ url: 'https://262.ecma-international.org/9.0/#sec-escaperegexppattern'
+ },
+ EvalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/9.0/#sec-evaldeclarationinstantiation'
+ },
+ EvaluateCall: {
+ url: 'https://262.ecma-international.org/9.0/#sec-evaluatecall'
+ },
+ EvaluateNew: {
+ url: 'https://262.ecma-international.org/9.0/#sec-evaluatenew'
+ },
+ EventSet: {
+ url: 'https://262.ecma-international.org/9.0/#sec-event-set'
+ },
+ floor: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-floor'
+ },
+ ForBodyEvaluation: {
+ url: 'https://262.ecma-international.org/9.0/#sec-forbodyevaluation'
+ },
+ 'ForIn/OfBodyEvaluation': {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset'
+ },
+ 'ForIn/OfHeadEvaluation': {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind'
+ },
+ FromPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-frompropertydescriptor'
+ },
+ FulfillPromise: {
+ url: 'https://262.ecma-international.org/9.0/#sec-fulfillpromise'
+ },
+ FunctionAllocate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-functionallocate'
+ },
+ FunctionCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-functioncreate'
+ },
+ FunctionDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/9.0/#sec-functiondeclarationinstantiation'
+ },
+ FunctionInitialize: {
+ url: 'https://262.ecma-international.org/9.0/#sec-functioninitialize'
+ },
+ GeneratorFunctionCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-generatorfunctioncreate'
+ },
+ GeneratorResume: {
+ url: 'https://262.ecma-international.org/9.0/#sec-generatorresume'
+ },
+ GeneratorResumeAbrupt: {
+ url: 'https://262.ecma-international.org/9.0/#sec-generatorresumeabrupt'
+ },
+ GeneratorStart: {
+ url: 'https://262.ecma-international.org/9.0/#sec-generatorstart'
+ },
+ GeneratorValidate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-generatorvalidate'
+ },
+ GeneratorYield: {
+ url: 'https://262.ecma-international.org/9.0/#sec-generatoryield'
+ },
+ Get: {
+ url: 'https://262.ecma-international.org/9.0/#sec-get-o-p'
+ },
+ GetActiveScriptOrModule: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getactivescriptormodule'
+ },
+ GetBase: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getbase'
+ },
+ GetFunctionRealm: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getfunctionrealm'
+ },
+ GetGeneratorKind: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getgeneratorkind'
+ },
+ GetGlobalObject: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getglobalobject'
+ },
+ GetIdentifierReference: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getidentifierreference'
+ },
+ GetIterator: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getiterator'
+ },
+ GetMethod: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getmethod'
+ },
+ GetModifySetValueInBuffer: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getmodifysetvalueinbuffer'
+ },
+ GetModuleNamespace: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getmodulenamespace'
+ },
+ GetNewTarget: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getnewtarget'
+ },
+ GetOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getownpropertykeys'
+ },
+ GetPrototypeFromConstructor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getprototypefromconstructor'
+ },
+ GetReferencedName: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getreferencedname'
+ },
+ GetSubstitution: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getsubstitution'
+ },
+ GetSuperConstructor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getsuperconstructor'
+ },
+ GetTemplateObject: {
+ url: 'https://262.ecma-international.org/9.0/#sec-gettemplateobject'
+ },
+ GetThisEnvironment: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getthisenvironment'
+ },
+ GetThisValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getthisvalue'
+ },
+ GetV: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getv'
+ },
+ GetValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getvalue'
+ },
+ GetValueFromBuffer: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getvaluefrombuffer'
+ },
+ GetViewValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getviewvalue'
+ },
+ GetWaiterList: {
+ url: 'https://262.ecma-international.org/9.0/#sec-getwaiterlist'
+ },
+ GlobalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/9.0/#sec-globaldeclarationinstantiation'
+ },
+ 'happens-before': {
+ url: 'https://262.ecma-international.org/9.0/#sec-happens-before'
+ },
+ HasOwnProperty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-hasownproperty'
+ },
+ HasPrimitiveBase: {
+ url: 'https://262.ecma-international.org/9.0/#sec-hasprimitivebase'
+ },
+ HasProperty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-hasproperty'
+ },
+ 'host-synchronizes-with': {
+ url: 'https://262.ecma-international.org/9.0/#sec-host-synchronizes-with'
+ },
+ HostEventSet: {
+ url: 'https://262.ecma-international.org/9.0/#sec-hosteventset'
+ },
+ HourFromTime: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-HourFromTime'
+ },
+ IfAbruptRejectPromise: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ifabruptrejectpromise'
+ },
+ ImportedLocalNames: {
+ url: 'https://262.ecma-international.org/9.0/#sec-importedlocalnames'
+ },
+ InitializeBoundName: {
+ url: 'https://262.ecma-international.org/9.0/#sec-initializeboundname'
+ },
+ InitializeHostDefinedRealm: {
+ url: 'https://262.ecma-international.org/9.0/#sec-initializehostdefinedrealm'
+ },
+ InitializeReferencedBinding: {
+ url: 'https://262.ecma-international.org/9.0/#sec-initializereferencedbinding'
+ },
+ InLeapYear: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-InLeapYear'
+ },
+ InnerModuleEvaluation: {
+ url: 'https://262.ecma-international.org/9.0/#sec-innermoduleevaluation'
+ },
+ InnerModuleInstantiation: {
+ url: 'https://262.ecma-international.org/9.0/#sec-innermoduleinstantiation'
+ },
+ InstanceofOperator: {
+ url: 'https://262.ecma-international.org/9.0/#sec-instanceofoperator'
+ },
+ IntegerIndexedElementGet: {
+ url: 'https://262.ecma-international.org/9.0/#sec-integerindexedelementget'
+ },
+ IntegerIndexedElementSet: {
+ url: 'https://262.ecma-international.org/9.0/#sec-integerindexedelementset'
+ },
+ IntegerIndexedObjectCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-integerindexedobjectcreate'
+ },
+ InternalizeJSONProperty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-internalizejsonproperty'
+ },
+ Invoke: {
+ url: 'https://262.ecma-international.org/9.0/#sec-invoke'
+ },
+ IsAccessorDescriptor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isaccessordescriptor'
+ },
+ IsAnonymousFunctionDefinition: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isanonymousfunctiondefinition'
+ },
+ IsArray: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isarray'
+ },
+ IsCallable: {
+ url: 'https://262.ecma-international.org/9.0/#sec-iscallable'
+ },
+ IsCompatiblePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-iscompatiblepropertydescriptor'
+ },
+ IsConcatSpreadable: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isconcatspreadable'
+ },
+ IsConstructor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isconstructor'
+ },
+ IsDataDescriptor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isdatadescriptor'
+ },
+ IsDetachedBuffer: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isdetachedbuffer'
+ },
+ IsExtensible: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isextensible-o'
+ },
+ IsGenericDescriptor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isgenericdescriptor'
+ },
+ IsInTailPosition: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isintailposition'
+ },
+ IsInteger: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isinteger'
+ },
+ IsLabelledFunction: {
+ url: 'https://262.ecma-international.org/9.0/#sec-islabelledfunction'
+ },
+ IsPromise: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ispromise'
+ },
+ IsPropertyKey: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ispropertykey'
+ },
+ IsPropertyReference: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ispropertyreference'
+ },
+ IsRegExp: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isregexp'
+ },
+ IsSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/9.0/#sec-issharedarraybuffer'
+ },
+ IsStrictReference: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isstrictreference'
+ },
+ IsStringPrefix: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isstringprefix'
+ },
+ IsSuperReference: {
+ url: 'https://262.ecma-international.org/9.0/#sec-issuperreference'
+ },
+ IsUnresolvableReference: {
+ url: 'https://262.ecma-international.org/9.0/#sec-isunresolvablereference'
+ },
+ IsWordChar: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-iswordchar-abstract-operation'
+ },
+ IterableToList: {
+ url: 'https://262.ecma-international.org/9.0/#sec-iterabletolist'
+ },
+ IteratorClose: {
+ url: 'https://262.ecma-international.org/9.0/#sec-iteratorclose'
+ },
+ IteratorComplete: {
+ url: 'https://262.ecma-international.org/9.0/#sec-iteratorcomplete'
+ },
+ IteratorNext: {
+ url: 'https://262.ecma-international.org/9.0/#sec-iteratornext'
+ },
+ IteratorStep: {
+ url: 'https://262.ecma-international.org/9.0/#sec-iteratorstep'
+ },
+ IteratorValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-iteratorvalue'
+ },
+ LeaveCriticalSection: {
+ url: 'https://262.ecma-international.org/9.0/#sec-leavecriticalsection'
+ },
+ LocalTime: {
+ url: 'https://262.ecma-international.org/9.0/#sec-localtime'
+ },
+ LoopContinues: {
+ url: 'https://262.ecma-international.org/9.0/#sec-loopcontinues'
+ },
+ MakeArgGetter: {
+ url: 'https://262.ecma-international.org/9.0/#sec-makearggetter'
+ },
+ MakeArgSetter: {
+ url: 'https://262.ecma-international.org/9.0/#sec-makeargsetter'
+ },
+ MakeClassConstructor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-makeclassconstructor'
+ },
+ MakeConstructor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-makeconstructor'
+ },
+ MakeDate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-makedate'
+ },
+ MakeDay: {
+ url: 'https://262.ecma-international.org/9.0/#sec-makeday'
+ },
+ MakeMethod: {
+ url: 'https://262.ecma-international.org/9.0/#sec-makemethod'
+ },
+ MakeSuperPropertyReference: {
+ url: 'https://262.ecma-international.org/9.0/#sec-makesuperpropertyreference'
+ },
+ MakeTime: {
+ url: 'https://262.ecma-international.org/9.0/#sec-maketime'
+ },
+ max: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-max'
+ },
+ 'memory-order': {
+ url: 'https://262.ecma-international.org/9.0/#sec-memory-order'
+ },
+ min: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-min'
+ },
+ MinFromTime: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-MinFromTime'
+ },
+ ModuleDeclarationEnvironmentSetup: {
+ url: 'https://262.ecma-international.org/9.0/#sec-moduledeclarationenvironmentsetup'
+ },
+ ModuleExecution: {
+ url: 'https://262.ecma-international.org/9.0/#sec-moduleexecution'
+ },
+ ModuleNamespaceCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-modulenamespacecreate'
+ },
+ modulo: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-modulo'
+ },
+ MonthFromTime: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-MonthFromTime'
+ },
+ msFromTime: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-msFromTime'
+ },
+ NewDeclarativeEnvironment: {
+ url: 'https://262.ecma-international.org/9.0/#sec-newdeclarativeenvironment'
+ },
+ NewFunctionEnvironment: {
+ url: 'https://262.ecma-international.org/9.0/#sec-newfunctionenvironment'
+ },
+ NewGlobalEnvironment: {
+ url: 'https://262.ecma-international.org/9.0/#sec-newglobalenvironment'
+ },
+ NewModuleEnvironment: {
+ url: 'https://262.ecma-international.org/9.0/#sec-newmoduleenvironment'
+ },
+ NewObjectEnvironment: {
+ url: 'https://262.ecma-international.org/9.0/#sec-newobjectenvironment'
+ },
+ NewPromiseCapability: {
+ url: 'https://262.ecma-international.org/9.0/#sec-newpromisecapability'
+ },
+ NormalCompletion: {
+ url: 'https://262.ecma-international.org/9.0/#sec-normalcompletion'
+ },
+ NumberToRawBytes: {
+ url: 'https://262.ecma-international.org/9.0/#sec-numbertorawbytes'
+ },
+ NumberToString: {
+ url: 'https://262.ecma-international.org/9.0/#sec-tostring-applied-to-the-number-type'
+ },
+ ObjectCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-objectcreate'
+ },
+ ObjectDefineProperties: {
+ url: 'https://262.ecma-international.org/9.0/#sec-objectdefineproperties'
+ },
+ OrdinaryCallBindThis: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinarycallbindthis'
+ },
+ OrdinaryCallEvaluateBody: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinarycallevaluatebody'
+ },
+ OrdinaryCreateFromConstructor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinarycreatefromconstructor'
+ },
+ OrdinaryDefineOwnProperty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinarydefineownproperty'
+ },
+ OrdinaryDelete: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinarydelete'
+ },
+ OrdinaryGet: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinaryget'
+ },
+ OrdinaryGetOwnProperty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinarygetownproperty'
+ },
+ OrdinaryGetPrototypeOf: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinarygetprototypeof'
+ },
+ OrdinaryHasInstance: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinaryhasinstance'
+ },
+ OrdinaryHasProperty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinaryhasproperty'
+ },
+ OrdinaryIsExtensible: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinaryisextensible'
+ },
+ OrdinaryOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinaryownpropertykeys'
+ },
+ OrdinaryPreventExtensions: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinarypreventextensions'
+ },
+ OrdinarySet: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinaryset'
+ },
+ OrdinarySetPrototypeOf: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinarysetprototypeof'
+ },
+ OrdinarySetWithOwnDescriptor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinarysetwithowndescriptor'
+ },
+ OrdinaryToPrimitive: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ordinarytoprimitive'
+ },
+ ParseModule: {
+ url: 'https://262.ecma-international.org/9.0/#sec-parsemodule'
+ },
+ ParseScript: {
+ url: 'https://262.ecma-international.org/9.0/#sec-parse-script'
+ },
+ PerformEval: {
+ url: 'https://262.ecma-international.org/9.0/#sec-performeval'
+ },
+ PerformPromiseAll: {
+ url: 'https://262.ecma-international.org/9.0/#sec-performpromiseall'
+ },
+ PerformPromiseRace: {
+ url: 'https://262.ecma-international.org/9.0/#sec-performpromiserace'
+ },
+ PerformPromiseThen: {
+ url: 'https://262.ecma-international.org/9.0/#sec-performpromisethen'
+ },
+ PrepareForOrdinaryCall: {
+ url: 'https://262.ecma-international.org/9.0/#sec-prepareforordinarycall'
+ },
+ PrepareForTailCall: {
+ url: 'https://262.ecma-international.org/9.0/#sec-preparefortailcall'
+ },
+ PromiseReactionJob: {
+ url: 'https://262.ecma-international.org/9.0/#sec-promisereactionjob'
+ },
+ PromiseResolve: {
+ url: 'https://262.ecma-international.org/9.0/#sec-promise-resolve'
+ },
+ PromiseResolveThenableJob: {
+ url: 'https://262.ecma-international.org/9.0/#sec-promiseresolvethenablejob'
+ },
+ ProxyCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-proxycreate'
+ },
+ PutValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-putvalue'
+ },
+ QuoteJSONString: {
+ url: 'https://262.ecma-international.org/9.0/#sec-quotejsonstring'
+ },
+ RawBytesToNumber: {
+ url: 'https://262.ecma-international.org/9.0/#sec-rawbytestonumber'
+ },
+ 'reads-bytes-from': {
+ url: 'https://262.ecma-international.org/9.0/#sec-reads-bytes-from'
+ },
+ 'reads-from': {
+ url: 'https://262.ecma-international.org/9.0/#sec-reads-from'
+ },
+ RegExpAlloc: {
+ url: 'https://262.ecma-international.org/9.0/#sec-regexpalloc'
+ },
+ RegExpBuiltinExec: {
+ url: 'https://262.ecma-international.org/9.0/#sec-regexpbuiltinexec'
+ },
+ RegExpCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-regexpcreate'
+ },
+ RegExpExec: {
+ url: 'https://262.ecma-international.org/9.0/#sec-regexpexec'
+ },
+ RegExpInitialize: {
+ url: 'https://262.ecma-international.org/9.0/#sec-regexpinitialize'
+ },
+ RejectPromise: {
+ url: 'https://262.ecma-international.org/9.0/#sec-rejectpromise'
+ },
+ RemoveWaiter: {
+ url: 'https://262.ecma-international.org/9.0/#sec-removewaiter'
+ },
+ RemoveWaiters: {
+ url: 'https://262.ecma-international.org/9.0/#sec-removewaiters'
+ },
+ RepeatMatcher: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-repeatmatcher-abstract-operation'
+ },
+ RequireObjectCoercible: {
+ url: 'https://262.ecma-international.org/9.0/#sec-requireobjectcoercible'
+ },
+ ResolveBinding: {
+ url: 'https://262.ecma-international.org/9.0/#sec-resolvebinding'
+ },
+ ResolveThisBinding: {
+ url: 'https://262.ecma-international.org/9.0/#sec-resolvethisbinding'
+ },
+ ReturnIfAbrupt: {
+ url: 'https://262.ecma-international.org/9.0/#sec-returnifabrupt'
+ },
+ RunJobs: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runjobs'
+ },
+ SameValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-samevalue'
+ },
+ SameValueNonNumber: {
+ url: 'https://262.ecma-international.org/9.0/#sec-samevaluenonnumber'
+ },
+ SameValueZero: {
+ url: 'https://262.ecma-international.org/9.0/#sec-samevaluezero'
+ },
+ ScriptEvaluation: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-scriptevaluation'
+ },
+ ScriptEvaluationJob: {
+ url: 'https://262.ecma-international.org/9.0/#sec-scriptevaluationjob'
+ },
+ SecFromTime: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-SecFromTime'
+ },
+ SerializeJSONArray: {
+ url: 'https://262.ecma-international.org/9.0/#sec-serializejsonarray'
+ },
+ SerializeJSONObject: {
+ url: 'https://262.ecma-international.org/9.0/#sec-serializejsonobject'
+ },
+ SerializeJSONProperty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-serializejsonproperty'
+ },
+ Set: {
+ url: 'https://262.ecma-international.org/9.0/#sec-set-o-p-v-throw'
+ },
+ SetDefaultGlobalBindings: {
+ url: 'https://262.ecma-international.org/9.0/#sec-setdefaultglobalbindings'
+ },
+ SetFunctionLength: {
+ url: 'https://262.ecma-international.org/9.0/#sec-setfunctionlength'
+ },
+ SetFunctionName: {
+ url: 'https://262.ecma-international.org/9.0/#sec-setfunctionname'
+ },
+ SetImmutablePrototype: {
+ url: 'https://262.ecma-international.org/9.0/#sec-set-immutable-prototype'
+ },
+ SetIntegrityLevel: {
+ url: 'https://262.ecma-international.org/9.0/#sec-setintegritylevel'
+ },
+ SetRealmGlobalObject: {
+ url: 'https://262.ecma-international.org/9.0/#sec-setrealmglobalobject'
+ },
+ SetValueInBuffer: {
+ url: 'https://262.ecma-international.org/9.0/#sec-setvalueinbuffer'
+ },
+ SetViewValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-setviewvalue'
+ },
+ SharedDataBlockEventSet: {
+ url: 'https://262.ecma-international.org/9.0/#sec-sharedatablockeventset'
+ },
+ SortCompare: {
+ url: 'https://262.ecma-international.org/9.0/#sec-sortcompare'
+ },
+ SpeciesConstructor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-speciesconstructor'
+ },
+ SplitMatch: {
+ url: 'https://262.ecma-international.org/9.0/#sec-splitmatch'
+ },
+ 'Strict Equality Comparison': {
+ url: 'https://262.ecma-international.org/9.0/#sec-strict-equality-comparison'
+ },
+ StringCreate: {
+ url: 'https://262.ecma-international.org/9.0/#sec-stringcreate'
+ },
+ StringGetOwnProperty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-stringgetownproperty'
+ },
+ Suspend: {
+ url: 'https://262.ecma-international.org/9.0/#sec-suspend'
+ },
+ SymbolDescriptiveString: {
+ url: 'https://262.ecma-international.org/9.0/#sec-symboldescriptivestring'
+ },
+ 'synchronizes-with': {
+ url: 'https://262.ecma-international.org/9.0/#sec-synchronizes-with'
+ },
+ TestIntegrityLevel: {
+ url: 'https://262.ecma-international.org/9.0/#sec-testintegritylevel'
+ },
+ thisBooleanValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-thisbooleanvalue'
+ },
+ thisNumberValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-thisnumbervalue'
+ },
+ thisStringValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-thisstringvalue'
+ },
+ thisSymbolValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-thissymbolvalue'
+ },
+ thisTimeValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-thistimevalue'
+ },
+ ThrowCompletion: {
+ url: 'https://262.ecma-international.org/9.0/#sec-throwcompletion'
+ },
+ TimeClip: {
+ url: 'https://262.ecma-international.org/9.0/#sec-timeclip'
+ },
+ TimeFromYear: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-TimeFromYear'
+ },
+ TimeString: {
+ url: 'https://262.ecma-international.org/9.0/#sec-timestring'
+ },
+ TimeWithinDay: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-TimeWithinDay'
+ },
+ TimeZoneString: {
+ url: 'https://262.ecma-international.org/9.0/#sec-timezoneestring'
+ },
+ ToBoolean: {
+ url: 'https://262.ecma-international.org/9.0/#sec-toboolean'
+ },
+ ToDateString: {
+ url: 'https://262.ecma-international.org/9.0/#sec-todatestring'
+ },
+ ToIndex: {
+ url: 'https://262.ecma-international.org/9.0/#sec-toindex'
+ },
+ ToInt16: {
+ url: 'https://262.ecma-international.org/9.0/#sec-toint16'
+ },
+ ToInt32: {
+ url: 'https://262.ecma-international.org/9.0/#sec-toint32'
+ },
+ ToInt8: {
+ url: 'https://262.ecma-international.org/9.0/#sec-toint8'
+ },
+ ToInteger: {
+ url: 'https://262.ecma-international.org/9.0/#sec-tointeger'
+ },
+ ToLength: {
+ url: 'https://262.ecma-international.org/9.0/#sec-tolength'
+ },
+ ToNumber: {
+ url: 'https://262.ecma-international.org/9.0/#sec-tonumber'
+ },
+ ToObject: {
+ url: 'https://262.ecma-international.org/9.0/#sec-toobject'
+ },
+ TopLevelModuleEvaluationJob: {
+ url: 'https://262.ecma-international.org/9.0/#sec-toplevelmoduleevaluationjob'
+ },
+ ToPrimitive: {
+ url: 'https://262.ecma-international.org/9.0/#sec-toprimitive'
+ },
+ ToPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-topropertydescriptor'
+ },
+ ToPropertyKey: {
+ url: 'https://262.ecma-international.org/9.0/#sec-topropertykey'
+ },
+ ToString: {
+ url: 'https://262.ecma-international.org/9.0/#sec-tostring'
+ },
+ ToUint16: {
+ url: 'https://262.ecma-international.org/9.0/#sec-touint16'
+ },
+ ToUint32: {
+ url: 'https://262.ecma-international.org/9.0/#sec-touint32'
+ },
+ ToUint8: {
+ url: 'https://262.ecma-international.org/9.0/#sec-touint8'
+ },
+ ToUint8Clamp: {
+ url: 'https://262.ecma-international.org/9.0/#sec-touint8clamp'
+ },
+ TriggerPromiseReactions: {
+ url: 'https://262.ecma-international.org/9.0/#sec-triggerpromisereactions'
+ },
+ Type: {
+ url: 'https://262.ecma-international.org/9.0/#sec-ecmascript-data-types-and-values'
+ },
+ TypedArrayCreate: {
+ url: 'https://262.ecma-international.org/9.0/#typedarray-create'
+ },
+ TypedArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/9.0/#typedarray-species-create'
+ },
+ UnicodeEscape: {
+ url: 'https://262.ecma-international.org/9.0/#sec-unicodeescape'
+ },
+ UnicodeMatchProperty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-unicodematchproperty-p'
+ },
+ UnicodeMatchPropertyValue: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-unicodematchpropertyvalue-p-v'
+ },
+ UpdateEmpty: {
+ url: 'https://262.ecma-international.org/9.0/#sec-updateempty'
+ },
+ UTC: {
+ url: 'https://262.ecma-international.org/9.0/#sec-utc-t'
+ },
+ UTF16Decode: {
+ url: 'https://262.ecma-international.org/9.0/#sec-utf16decode'
+ },
+ UTF16Encoding: {
+ url: 'https://262.ecma-international.org/9.0/#sec-utf16encoding'
+ },
+ ValidateAndApplyPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/9.0/#sec-validateandapplypropertydescriptor'
+ },
+ ValidateAtomicAccess: {
+ url: 'https://262.ecma-international.org/9.0/#sec-validateatomicaccess'
+ },
+ ValidateSharedIntegerTypedArray: {
+ url: 'https://262.ecma-international.org/9.0/#sec-validatesharedintegertypedarray'
+ },
+ ValidateTypedArray: {
+ url: 'https://262.ecma-international.org/9.0/#sec-validatetypedarray'
+ },
+ ValueOfReadEvent: {
+ url: 'https://262.ecma-international.org/9.0/#sec-valueofreadevent'
+ },
+ WakeWaiter: {
+ url: 'https://262.ecma-international.org/9.0/#sec-wakewaiter'
+ },
+ WeekDay: {
+ url: 'https://262.ecma-international.org/9.0/#sec-week-day'
+ },
+ WordCharacters: {
+ url: 'https://262.ecma-international.org/9.0/#sec-runtime-semantics-wordcharacters-abstract-operation'
+ },
+ YearFromTime: {
+ url: 'https://262.ecma-international.org/9.0/#eqn-YearFromTime'
+ }
};
diff --git a/node_modules/es-abstract/operations/2019.js b/node_modules/es-abstract/operations/2019.js
index 57a4be4a9..d19150c8d 100644
--- a/node_modules/es-abstract/operations/2019.js
+++ b/node_modules/es-abstract/operations/2019.js
@@ -1,355 +1,1048 @@
'use strict';
module.exports = {
- abs: 'https://262.ecma-international.org/10.0/#eqn-abs',
- 'Abstract Equality Comparison': 'https://262.ecma-international.org/10.0/#sec-abstract-equality-comparison',
- 'Abstract Relational Comparison': 'https://262.ecma-international.org/10.0/#sec-abstract-relational-comparison',
- AddEntriesFromIterable: 'https://262.ecma-international.org/10.0/#sec-add-entries-from-iterable',
- AddRestrictedFunctionProperties: 'https://262.ecma-international.org/10.0/#sec-addrestrictedfunctionproperties',
- AddWaiter: 'https://262.ecma-international.org/10.0/#sec-addwaiter',
- AdvanceStringIndex: 'https://262.ecma-international.org/10.0/#sec-advancestringindex',
- 'agent-order': 'https://262.ecma-international.org/10.0/#sec-agent-order',
- AgentCanSuspend: 'https://262.ecma-international.org/10.0/#sec-agentcansuspend',
- AgentSignifier: 'https://262.ecma-international.org/10.0/#sec-agentsignifier',
- AllocateArrayBuffer: 'https://262.ecma-international.org/10.0/#sec-allocatearraybuffer',
- AllocateSharedArrayBuffer: 'https://262.ecma-international.org/10.0/#sec-allocatesharedarraybuffer',
- AllocateTypedArray: 'https://262.ecma-international.org/10.0/#sec-allocatetypedarray',
- AllocateTypedArrayBuffer: 'https://262.ecma-international.org/10.0/#sec-allocatetypedarraybuffer',
- ArrayCreate: 'https://262.ecma-international.org/10.0/#sec-arraycreate',
- ArraySetLength: 'https://262.ecma-international.org/10.0/#sec-arraysetlength',
- ArraySpeciesCreate: 'https://262.ecma-international.org/10.0/#sec-arrayspeciescreate',
- AsyncFromSyncIteratorContinuation: 'https://262.ecma-international.org/10.0/#sec-asyncfromsynciteratorcontinuation',
- AsyncFunctionCreate: 'https://262.ecma-international.org/10.0/#sec-async-functions-abstract-operations-async-function-create',
- AsyncFunctionStart: 'https://262.ecma-international.org/10.0/#sec-async-functions-abstract-operations-async-function-start',
- AsyncGeneratorEnqueue: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorenqueue',
- AsyncGeneratorFunctionCreate: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorfunctioncreate',
- AsyncGeneratorReject: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorreject',
- AsyncGeneratorResolve: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorresolve',
- AsyncGeneratorResumeNext: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorresumenext',
- AsyncGeneratorStart: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorstart',
- AsyncGeneratorYield: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratoryield',
- AsyncIteratorClose: 'https://262.ecma-international.org/10.0/#sec-asynciteratorclose',
- AtomicLoad: 'https://262.ecma-international.org/10.0/#sec-atomicload',
- AtomicReadModifyWrite: 'https://262.ecma-international.org/10.0/#sec-atomicreadmodifywrite',
- Await: 'https://262.ecma-international.org/10.0/#await',
- BackreferenceMatcher: 'https://262.ecma-international.org/10.0/#sec-backreference-matcher',
- BlockDeclarationInstantiation: 'https://262.ecma-international.org/10.0/#sec-blockdeclarationinstantiation',
- BoundFunctionCreate: 'https://262.ecma-international.org/10.0/#sec-boundfunctioncreate',
- Call: 'https://262.ecma-international.org/10.0/#sec-call',
- Canonicalize: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-canonicalize-ch',
- CanonicalNumericIndexString: 'https://262.ecma-international.org/10.0/#sec-canonicalnumericindexstring',
- CaseClauseIsSelected: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-caseclauseisselected',
- CharacterRange: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-characterrange-abstract-operation',
- CharacterRangeOrUnion: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation',
- CharacterSetMatcher: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation',
- CloneArrayBuffer: 'https://262.ecma-international.org/10.0/#sec-clonearraybuffer',
- CompletePropertyDescriptor: 'https://262.ecma-international.org/10.0/#sec-completepropertydescriptor',
- Completion: 'https://262.ecma-international.org/10.0/#sec-completion-record-specification-type',
- ComposeWriteEventBytes: 'https://262.ecma-international.org/10.0/#sec-composewriteeventbytes',
- Construct: 'https://262.ecma-international.org/10.0/#sec-construct',
- CopyDataBlockBytes: 'https://262.ecma-international.org/10.0/#sec-copydatablockbytes',
- CopyDataProperties: 'https://262.ecma-international.org/10.0/#sec-copydataproperties',
- CreateArrayFromList: 'https://262.ecma-international.org/10.0/#sec-createarrayfromlist',
- CreateArrayIterator: 'https://262.ecma-international.org/10.0/#sec-createarrayiterator',
- CreateAsyncFromSyncIterator: 'https://262.ecma-international.org/10.0/#sec-createasyncfromsynciterator',
- CreateBuiltinFunction: 'https://262.ecma-international.org/10.0/#sec-createbuiltinfunction',
- CreateByteDataBlock: 'https://262.ecma-international.org/10.0/#sec-createbytedatablock',
- CreateDataProperty: 'https://262.ecma-international.org/10.0/#sec-createdataproperty',
- CreateDataPropertyOrThrow: 'https://262.ecma-international.org/10.0/#sec-createdatapropertyorthrow',
- CreateDynamicFunction: 'https://262.ecma-international.org/10.0/#sec-createdynamicfunction',
- CreateHTML: 'https://262.ecma-international.org/10.0/#sec-createhtml',
- CreateIntrinsics: 'https://262.ecma-international.org/10.0/#sec-createintrinsics',
- CreateIterResultObject: 'https://262.ecma-international.org/10.0/#sec-createiterresultobject',
- CreateListFromArrayLike: 'https://262.ecma-international.org/10.0/#sec-createlistfromarraylike',
- CreateListIteratorRecord: 'https://262.ecma-international.org/10.0/#sec-createlistiteratorRecord',
- CreateMapIterator: 'https://262.ecma-international.org/10.0/#sec-createmapiterator',
- CreateMappedArgumentsObject: 'https://262.ecma-international.org/10.0/#sec-createmappedargumentsobject',
- CreateMethodProperty: 'https://262.ecma-international.org/10.0/#sec-createmethodproperty',
- CreatePerIterationEnvironment: 'https://262.ecma-international.org/10.0/#sec-createperiterationenvironment',
- CreateRealm: 'https://262.ecma-international.org/10.0/#sec-createrealm',
- CreateResolvingFunctions: 'https://262.ecma-international.org/10.0/#sec-createresolvingfunctions',
- CreateSetIterator: 'https://262.ecma-international.org/10.0/#sec-createsetiterator',
- CreateSharedByteDataBlock: 'https://262.ecma-international.org/10.0/#sec-createsharedbytedatablock',
- CreateStringIterator: 'https://262.ecma-international.org/10.0/#sec-createstringiterator',
- CreateUnmappedArgumentsObject: 'https://262.ecma-international.org/10.0/#sec-createunmappedargumentsobject',
- DateFromTime: 'https://262.ecma-international.org/10.0/#sec-date-number',
- DateString: 'https://262.ecma-international.org/10.0/#sec-datestring',
- Day: 'https://262.ecma-international.org/10.0/#eqn-Day',
- DayFromYear: 'https://262.ecma-international.org/10.0/#eqn-DaysFromYear',
- DaysInYear: 'https://262.ecma-international.org/10.0/#eqn-DaysInYear',
- DayWithinYear: 'https://262.ecma-international.org/10.0/#eqn-DayWithinYear',
- Decode: 'https://262.ecma-international.org/10.0/#sec-decode',
- DefinePropertyOrThrow: 'https://262.ecma-international.org/10.0/#sec-definepropertyorthrow',
- DeletePropertyOrThrow: 'https://262.ecma-international.org/10.0/#sec-deletepropertyorthrow',
- DetachArrayBuffer: 'https://262.ecma-international.org/10.0/#sec-detacharraybuffer',
- Encode: 'https://262.ecma-international.org/10.0/#sec-encode',
- EnqueueJob: 'https://262.ecma-international.org/10.0/#sec-enqueuejob',
- EnterCriticalSection: 'https://262.ecma-international.org/10.0/#sec-entercriticalsection',
- EnumerableOwnPropertyNames: 'https://262.ecma-international.org/10.0/#sec-enumerableownpropertynames',
- EnumerateObjectProperties: 'https://262.ecma-international.org/10.0/#sec-enumerate-object-properties',
- EscapeRegExpPattern: 'https://262.ecma-international.org/10.0/#sec-escaperegexppattern',
- EvalDeclarationInstantiation: 'https://262.ecma-international.org/10.0/#sec-evaldeclarationinstantiation',
- EvaluateCall: 'https://262.ecma-international.org/10.0/#sec-evaluatecall',
- EvaluateNew: 'https://262.ecma-international.org/10.0/#sec-evaluatenew',
- EventSet: 'https://262.ecma-international.org/10.0/#sec-event-set',
- ExecuteModule: 'https://262.ecma-international.org/10.0/#sec-source-text-module-record-execute-module',
- FlattenIntoArray: 'https://262.ecma-international.org/10.0/#sec-flattenintoarray',
- floor: 'https://262.ecma-international.org/10.0/#eqn-floor',
- ForBodyEvaluation: 'https://262.ecma-international.org/10.0/#sec-forbodyevaluation',
- 'ForIn/OfBodyEvaluation': 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset',
- 'ForIn/OfHeadEvaluation': 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind',
- FromPropertyDescriptor: 'https://262.ecma-international.org/10.0/#sec-frompropertydescriptor',
- FulfillPromise: 'https://262.ecma-international.org/10.0/#sec-fulfillpromise',
- FunctionAllocate: 'https://262.ecma-international.org/10.0/#sec-functionallocate',
- FunctionCreate: 'https://262.ecma-international.org/10.0/#sec-functioncreate',
- FunctionDeclarationInstantiation: 'https://262.ecma-international.org/10.0/#sec-functiondeclarationinstantiation',
- FunctionInitialize: 'https://262.ecma-international.org/10.0/#sec-functioninitialize',
- GeneratorFunctionCreate: 'https://262.ecma-international.org/10.0/#sec-generatorfunctioncreate',
- GeneratorResume: 'https://262.ecma-international.org/10.0/#sec-generatorresume',
- GeneratorResumeAbrupt: 'https://262.ecma-international.org/10.0/#sec-generatorresumeabrupt',
- GeneratorStart: 'https://262.ecma-international.org/10.0/#sec-generatorstart',
- GeneratorValidate: 'https://262.ecma-international.org/10.0/#sec-generatorvalidate',
- GeneratorYield: 'https://262.ecma-international.org/10.0/#sec-generatoryield',
- Get: 'https://262.ecma-international.org/10.0/#sec-get-o-p',
- GetActiveScriptOrModule: 'https://262.ecma-international.org/10.0/#sec-getactivescriptormodule',
- GetBase: 'https://262.ecma-international.org/10.0/#sec-getbase',
- GetFunctionRealm: 'https://262.ecma-international.org/10.0/#sec-getfunctionrealm',
- GetGeneratorKind: 'https://262.ecma-international.org/10.0/#sec-getgeneratorkind',
- GetGlobalObject: 'https://262.ecma-international.org/10.0/#sec-getglobalobject',
- GetIdentifierReference: 'https://262.ecma-international.org/10.0/#sec-getidentifierreference',
- GetIterator: 'https://262.ecma-international.org/10.0/#sec-getiterator',
- GetMethod: 'https://262.ecma-international.org/10.0/#sec-getmethod',
- GetModifySetValueInBuffer: 'https://262.ecma-international.org/10.0/#sec-getmodifysetvalueinbuffer',
- GetModuleNamespace: 'https://262.ecma-international.org/10.0/#sec-getmodulenamespace',
- GetNewTarget: 'https://262.ecma-international.org/10.0/#sec-getnewtarget',
- GetOwnPropertyKeys: 'https://262.ecma-international.org/10.0/#sec-getownpropertykeys',
- GetPrototypeFromConstructor: 'https://262.ecma-international.org/10.0/#sec-getprototypefromconstructor',
- GetReferencedName: 'https://262.ecma-international.org/10.0/#sec-getreferencedname',
- GetSubstitution: 'https://262.ecma-international.org/10.0/#sec-getsubstitution',
- GetSuperConstructor: 'https://262.ecma-international.org/10.0/#sec-getsuperconstructor',
- GetTemplateObject: 'https://262.ecma-international.org/10.0/#sec-gettemplateobject',
- GetThisEnvironment: 'https://262.ecma-international.org/10.0/#sec-getthisenvironment',
- GetThisValue: 'https://262.ecma-international.org/10.0/#sec-getthisvalue',
- GetV: 'https://262.ecma-international.org/10.0/#sec-getv',
- GetValue: 'https://262.ecma-international.org/10.0/#sec-getvalue',
- GetValueFromBuffer: 'https://262.ecma-international.org/10.0/#sec-getvaluefrombuffer',
- GetViewValue: 'https://262.ecma-international.org/10.0/#sec-getviewvalue',
- GetWaiterList: 'https://262.ecma-international.org/10.0/#sec-getwaiterlist',
- GlobalDeclarationInstantiation: 'https://262.ecma-international.org/10.0/#sec-globaldeclarationinstantiation',
- 'happens-before': 'https://262.ecma-international.org/10.0/#sec-happens-before',
- HasOwnProperty: 'https://262.ecma-international.org/10.0/#sec-hasownproperty',
- HasPrimitiveBase: 'https://262.ecma-international.org/10.0/#sec-hasprimitivebase',
- HasProperty: 'https://262.ecma-international.org/10.0/#sec-hasproperty',
- 'host-synchronizes-with': 'https://262.ecma-international.org/10.0/#sec-host-synchronizes-with',
- HostEnsureCanCompileStrings: 'https://262.ecma-international.org/10.0/#sec-hostensurecancompilestrings',
- HostEventSet: 'https://262.ecma-international.org/10.0/#sec-hosteventset',
- HostPromiseRejectionTracker: 'https://262.ecma-international.org/10.0/#sec-host-promise-rejection-tracker',
- HostReportErrors: 'https://262.ecma-international.org/10.0/#sec-host-report-errors',
- HostResolveImportedModule: 'https://262.ecma-international.org/10.0/#sec-hostresolveimportedmodule',
- HourFromTime: 'https://262.ecma-international.org/10.0/#eqn-HourFromTime',
- IfAbruptRejectPromise: 'https://262.ecma-international.org/10.0/#sec-ifabruptrejectpromise',
- ImportedLocalNames: 'https://262.ecma-international.org/10.0/#sec-importedlocalnames',
- InitializeBoundName: 'https://262.ecma-international.org/10.0/#sec-initializeboundname',
- InitializeEnvironment: 'https://262.ecma-international.org/10.0/#sec-source-text-module-record-initialize-environment',
- InitializeHostDefinedRealm: 'https://262.ecma-international.org/10.0/#sec-initializehostdefinedrealm',
- InitializeReferencedBinding: 'https://262.ecma-international.org/10.0/#sec-initializereferencedbinding',
- InLeapYear: 'https://262.ecma-international.org/10.0/#eqn-InLeapYear',
- InnerModuleEvaluation: 'https://262.ecma-international.org/10.0/#sec-innermoduleevaluation',
- InnerModuleInstantiation: 'https://262.ecma-international.org/10.0/#sec-innermoduleinstantiation',
- InstanceofOperator: 'https://262.ecma-international.org/10.0/#sec-instanceofoperator',
- IntegerIndexedElementGet: 'https://262.ecma-international.org/10.0/#sec-integerindexedelementget',
- IntegerIndexedElementSet: 'https://262.ecma-international.org/10.0/#sec-integerindexedelementset',
- IntegerIndexedObjectCreate: 'https://262.ecma-international.org/10.0/#sec-integerindexedobjectcreate',
- InternalizeJSONProperty: 'https://262.ecma-international.org/10.0/#sec-internalizejsonproperty',
- Invoke: 'https://262.ecma-international.org/10.0/#sec-invoke',
- IsAccessorDescriptor: 'https://262.ecma-international.org/10.0/#sec-isaccessordescriptor',
- IsAnonymousFunctionDefinition: 'https://262.ecma-international.org/10.0/#sec-isanonymousfunctiondefinition',
- IsArray: 'https://262.ecma-international.org/10.0/#sec-isarray',
- IsCallable: 'https://262.ecma-international.org/10.0/#sec-iscallable',
- IsCompatiblePropertyDescriptor: 'https://262.ecma-international.org/10.0/#sec-iscompatiblepropertydescriptor',
- IsConcatSpreadable: 'https://262.ecma-international.org/10.0/#sec-isconcatspreadable',
- IsConstructor: 'https://262.ecma-international.org/10.0/#sec-isconstructor',
- IsDataDescriptor: 'https://262.ecma-international.org/10.0/#sec-isdatadescriptor',
- IsDetachedBuffer: 'https://262.ecma-international.org/10.0/#sec-isdetachedbuffer',
- IsExtensible: 'https://262.ecma-international.org/10.0/#sec-isextensible-o',
- IsGenericDescriptor: 'https://262.ecma-international.org/10.0/#sec-isgenericdescriptor',
- IsInTailPosition: 'https://262.ecma-international.org/10.0/#sec-isintailposition',
- IsInteger: 'https://262.ecma-international.org/10.0/#sec-isinteger',
- IsLabelledFunction: 'https://262.ecma-international.org/10.0/#sec-islabelledfunction',
- IsPromise: 'https://262.ecma-international.org/10.0/#sec-ispromise',
- IsPropertyKey: 'https://262.ecma-international.org/10.0/#sec-ispropertykey',
- IsPropertyReference: 'https://262.ecma-international.org/10.0/#sec-ispropertyreference',
- IsRegExp: 'https://262.ecma-international.org/10.0/#sec-isregexp',
- IsSharedArrayBuffer: 'https://262.ecma-international.org/10.0/#sec-issharedarraybuffer',
- IsStrictReference: 'https://262.ecma-international.org/10.0/#sec-isstrictreference',
- IsStringPrefix: 'https://262.ecma-international.org/10.0/#sec-isstringprefix',
- IsSuperReference: 'https://262.ecma-international.org/10.0/#sec-issuperreference',
- IsUnresolvableReference: 'https://262.ecma-international.org/10.0/#sec-isunresolvablereference',
- IsWordChar: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-iswordchar-abstract-operation',
- IterableToList: 'https://262.ecma-international.org/10.0/#sec-iterabletolist',
- IteratorClose: 'https://262.ecma-international.org/10.0/#sec-iteratorclose',
- IteratorComplete: 'https://262.ecma-international.org/10.0/#sec-iteratorcomplete',
- IteratorNext: 'https://262.ecma-international.org/10.0/#sec-iteratornext',
- IteratorStep: 'https://262.ecma-international.org/10.0/#sec-iteratorstep',
- IteratorValue: 'https://262.ecma-international.org/10.0/#sec-iteratorvalue',
- LeaveCriticalSection: 'https://262.ecma-international.org/10.0/#sec-leavecriticalsection',
- LocalTime: 'https://262.ecma-international.org/10.0/#sec-localtime',
- LoopContinues: 'https://262.ecma-international.org/10.0/#sec-loopcontinues',
- MakeArgGetter: 'https://262.ecma-international.org/10.0/#sec-makearggetter',
- MakeArgSetter: 'https://262.ecma-international.org/10.0/#sec-makeargsetter',
- MakeClassConstructor: 'https://262.ecma-international.org/10.0/#sec-makeclassconstructor',
- MakeConstructor: 'https://262.ecma-international.org/10.0/#sec-makeconstructor',
- MakeDate: 'https://262.ecma-international.org/10.0/#sec-makedate',
- MakeDay: 'https://262.ecma-international.org/10.0/#sec-makeday',
- MakeMethod: 'https://262.ecma-international.org/10.0/#sec-makemethod',
- MakeSuperPropertyReference: 'https://262.ecma-international.org/10.0/#sec-makesuperpropertyreference',
- MakeTime: 'https://262.ecma-international.org/10.0/#sec-maketime',
- max: 'https://262.ecma-international.org/10.0/#eqn-max',
- 'memory-order': 'https://262.ecma-international.org/10.0/#sec-memory-order',
- min: 'https://262.ecma-international.org/10.0/#eqn-min',
- MinFromTime: 'https://262.ecma-international.org/10.0/#eqn-MinFromTime',
- ModuleNamespaceCreate: 'https://262.ecma-international.org/10.0/#sec-modulenamespacecreate',
- modulo: 'https://262.ecma-international.org/10.0/#eqn-modulo',
- MonthFromTime: 'https://262.ecma-international.org/10.0/#eqn-MonthFromTime',
- msFromTime: 'https://262.ecma-international.org/10.0/#eqn-msFromTime',
- NewDeclarativeEnvironment: 'https://262.ecma-international.org/10.0/#sec-newdeclarativeenvironment',
- NewFunctionEnvironment: 'https://262.ecma-international.org/10.0/#sec-newfunctionenvironment',
- NewGlobalEnvironment: 'https://262.ecma-international.org/10.0/#sec-newglobalenvironment',
- NewModuleEnvironment: 'https://262.ecma-international.org/10.0/#sec-newmoduleenvironment',
- NewObjectEnvironment: 'https://262.ecma-international.org/10.0/#sec-newobjectenvironment',
- NewPromiseCapability: 'https://262.ecma-international.org/10.0/#sec-newpromisecapability',
- NormalCompletion: 'https://262.ecma-international.org/10.0/#sec-normalcompletion',
- NotifyWaiter: 'https://262.ecma-international.org/10.0/#sec-notifywaiter',
- NumberToRawBytes: 'https://262.ecma-international.org/10.0/#sec-numbertorawbytes',
- NumberToString: 'https://262.ecma-international.org/10.0/#sec-tostring-applied-to-the-number-type',
- ObjectCreate: 'https://262.ecma-international.org/10.0/#sec-objectcreate',
- ObjectDefineProperties: 'https://262.ecma-international.org/10.0/#sec-objectdefineproperties',
- OrdinaryCallBindThis: 'https://262.ecma-international.org/10.0/#sec-ordinarycallbindthis',
- OrdinaryCallEvaluateBody: 'https://262.ecma-international.org/10.0/#sec-ordinarycallevaluatebody',
- OrdinaryCreateFromConstructor: 'https://262.ecma-international.org/10.0/#sec-ordinarycreatefromconstructor',
- OrdinaryDefineOwnProperty: 'https://262.ecma-international.org/10.0/#sec-ordinarydefineownproperty',
- OrdinaryDelete: 'https://262.ecma-international.org/10.0/#sec-ordinarydelete',
- OrdinaryGet: 'https://262.ecma-international.org/10.0/#sec-ordinaryget',
- OrdinaryGetOwnProperty: 'https://262.ecma-international.org/10.0/#sec-ordinarygetownproperty',
- OrdinaryGetPrototypeOf: 'https://262.ecma-international.org/10.0/#sec-ordinarygetprototypeof',
- OrdinaryHasInstance: 'https://262.ecma-international.org/10.0/#sec-ordinaryhasinstance',
- OrdinaryHasProperty: 'https://262.ecma-international.org/10.0/#sec-ordinaryhasproperty',
- OrdinaryIsExtensible: 'https://262.ecma-international.org/10.0/#sec-ordinaryisextensible',
- OrdinaryOwnPropertyKeys: 'https://262.ecma-international.org/10.0/#sec-ordinaryownpropertykeys',
- OrdinaryPreventExtensions: 'https://262.ecma-international.org/10.0/#sec-ordinarypreventextensions',
- OrdinarySet: 'https://262.ecma-international.org/10.0/#sec-ordinaryset',
- OrdinarySetPrototypeOf: 'https://262.ecma-international.org/10.0/#sec-ordinarysetprototypeof',
- OrdinarySetWithOwnDescriptor: 'https://262.ecma-international.org/10.0/#sec-ordinarysetwithowndescriptor',
- OrdinaryToPrimitive: 'https://262.ecma-international.org/10.0/#sec-ordinarytoprimitive',
- ParseModule: 'https://262.ecma-international.org/10.0/#sec-parsemodule',
- ParseScript: 'https://262.ecma-international.org/10.0/#sec-parse-script',
- PerformEval: 'https://262.ecma-international.org/10.0/#sec-performeval',
- PerformPromiseAll: 'https://262.ecma-international.org/10.0/#sec-performpromiseall',
- PerformPromiseRace: 'https://262.ecma-international.org/10.0/#sec-performpromiserace',
- PerformPromiseThen: 'https://262.ecma-international.org/10.0/#sec-performpromisethen',
- PrepareForOrdinaryCall: 'https://262.ecma-international.org/10.0/#sec-prepareforordinarycall',
- PrepareForTailCall: 'https://262.ecma-international.org/10.0/#sec-preparefortailcall',
- PromiseReactionJob: 'https://262.ecma-international.org/10.0/#sec-promisereactionjob',
- PromiseResolve: 'https://262.ecma-international.org/10.0/#sec-promise-resolve',
- PromiseResolveThenableJob: 'https://262.ecma-international.org/10.0/#sec-promiseresolvethenablejob',
- ProxyCreate: 'https://262.ecma-international.org/10.0/#sec-proxycreate',
- PutValue: 'https://262.ecma-international.org/10.0/#sec-putvalue',
- QuoteJSONString: 'https://262.ecma-international.org/10.0/#sec-quotejsonstring',
- RawBytesToNumber: 'https://262.ecma-international.org/10.0/#sec-rawbytestonumber',
- 'reads-bytes-from': 'https://262.ecma-international.org/10.0/#sec-reads-bytes-from',
- 'reads-from': 'https://262.ecma-international.org/10.0/#sec-reads-from',
- RegExpAlloc: 'https://262.ecma-international.org/10.0/#sec-regexpalloc',
- RegExpBuiltinExec: 'https://262.ecma-international.org/10.0/#sec-regexpbuiltinexec',
- RegExpCreate: 'https://262.ecma-international.org/10.0/#sec-regexpcreate',
- RegExpExec: 'https://262.ecma-international.org/10.0/#sec-regexpexec',
- RegExpInitialize: 'https://262.ecma-international.org/10.0/#sec-regexpinitialize',
- RejectPromise: 'https://262.ecma-international.org/10.0/#sec-rejectpromise',
- RemoveWaiter: 'https://262.ecma-international.org/10.0/#sec-removewaiter',
- RemoveWaiters: 'https://262.ecma-international.org/10.0/#sec-removewaiters',
- RepeatMatcher: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-repeatmatcher-abstract-operation',
- RequireObjectCoercible: 'https://262.ecma-international.org/10.0/#sec-requireobjectcoercible',
- ResolveBinding: 'https://262.ecma-international.org/10.0/#sec-resolvebinding',
- ResolveThisBinding: 'https://262.ecma-international.org/10.0/#sec-resolvethisbinding',
- ReturnIfAbrupt: 'https://262.ecma-international.org/10.0/#sec-returnifabrupt',
- RunJobs: 'https://262.ecma-international.org/10.0/#sec-runjobs',
- SameValue: 'https://262.ecma-international.org/10.0/#sec-samevalue',
- SameValueNonNumber: 'https://262.ecma-international.org/10.0/#sec-samevaluenonnumber',
- SameValueZero: 'https://262.ecma-international.org/10.0/#sec-samevaluezero',
- ScriptEvaluation: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-scriptevaluation',
- ScriptEvaluationJob: 'https://262.ecma-international.org/10.0/#sec-scriptevaluationjob',
- SecFromTime: 'https://262.ecma-international.org/10.0/#eqn-SecFromTime',
- SerializeJSONArray: 'https://262.ecma-international.org/10.0/#sec-serializejsonarray',
- SerializeJSONObject: 'https://262.ecma-international.org/10.0/#sec-serializejsonobject',
- SerializeJSONProperty: 'https://262.ecma-international.org/10.0/#sec-serializejsonproperty',
- Set: 'https://262.ecma-international.org/10.0/#sec-set-o-p-v-throw',
- SetDefaultGlobalBindings: 'https://262.ecma-international.org/10.0/#sec-setdefaultglobalbindings',
- SetFunctionLength: 'https://262.ecma-international.org/10.0/#sec-setfunctionlength',
- SetFunctionName: 'https://262.ecma-international.org/10.0/#sec-setfunctionname',
- SetImmutablePrototype: 'https://262.ecma-international.org/10.0/#sec-set-immutable-prototype',
- SetIntegrityLevel: 'https://262.ecma-international.org/10.0/#sec-setintegritylevel',
- SetRealmGlobalObject: 'https://262.ecma-international.org/10.0/#sec-setrealmglobalobject',
- SetValueInBuffer: 'https://262.ecma-international.org/10.0/#sec-setvalueinbuffer',
- SetViewValue: 'https://262.ecma-international.org/10.0/#sec-setviewvalue',
- SharedDataBlockEventSet: 'https://262.ecma-international.org/10.0/#sec-sharedatablockeventset',
- SortCompare: 'https://262.ecma-international.org/10.0/#sec-sortcompare',
- SpeciesConstructor: 'https://262.ecma-international.org/10.0/#sec-speciesconstructor',
- SplitMatch: 'https://262.ecma-international.org/10.0/#sec-splitmatch',
- 'Strict Equality Comparison': 'https://262.ecma-international.org/10.0/#sec-strict-equality-comparison',
- StringCreate: 'https://262.ecma-international.org/10.0/#sec-stringcreate',
- StringGetOwnProperty: 'https://262.ecma-international.org/10.0/#sec-stringgetownproperty',
- Suspend: 'https://262.ecma-international.org/10.0/#sec-suspend',
- SymbolDescriptiveString: 'https://262.ecma-international.org/10.0/#sec-symboldescriptivestring',
- SynchronizeEventSet: 'https://262.ecma-international.org/10.0/#sec-synchronizeeventset',
- 'synchronizes-with': 'https://262.ecma-international.org/10.0/#sec-synchronizes-with',
- TestIntegrityLevel: 'https://262.ecma-international.org/10.0/#sec-testintegritylevel',
- thisBooleanValue: 'https://262.ecma-international.org/10.0/#sec-thisbooleanvalue',
- thisNumberValue: 'https://262.ecma-international.org/10.0/#sec-thisnumbervalue',
- thisStringValue: 'https://262.ecma-international.org/10.0/#sec-thisstringvalue',
- thisSymbolValue: 'https://262.ecma-international.org/10.0/#sec-thissymbolvalue',
- thisTimeValue: 'https://262.ecma-international.org/10.0/#sec-thistimevalue',
- ThrowCompletion: 'https://262.ecma-international.org/10.0/#sec-throwcompletion',
- TimeClip: 'https://262.ecma-international.org/10.0/#sec-timeclip',
- TimeFromYear: 'https://262.ecma-international.org/10.0/#eqn-TimeFromYear',
- TimeString: 'https://262.ecma-international.org/10.0/#sec-timestring',
- TimeWithinDay: 'https://262.ecma-international.org/10.0/#eqn-TimeWithinDay',
- TimeZoneString: 'https://262.ecma-international.org/10.0/#sec-timezoneestring',
- ToBoolean: 'https://262.ecma-international.org/10.0/#sec-toboolean',
- ToDateString: 'https://262.ecma-international.org/10.0/#sec-todatestring',
- ToIndex: 'https://262.ecma-international.org/10.0/#sec-toindex',
- ToInt16: 'https://262.ecma-international.org/10.0/#sec-toint16',
- ToInt32: 'https://262.ecma-international.org/10.0/#sec-toint32',
- ToInt8: 'https://262.ecma-international.org/10.0/#sec-toint8',
- ToInteger: 'https://262.ecma-international.org/10.0/#sec-tointeger',
- ToLength: 'https://262.ecma-international.org/10.0/#sec-tolength',
- ToNumber: 'https://262.ecma-international.org/10.0/#sec-tonumber',
- ToObject: 'https://262.ecma-international.org/10.0/#sec-toobject',
- TopLevelModuleEvaluationJob: 'https://262.ecma-international.org/10.0/#sec-toplevelmoduleevaluationjob',
- ToPrimitive: 'https://262.ecma-international.org/10.0/#sec-toprimitive',
- ToPropertyDescriptor: 'https://262.ecma-international.org/10.0/#sec-topropertydescriptor',
- ToPropertyKey: 'https://262.ecma-international.org/10.0/#sec-topropertykey',
- ToString: 'https://262.ecma-international.org/10.0/#sec-tostring',
- ToUint16: 'https://262.ecma-international.org/10.0/#sec-touint16',
- ToUint32: 'https://262.ecma-international.org/10.0/#sec-touint32',
- ToUint8: 'https://262.ecma-international.org/10.0/#sec-touint8',
- ToUint8Clamp: 'https://262.ecma-international.org/10.0/#sec-touint8clamp',
- TriggerPromiseReactions: 'https://262.ecma-international.org/10.0/#sec-triggerpromisereactions',
- TrimString: 'https://262.ecma-international.org/10.0/#sec-trimstring',
- Type: 'https://262.ecma-international.org/10.0/#sec-ecmascript-data-types-and-values',
- TypedArrayCreate: 'https://262.ecma-international.org/10.0/#typedarray-create',
- TypedArraySpeciesCreate: 'https://262.ecma-international.org/10.0/#typedarray-species-create',
- UnicodeEscape: 'https://262.ecma-international.org/10.0/#sec-unicodeescape',
- UnicodeMatchProperty: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-unicodematchproperty-p',
- UnicodeMatchPropertyValue: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-unicodematchpropertyvalue-p-v',
- UpdateEmpty: 'https://262.ecma-international.org/10.0/#sec-updateempty',
- UTC: 'https://262.ecma-international.org/10.0/#sec-utc-t',
- UTF16Decode: 'https://262.ecma-international.org/10.0/#sec-utf16decode',
- UTF16Encoding: 'https://262.ecma-international.org/10.0/#sec-utf16encoding',
- ValidateAndApplyPropertyDescriptor: 'https://262.ecma-international.org/10.0/#sec-validateandapplypropertydescriptor',
- ValidateAtomicAccess: 'https://262.ecma-international.org/10.0/#sec-validateatomicaccess',
- ValidateSharedIntegerTypedArray: 'https://262.ecma-international.org/10.0/#sec-validatesharedintegertypedarray',
- ValidateTypedArray: 'https://262.ecma-international.org/10.0/#sec-validatetypedarray',
- ValueOfReadEvent: 'https://262.ecma-international.org/10.0/#sec-valueofreadevent',
- WeekDay: 'https://262.ecma-international.org/10.0/#sec-week-day',
- WordCharacters: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-wordcharacters-abstract-operation',
- YearFromTime: 'https://262.ecma-international.org/10.0/#eqn-YearFromTime'
+ abs: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-abs'
+ },
+ 'Abstract Equality Comparison': {
+ url: 'https://262.ecma-international.org/10.0/#sec-abstract-equality-comparison'
+ },
+ 'Abstract Relational Comparison': {
+ url: 'https://262.ecma-international.org/10.0/#sec-abstract-relational-comparison'
+ },
+ AddEntriesFromIterable: {
+ url: 'https://262.ecma-international.org/10.0/#sec-add-entries-from-iterable'
+ },
+ AddRestrictedFunctionProperties: {
+ url: 'https://262.ecma-international.org/10.0/#sec-addrestrictedfunctionproperties'
+ },
+ AddWaiter: {
+ url: 'https://262.ecma-international.org/10.0/#sec-addwaiter'
+ },
+ AdvanceStringIndex: {
+ url: 'https://262.ecma-international.org/10.0/#sec-advancestringindex'
+ },
+ 'agent-order': {
+ url: 'https://262.ecma-international.org/10.0/#sec-agent-order'
+ },
+ AgentCanSuspend: {
+ url: 'https://262.ecma-international.org/10.0/#sec-agentcansuspend'
+ },
+ AgentSignifier: {
+ url: 'https://262.ecma-international.org/10.0/#sec-agentsignifier'
+ },
+ AllocateArrayBuffer: {
+ url: 'https://262.ecma-international.org/10.0/#sec-allocatearraybuffer'
+ },
+ AllocateSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/10.0/#sec-allocatesharedarraybuffer'
+ },
+ AllocateTypedArray: {
+ url: 'https://262.ecma-international.org/10.0/#sec-allocatetypedarray'
+ },
+ AllocateTypedArrayBuffer: {
+ url: 'https://262.ecma-international.org/10.0/#sec-allocatetypedarraybuffer'
+ },
+ ArrayCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-arraycreate'
+ },
+ ArraySetLength: {
+ url: 'https://262.ecma-international.org/10.0/#sec-arraysetlength'
+ },
+ ArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-arrayspeciescreate'
+ },
+ AsyncFromSyncIteratorContinuation: {
+ url: 'https://262.ecma-international.org/10.0/#sec-asyncfromsynciteratorcontinuation'
+ },
+ AsyncFunctionCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-async-functions-abstract-operations-async-function-create'
+ },
+ AsyncFunctionStart: {
+ url: 'https://262.ecma-international.org/10.0/#sec-async-functions-abstract-operations-async-function-start'
+ },
+ AsyncGeneratorEnqueue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorenqueue'
+ },
+ AsyncGeneratorFunctionCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorfunctioncreate'
+ },
+ AsyncGeneratorReject: {
+ url: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorreject'
+ },
+ AsyncGeneratorResolve: {
+ url: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorresolve'
+ },
+ AsyncGeneratorResumeNext: {
+ url: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorresumenext'
+ },
+ AsyncGeneratorStart: {
+ url: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratorstart'
+ },
+ AsyncGeneratorYield: {
+ url: 'https://262.ecma-international.org/10.0/#sec-asyncgeneratoryield'
+ },
+ AsyncIteratorClose: {
+ url: 'https://262.ecma-international.org/10.0/#sec-asynciteratorclose'
+ },
+ AtomicLoad: {
+ url: 'https://262.ecma-international.org/10.0/#sec-atomicload'
+ },
+ AtomicReadModifyWrite: {
+ url: 'https://262.ecma-international.org/10.0/#sec-atomicreadmodifywrite'
+ },
+ Await: {
+ url: 'https://262.ecma-international.org/10.0/#await'
+ },
+ BackreferenceMatcher: {
+ url: 'https://262.ecma-international.org/10.0/#sec-backreference-matcher'
+ },
+ BlockDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/10.0/#sec-blockdeclarationinstantiation'
+ },
+ BoundFunctionCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-boundfunctioncreate'
+ },
+ Call: {
+ url: 'https://262.ecma-international.org/10.0/#sec-call'
+ },
+ Canonicalize: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-canonicalize-ch'
+ },
+ CanonicalNumericIndexString: {
+ url: 'https://262.ecma-international.org/10.0/#sec-canonicalnumericindexstring'
+ },
+ CaseClauseIsSelected: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-caseclauseisselected'
+ },
+ CharacterRange: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-characterrange-abstract-operation'
+ },
+ CharacterRangeOrUnion: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation'
+ },
+ CharacterSetMatcher: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation'
+ },
+ CloneArrayBuffer: {
+ url: 'https://262.ecma-international.org/10.0/#sec-clonearraybuffer'
+ },
+ CompletePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-completepropertydescriptor'
+ },
+ Completion: {
+ url: 'https://262.ecma-international.org/10.0/#sec-completion-record-specification-type'
+ },
+ CompletionRecord: {
+ url: 'https://262.ecma-international.org/10.0/#sec-completion-record-specification-type'
+ },
+ ComposeWriteEventBytes: {
+ url: 'https://262.ecma-international.org/10.0/#sec-composewriteeventbytes'
+ },
+ Construct: {
+ url: 'https://262.ecma-international.org/10.0/#sec-construct'
+ },
+ CopyDataBlockBytes: {
+ url: 'https://262.ecma-international.org/10.0/#sec-copydatablockbytes'
+ },
+ CopyDataProperties: {
+ url: 'https://262.ecma-international.org/10.0/#sec-copydataproperties'
+ },
+ CreateArrayFromList: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createarrayfromlist'
+ },
+ CreateArrayIterator: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createarrayiterator'
+ },
+ CreateAsyncFromSyncIterator: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createasyncfromsynciterator'
+ },
+ CreateBuiltinFunction: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createbuiltinfunction'
+ },
+ CreateByteDataBlock: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createbytedatablock'
+ },
+ CreateDataProperty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createdataproperty'
+ },
+ CreateDataPropertyOrThrow: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createdatapropertyorthrow'
+ },
+ CreateDynamicFunction: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createdynamicfunction'
+ },
+ CreateHTML: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createhtml'
+ },
+ CreateIntrinsics: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createintrinsics'
+ },
+ CreateIterResultObject: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createiterresultobject'
+ },
+ CreateListFromArrayLike: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createlistfromarraylike'
+ },
+ CreateListIteratorRecord: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createlistiteratorRecord'
+ },
+ CreateMapIterator: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createmapiterator'
+ },
+ CreateMappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createmappedargumentsobject'
+ },
+ CreateMethodProperty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createmethodproperty'
+ },
+ CreatePerIterationEnvironment: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createperiterationenvironment'
+ },
+ CreateRealm: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createrealm'
+ },
+ CreateResolvingFunctions: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createresolvingfunctions'
+ },
+ CreateSetIterator: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createsetiterator'
+ },
+ CreateSharedByteDataBlock: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createsharedbytedatablock'
+ },
+ CreateStringIterator: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createstringiterator'
+ },
+ CreateUnmappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/10.0/#sec-createunmappedargumentsobject'
+ },
+ DateFromTime: {
+ url: 'https://262.ecma-international.org/10.0/#sec-date-number'
+ },
+ DateString: {
+ url: 'https://262.ecma-international.org/10.0/#sec-datestring'
+ },
+ Day: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-Day'
+ },
+ DayFromYear: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-DaysFromYear'
+ },
+ DaysInYear: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-DaysInYear'
+ },
+ DayWithinYear: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-DayWithinYear'
+ },
+ Decode: {
+ url: 'https://262.ecma-international.org/10.0/#sec-decode'
+ },
+ DefinePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/10.0/#sec-definepropertyorthrow'
+ },
+ DeletePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/10.0/#sec-deletepropertyorthrow'
+ },
+ DetachArrayBuffer: {
+ url: 'https://262.ecma-international.org/10.0/#sec-detacharraybuffer'
+ },
+ Encode: {
+ url: 'https://262.ecma-international.org/10.0/#sec-encode'
+ },
+ EnqueueJob: {
+ url: 'https://262.ecma-international.org/10.0/#sec-enqueuejob'
+ },
+ EnterCriticalSection: {
+ url: 'https://262.ecma-international.org/10.0/#sec-entercriticalsection'
+ },
+ EnumerableOwnPropertyNames: {
+ url: 'https://262.ecma-international.org/10.0/#sec-enumerableownpropertynames'
+ },
+ EnumerateObjectProperties: {
+ url: 'https://262.ecma-international.org/10.0/#sec-enumerate-object-properties'
+ },
+ EscapeRegExpPattern: {
+ url: 'https://262.ecma-international.org/10.0/#sec-escaperegexppattern'
+ },
+ EvalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/10.0/#sec-evaldeclarationinstantiation'
+ },
+ EvaluateCall: {
+ url: 'https://262.ecma-international.org/10.0/#sec-evaluatecall'
+ },
+ EvaluateNew: {
+ url: 'https://262.ecma-international.org/10.0/#sec-evaluatenew'
+ },
+ EventSet: {
+ url: 'https://262.ecma-international.org/10.0/#sec-event-set'
+ },
+ ExecuteModule: {
+ url: 'https://262.ecma-international.org/10.0/#sec-source-text-module-record-execute-module'
+ },
+ FlattenIntoArray: {
+ url: 'https://262.ecma-international.org/10.0/#sec-flattenintoarray'
+ },
+ floor: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-floor'
+ },
+ ForBodyEvaluation: {
+ url: 'https://262.ecma-international.org/10.0/#sec-forbodyevaluation'
+ },
+ 'ForIn/OfBodyEvaluation': {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset'
+ },
+ 'ForIn/OfHeadEvaluation': {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind'
+ },
+ FromPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-frompropertydescriptor'
+ },
+ FulfillPromise: {
+ url: 'https://262.ecma-international.org/10.0/#sec-fulfillpromise'
+ },
+ FunctionAllocate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-functionallocate'
+ },
+ FunctionCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-functioncreate'
+ },
+ FunctionDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/10.0/#sec-functiondeclarationinstantiation'
+ },
+ FunctionInitialize: {
+ url: 'https://262.ecma-international.org/10.0/#sec-functioninitialize'
+ },
+ GeneratorFunctionCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-generatorfunctioncreate'
+ },
+ GeneratorResume: {
+ url: 'https://262.ecma-international.org/10.0/#sec-generatorresume'
+ },
+ GeneratorResumeAbrupt: {
+ url: 'https://262.ecma-international.org/10.0/#sec-generatorresumeabrupt'
+ },
+ GeneratorStart: {
+ url: 'https://262.ecma-international.org/10.0/#sec-generatorstart'
+ },
+ GeneratorValidate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-generatorvalidate'
+ },
+ GeneratorYield: {
+ url: 'https://262.ecma-international.org/10.0/#sec-generatoryield'
+ },
+ Get: {
+ url: 'https://262.ecma-international.org/10.0/#sec-get-o-p'
+ },
+ GetActiveScriptOrModule: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getactivescriptormodule'
+ },
+ GetBase: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getbase'
+ },
+ GetFunctionRealm: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getfunctionrealm'
+ },
+ GetGeneratorKind: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getgeneratorkind'
+ },
+ GetGlobalObject: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getglobalobject'
+ },
+ GetIdentifierReference: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getidentifierreference'
+ },
+ GetIterator: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getiterator'
+ },
+ GetMethod: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getmethod'
+ },
+ GetModifySetValueInBuffer: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getmodifysetvalueinbuffer'
+ },
+ GetModuleNamespace: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getmodulenamespace'
+ },
+ GetNewTarget: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getnewtarget'
+ },
+ GetOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getownpropertykeys'
+ },
+ GetPrototypeFromConstructor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getprototypefromconstructor'
+ },
+ GetReferencedName: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getreferencedname'
+ },
+ GetSubstitution: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getsubstitution'
+ },
+ GetSuperConstructor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getsuperconstructor'
+ },
+ GetTemplateObject: {
+ url: 'https://262.ecma-international.org/10.0/#sec-gettemplateobject'
+ },
+ GetThisEnvironment: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getthisenvironment'
+ },
+ GetThisValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getthisvalue'
+ },
+ GetV: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getv'
+ },
+ GetValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getvalue'
+ },
+ GetValueFromBuffer: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getvaluefrombuffer'
+ },
+ GetViewValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getviewvalue'
+ },
+ GetWaiterList: {
+ url: 'https://262.ecma-international.org/10.0/#sec-getwaiterlist'
+ },
+ GlobalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/10.0/#sec-globaldeclarationinstantiation'
+ },
+ 'happens-before': {
+ url: 'https://262.ecma-international.org/10.0/#sec-happens-before'
+ },
+ HasOwnProperty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-hasownproperty'
+ },
+ HasPrimitiveBase: {
+ url: 'https://262.ecma-international.org/10.0/#sec-hasprimitivebase'
+ },
+ HasProperty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-hasproperty'
+ },
+ 'host-synchronizes-with': {
+ url: 'https://262.ecma-international.org/10.0/#sec-host-synchronizes-with'
+ },
+ HostEventSet: {
+ url: 'https://262.ecma-international.org/10.0/#sec-hosteventset'
+ },
+ HourFromTime: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-HourFromTime'
+ },
+ IfAbruptRejectPromise: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ifabruptrejectpromise'
+ },
+ ImportedLocalNames: {
+ url: 'https://262.ecma-international.org/10.0/#sec-importedlocalnames'
+ },
+ InitializeBoundName: {
+ url: 'https://262.ecma-international.org/10.0/#sec-initializeboundname'
+ },
+ InitializeEnvironment: {
+ url: 'https://262.ecma-international.org/10.0/#sec-source-text-module-record-initialize-environment'
+ },
+ InitializeHostDefinedRealm: {
+ url: 'https://262.ecma-international.org/10.0/#sec-initializehostdefinedrealm'
+ },
+ InitializeReferencedBinding: {
+ url: 'https://262.ecma-international.org/10.0/#sec-initializereferencedbinding'
+ },
+ InLeapYear: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-InLeapYear'
+ },
+ InnerModuleEvaluation: {
+ url: 'https://262.ecma-international.org/10.0/#sec-innermoduleevaluation'
+ },
+ InnerModuleInstantiation: {
+ url: 'https://262.ecma-international.org/10.0/#sec-innermoduleinstantiation'
+ },
+ InstanceofOperator: {
+ url: 'https://262.ecma-international.org/10.0/#sec-instanceofoperator'
+ },
+ IntegerIndexedElementGet: {
+ url: 'https://262.ecma-international.org/10.0/#sec-integerindexedelementget'
+ },
+ IntegerIndexedElementSet: {
+ url: 'https://262.ecma-international.org/10.0/#sec-integerindexedelementset'
+ },
+ IntegerIndexedObjectCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-integerindexedobjectcreate'
+ },
+ InternalizeJSONProperty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-internalizejsonproperty'
+ },
+ Invoke: {
+ url: 'https://262.ecma-international.org/10.0/#sec-invoke'
+ },
+ IsAccessorDescriptor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isaccessordescriptor'
+ },
+ IsAnonymousFunctionDefinition: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isanonymousfunctiondefinition'
+ },
+ IsArray: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isarray'
+ },
+ IsCallable: {
+ url: 'https://262.ecma-international.org/10.0/#sec-iscallable'
+ },
+ IsCompatiblePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-iscompatiblepropertydescriptor'
+ },
+ IsConcatSpreadable: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isconcatspreadable'
+ },
+ IsConstructor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isconstructor'
+ },
+ IsDataDescriptor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isdatadescriptor'
+ },
+ IsDetachedBuffer: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isdetachedbuffer'
+ },
+ IsExtensible: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isextensible-o'
+ },
+ IsGenericDescriptor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isgenericdescriptor'
+ },
+ IsInTailPosition: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isintailposition'
+ },
+ IsInteger: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isinteger'
+ },
+ IsLabelledFunction: {
+ url: 'https://262.ecma-international.org/10.0/#sec-islabelledfunction'
+ },
+ IsPromise: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ispromise'
+ },
+ IsPropertyKey: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ispropertykey'
+ },
+ IsPropertyReference: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ispropertyreference'
+ },
+ IsRegExp: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isregexp'
+ },
+ IsSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/10.0/#sec-issharedarraybuffer'
+ },
+ IsStrictReference: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isstrictreference'
+ },
+ IsStringPrefix: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isstringprefix'
+ },
+ IsSuperReference: {
+ url: 'https://262.ecma-international.org/10.0/#sec-issuperreference'
+ },
+ IsUnresolvableReference: {
+ url: 'https://262.ecma-international.org/10.0/#sec-isunresolvablereference'
+ },
+ IsWordChar: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-iswordchar-abstract-operation'
+ },
+ IterableToList: {
+ url: 'https://262.ecma-international.org/10.0/#sec-iterabletolist'
+ },
+ IteratorClose: {
+ url: 'https://262.ecma-international.org/10.0/#sec-iteratorclose'
+ },
+ IteratorComplete: {
+ url: 'https://262.ecma-international.org/10.0/#sec-iteratorcomplete'
+ },
+ IteratorNext: {
+ url: 'https://262.ecma-international.org/10.0/#sec-iteratornext'
+ },
+ IteratorStep: {
+ url: 'https://262.ecma-international.org/10.0/#sec-iteratorstep'
+ },
+ IteratorValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-iteratorvalue'
+ },
+ LeaveCriticalSection: {
+ url: 'https://262.ecma-international.org/10.0/#sec-leavecriticalsection'
+ },
+ LocalTime: {
+ url: 'https://262.ecma-international.org/10.0/#sec-localtime'
+ },
+ LoopContinues: {
+ url: 'https://262.ecma-international.org/10.0/#sec-loopcontinues'
+ },
+ MakeArgGetter: {
+ url: 'https://262.ecma-international.org/10.0/#sec-makearggetter'
+ },
+ MakeArgSetter: {
+ url: 'https://262.ecma-international.org/10.0/#sec-makeargsetter'
+ },
+ MakeClassConstructor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-makeclassconstructor'
+ },
+ MakeConstructor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-makeconstructor'
+ },
+ MakeDate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-makedate'
+ },
+ MakeDay: {
+ url: 'https://262.ecma-international.org/10.0/#sec-makeday'
+ },
+ MakeMethod: {
+ url: 'https://262.ecma-international.org/10.0/#sec-makemethod'
+ },
+ MakeSuperPropertyReference: {
+ url: 'https://262.ecma-international.org/10.0/#sec-makesuperpropertyreference'
+ },
+ MakeTime: {
+ url: 'https://262.ecma-international.org/10.0/#sec-maketime'
+ },
+ max: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-max'
+ },
+ 'memory-order': {
+ url: 'https://262.ecma-international.org/10.0/#sec-memory-order'
+ },
+ min: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-min'
+ },
+ MinFromTime: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-MinFromTime'
+ },
+ ModuleNamespaceCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-modulenamespacecreate'
+ },
+ modulo: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-modulo'
+ },
+ MonthFromTime: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-MonthFromTime'
+ },
+ msFromTime: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-msFromTime'
+ },
+ NewDeclarativeEnvironment: {
+ url: 'https://262.ecma-international.org/10.0/#sec-newdeclarativeenvironment'
+ },
+ NewFunctionEnvironment: {
+ url: 'https://262.ecma-international.org/10.0/#sec-newfunctionenvironment'
+ },
+ NewGlobalEnvironment: {
+ url: 'https://262.ecma-international.org/10.0/#sec-newglobalenvironment'
+ },
+ NewModuleEnvironment: {
+ url: 'https://262.ecma-international.org/10.0/#sec-newmoduleenvironment'
+ },
+ NewObjectEnvironment: {
+ url: 'https://262.ecma-international.org/10.0/#sec-newobjectenvironment'
+ },
+ NewPromiseCapability: {
+ url: 'https://262.ecma-international.org/10.0/#sec-newpromisecapability'
+ },
+ NormalCompletion: {
+ url: 'https://262.ecma-international.org/10.0/#sec-normalcompletion'
+ },
+ NotifyWaiter: {
+ url: 'https://262.ecma-international.org/10.0/#sec-notifywaiter'
+ },
+ NumberToRawBytes: {
+ url: 'https://262.ecma-international.org/10.0/#sec-numbertorawbytes'
+ },
+ NumberToString: {
+ url: 'https://262.ecma-international.org/10.0/#sec-tostring-applied-to-the-number-type'
+ },
+ ObjectCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-objectcreate'
+ },
+ ObjectDefineProperties: {
+ url: 'https://262.ecma-international.org/10.0/#sec-objectdefineproperties'
+ },
+ OrdinaryCallBindThis: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinarycallbindthis'
+ },
+ OrdinaryCallEvaluateBody: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinarycallevaluatebody'
+ },
+ OrdinaryCreateFromConstructor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinarycreatefromconstructor'
+ },
+ OrdinaryDefineOwnProperty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinarydefineownproperty'
+ },
+ OrdinaryDelete: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinarydelete'
+ },
+ OrdinaryGet: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinaryget'
+ },
+ OrdinaryGetOwnProperty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinarygetownproperty'
+ },
+ OrdinaryGetPrototypeOf: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinarygetprototypeof'
+ },
+ OrdinaryHasInstance: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinaryhasinstance'
+ },
+ OrdinaryHasProperty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinaryhasproperty'
+ },
+ OrdinaryIsExtensible: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinaryisextensible'
+ },
+ OrdinaryOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinaryownpropertykeys'
+ },
+ OrdinaryPreventExtensions: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinarypreventextensions'
+ },
+ OrdinarySet: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinaryset'
+ },
+ OrdinarySetPrototypeOf: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinarysetprototypeof'
+ },
+ OrdinarySetWithOwnDescriptor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinarysetwithowndescriptor'
+ },
+ OrdinaryToPrimitive: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ordinarytoprimitive'
+ },
+ ParseModule: {
+ url: 'https://262.ecma-international.org/10.0/#sec-parsemodule'
+ },
+ ParseScript: {
+ url: 'https://262.ecma-international.org/10.0/#sec-parse-script'
+ },
+ PerformEval: {
+ url: 'https://262.ecma-international.org/10.0/#sec-performeval'
+ },
+ PerformPromiseAll: {
+ url: 'https://262.ecma-international.org/10.0/#sec-performpromiseall'
+ },
+ PerformPromiseRace: {
+ url: 'https://262.ecma-international.org/10.0/#sec-performpromiserace'
+ },
+ PerformPromiseThen: {
+ url: 'https://262.ecma-international.org/10.0/#sec-performpromisethen'
+ },
+ PrepareForOrdinaryCall: {
+ url: 'https://262.ecma-international.org/10.0/#sec-prepareforordinarycall'
+ },
+ PrepareForTailCall: {
+ url: 'https://262.ecma-international.org/10.0/#sec-preparefortailcall'
+ },
+ PromiseReactionJob: {
+ url: 'https://262.ecma-international.org/10.0/#sec-promisereactionjob'
+ },
+ PromiseResolve: {
+ url: 'https://262.ecma-international.org/10.0/#sec-promise-resolve'
+ },
+ PromiseResolveThenableJob: {
+ url: 'https://262.ecma-international.org/10.0/#sec-promiseresolvethenablejob'
+ },
+ ProxyCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-proxycreate'
+ },
+ PutValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-putvalue'
+ },
+ QuoteJSONString: {
+ url: 'https://262.ecma-international.org/10.0/#sec-quotejsonstring'
+ },
+ RawBytesToNumber: {
+ url: 'https://262.ecma-international.org/10.0/#sec-rawbytestonumber'
+ },
+ 'reads-bytes-from': {
+ url: 'https://262.ecma-international.org/10.0/#sec-reads-bytes-from'
+ },
+ 'reads-from': {
+ url: 'https://262.ecma-international.org/10.0/#sec-reads-from'
+ },
+ RegExpAlloc: {
+ url: 'https://262.ecma-international.org/10.0/#sec-regexpalloc'
+ },
+ RegExpBuiltinExec: {
+ url: 'https://262.ecma-international.org/10.0/#sec-regexpbuiltinexec'
+ },
+ RegExpCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-regexpcreate'
+ },
+ RegExpExec: {
+ url: 'https://262.ecma-international.org/10.0/#sec-regexpexec'
+ },
+ RegExpInitialize: {
+ url: 'https://262.ecma-international.org/10.0/#sec-regexpinitialize'
+ },
+ RejectPromise: {
+ url: 'https://262.ecma-international.org/10.0/#sec-rejectpromise'
+ },
+ RemoveWaiter: {
+ url: 'https://262.ecma-international.org/10.0/#sec-removewaiter'
+ },
+ RemoveWaiters: {
+ url: 'https://262.ecma-international.org/10.0/#sec-removewaiters'
+ },
+ RepeatMatcher: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-repeatmatcher-abstract-operation'
+ },
+ RequireObjectCoercible: {
+ url: 'https://262.ecma-international.org/10.0/#sec-requireobjectcoercible'
+ },
+ ResolveBinding: {
+ url: 'https://262.ecma-international.org/10.0/#sec-resolvebinding'
+ },
+ ResolveThisBinding: {
+ url: 'https://262.ecma-international.org/10.0/#sec-resolvethisbinding'
+ },
+ ReturnIfAbrupt: {
+ url: 'https://262.ecma-international.org/10.0/#sec-returnifabrupt'
+ },
+ RunJobs: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runjobs'
+ },
+ SameValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-samevalue'
+ },
+ SameValueNonNumber: {
+ url: 'https://262.ecma-international.org/10.0/#sec-samevaluenonnumber'
+ },
+ SameValueZero: {
+ url: 'https://262.ecma-international.org/10.0/#sec-samevaluezero'
+ },
+ ScriptEvaluation: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-scriptevaluation'
+ },
+ ScriptEvaluationJob: {
+ url: 'https://262.ecma-international.org/10.0/#sec-scriptevaluationjob'
+ },
+ SecFromTime: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-SecFromTime'
+ },
+ SerializeJSONArray: {
+ url: 'https://262.ecma-international.org/10.0/#sec-serializejsonarray'
+ },
+ SerializeJSONObject: {
+ url: 'https://262.ecma-international.org/10.0/#sec-serializejsonobject'
+ },
+ SerializeJSONProperty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-serializejsonproperty'
+ },
+ Set: {
+ url: 'https://262.ecma-international.org/10.0/#sec-set-o-p-v-throw'
+ },
+ SetDefaultGlobalBindings: {
+ url: 'https://262.ecma-international.org/10.0/#sec-setdefaultglobalbindings'
+ },
+ SetFunctionLength: {
+ url: 'https://262.ecma-international.org/10.0/#sec-setfunctionlength'
+ },
+ SetFunctionName: {
+ url: 'https://262.ecma-international.org/10.0/#sec-setfunctionname'
+ },
+ SetImmutablePrototype: {
+ url: 'https://262.ecma-international.org/10.0/#sec-set-immutable-prototype'
+ },
+ SetIntegrityLevel: {
+ url: 'https://262.ecma-international.org/10.0/#sec-setintegritylevel'
+ },
+ SetRealmGlobalObject: {
+ url: 'https://262.ecma-international.org/10.0/#sec-setrealmglobalobject'
+ },
+ SetValueInBuffer: {
+ url: 'https://262.ecma-international.org/10.0/#sec-setvalueinbuffer'
+ },
+ SetViewValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-setviewvalue'
+ },
+ SharedDataBlockEventSet: {
+ url: 'https://262.ecma-international.org/10.0/#sec-sharedatablockeventset'
+ },
+ SortCompare: {
+ url: 'https://262.ecma-international.org/10.0/#sec-sortcompare'
+ },
+ SpeciesConstructor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-speciesconstructor'
+ },
+ SplitMatch: {
+ url: 'https://262.ecma-international.org/10.0/#sec-splitmatch'
+ },
+ 'Strict Equality Comparison': {
+ url: 'https://262.ecma-international.org/10.0/#sec-strict-equality-comparison'
+ },
+ StringCreate: {
+ url: 'https://262.ecma-international.org/10.0/#sec-stringcreate'
+ },
+ StringGetOwnProperty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-stringgetownproperty'
+ },
+ Suspend: {
+ url: 'https://262.ecma-international.org/10.0/#sec-suspend'
+ },
+ SymbolDescriptiveString: {
+ url: 'https://262.ecma-international.org/10.0/#sec-symboldescriptivestring'
+ },
+ SynchronizeEventSet: {
+ url: 'https://262.ecma-international.org/10.0/#sec-synchronizeeventset'
+ },
+ 'synchronizes-with': {
+ url: 'https://262.ecma-international.org/10.0/#sec-synchronizes-with'
+ },
+ TestIntegrityLevel: {
+ url: 'https://262.ecma-international.org/10.0/#sec-testintegritylevel'
+ },
+ thisBooleanValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-thisbooleanvalue'
+ },
+ thisNumberValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-thisnumbervalue'
+ },
+ thisStringValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-thisstringvalue'
+ },
+ thisSymbolValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-thissymbolvalue'
+ },
+ thisTimeValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-thistimevalue'
+ },
+ ThrowCompletion: {
+ url: 'https://262.ecma-international.org/10.0/#sec-throwcompletion'
+ },
+ TimeClip: {
+ url: 'https://262.ecma-international.org/10.0/#sec-timeclip'
+ },
+ TimeFromYear: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-TimeFromYear'
+ },
+ TimeString: {
+ url: 'https://262.ecma-international.org/10.0/#sec-timestring'
+ },
+ TimeWithinDay: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-TimeWithinDay'
+ },
+ TimeZoneString: {
+ url: 'https://262.ecma-international.org/10.0/#sec-timezoneestring'
+ },
+ ToBoolean: {
+ url: 'https://262.ecma-international.org/10.0/#sec-toboolean'
+ },
+ ToDateString: {
+ url: 'https://262.ecma-international.org/10.0/#sec-todatestring'
+ },
+ ToIndex: {
+ url: 'https://262.ecma-international.org/10.0/#sec-toindex'
+ },
+ ToInt16: {
+ url: 'https://262.ecma-international.org/10.0/#sec-toint16'
+ },
+ ToInt32: {
+ url: 'https://262.ecma-international.org/10.0/#sec-toint32'
+ },
+ ToInt8: {
+ url: 'https://262.ecma-international.org/10.0/#sec-toint8'
+ },
+ ToInteger: {
+ url: 'https://262.ecma-international.org/10.0/#sec-tointeger'
+ },
+ ToLength: {
+ url: 'https://262.ecma-international.org/10.0/#sec-tolength'
+ },
+ ToNumber: {
+ url: 'https://262.ecma-international.org/10.0/#sec-tonumber'
+ },
+ ToObject: {
+ url: 'https://262.ecma-international.org/10.0/#sec-toobject'
+ },
+ TopLevelModuleEvaluationJob: {
+ url: 'https://262.ecma-international.org/10.0/#sec-toplevelmoduleevaluationjob'
+ },
+ ToPrimitive: {
+ url: 'https://262.ecma-international.org/10.0/#sec-toprimitive'
+ },
+ ToPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-topropertydescriptor'
+ },
+ ToPropertyKey: {
+ url: 'https://262.ecma-international.org/10.0/#sec-topropertykey'
+ },
+ ToString: {
+ url: 'https://262.ecma-international.org/10.0/#sec-tostring'
+ },
+ ToUint16: {
+ url: 'https://262.ecma-international.org/10.0/#sec-touint16'
+ },
+ ToUint32: {
+ url: 'https://262.ecma-international.org/10.0/#sec-touint32'
+ },
+ ToUint8: {
+ url: 'https://262.ecma-international.org/10.0/#sec-touint8'
+ },
+ ToUint8Clamp: {
+ url: 'https://262.ecma-international.org/10.0/#sec-touint8clamp'
+ },
+ TriggerPromiseReactions: {
+ url: 'https://262.ecma-international.org/10.0/#sec-triggerpromisereactions'
+ },
+ TrimString: {
+ url: 'https://262.ecma-international.org/10.0/#sec-trimstring'
+ },
+ Type: {
+ url: 'https://262.ecma-international.org/10.0/#sec-ecmascript-data-types-and-values'
+ },
+ TypedArrayCreate: {
+ url: 'https://262.ecma-international.org/10.0/#typedarray-create'
+ },
+ TypedArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/10.0/#typedarray-species-create'
+ },
+ UnicodeEscape: {
+ url: 'https://262.ecma-international.org/10.0/#sec-unicodeescape'
+ },
+ UnicodeMatchProperty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-unicodematchproperty-p'
+ },
+ UnicodeMatchPropertyValue: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-unicodematchpropertyvalue-p-v'
+ },
+ UpdateEmpty: {
+ url: 'https://262.ecma-international.org/10.0/#sec-updateempty'
+ },
+ UTC: {
+ url: 'https://262.ecma-international.org/10.0/#sec-utc-t'
+ },
+ UTF16Decode: {
+ url: 'https://262.ecma-international.org/10.0/#sec-utf16decode'
+ },
+ UTF16Encoding: {
+ url: 'https://262.ecma-international.org/10.0/#sec-utf16encoding'
+ },
+ ValidateAndApplyPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/10.0/#sec-validateandapplypropertydescriptor'
+ },
+ ValidateAtomicAccess: {
+ url: 'https://262.ecma-international.org/10.0/#sec-validateatomicaccess'
+ },
+ ValidateSharedIntegerTypedArray: {
+ url: 'https://262.ecma-international.org/10.0/#sec-validatesharedintegertypedarray'
+ },
+ ValidateTypedArray: {
+ url: 'https://262.ecma-international.org/10.0/#sec-validatetypedarray'
+ },
+ ValueOfReadEvent: {
+ url: 'https://262.ecma-international.org/10.0/#sec-valueofreadevent'
+ },
+ WeekDay: {
+ url: 'https://262.ecma-international.org/10.0/#sec-week-day'
+ },
+ WordCharacters: {
+ url: 'https://262.ecma-international.org/10.0/#sec-runtime-semantics-wordcharacters-abstract-operation'
+ },
+ YearFromTime: {
+ url: 'https://262.ecma-international.org/10.0/#eqn-YearFromTime'
+ }
};
diff --git a/node_modules/es-abstract/operations/2020.js b/node_modules/es-abstract/operations/2020.js
index 9464726c9..1e448539f 100644
--- a/node_modules/es-abstract/operations/2020.js
+++ b/node_modules/es-abstract/operations/2020.js
@@ -1,418 +1,1228 @@
'use strict';
module.exports = {
- abs: 'https://262.ecma-international.org/11.0/#eqn-abs',
- 'Abstract Equality Comparison': 'https://262.ecma-international.org/11.0/#sec-abstract-equality-comparison',
- 'Abstract Relational Comparison': 'https://262.ecma-international.org/11.0/#sec-abstract-relational-comparison',
- AddEntriesFromIterable: 'https://262.ecma-international.org/11.0/#sec-add-entries-from-iterable',
- AddRestrictedFunctionProperties: 'https://262.ecma-international.org/11.0/#sec-addrestrictedfunctionproperties',
- AddWaiter: 'https://262.ecma-international.org/11.0/#sec-addwaiter',
- AdvanceStringIndex: 'https://262.ecma-international.org/11.0/#sec-advancestringindex',
- 'agent-order': 'https://262.ecma-international.org/11.0/#sec-agent-order',
- AgentCanSuspend: 'https://262.ecma-international.org/11.0/#sec-agentcansuspend',
- AgentSignifier: 'https://262.ecma-international.org/11.0/#sec-agentsignifier',
- AllocateArrayBuffer: 'https://262.ecma-international.org/11.0/#sec-allocatearraybuffer',
- AllocateSharedArrayBuffer: 'https://262.ecma-international.org/11.0/#sec-allocatesharedarraybuffer',
- AllocateTypedArray: 'https://262.ecma-international.org/11.0/#sec-allocatetypedarray',
- AllocateTypedArrayBuffer: 'https://262.ecma-international.org/11.0/#sec-allocatetypedarraybuffer',
- ArrayCreate: 'https://262.ecma-international.org/11.0/#sec-arraycreate',
- ArraySetLength: 'https://262.ecma-international.org/11.0/#sec-arraysetlength',
- ArraySpeciesCreate: 'https://262.ecma-international.org/11.0/#sec-arrayspeciescreate',
- AsyncFromSyncIteratorContinuation: 'https://262.ecma-international.org/11.0/#sec-asyncfromsynciteratorcontinuation',
- AsyncFunctionStart: 'https://262.ecma-international.org/11.0/#sec-async-functions-abstract-operations-async-function-start',
- AsyncGeneratorEnqueue: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratorenqueue',
- AsyncGeneratorReject: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratorreject',
- AsyncGeneratorResolve: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratorresolve',
- AsyncGeneratorResumeNext: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratorresumenext',
- AsyncGeneratorStart: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratorstart',
- AsyncGeneratorYield: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratoryield',
- AsyncIteratorClose: 'https://262.ecma-international.org/11.0/#sec-asynciteratorclose',
- AtomicLoad: 'https://262.ecma-international.org/11.0/#sec-atomicload',
- AtomicReadModifyWrite: 'https://262.ecma-international.org/11.0/#sec-atomicreadmodifywrite',
- Await: 'https://262.ecma-international.org/11.0/#await',
- BackreferenceMatcher: 'https://262.ecma-international.org/11.0/#sec-backreference-matcher',
- 'BigInt::add': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-add',
- 'BigInt::bitwiseAND': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseAND',
- 'BigInt::bitwiseNOT': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseNOT',
- 'BigInt::bitwiseOR': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseOR',
- 'BigInt::bitwiseXOR': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseXOR',
- 'BigInt::divide': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-divide',
- 'BigInt::equal': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-equal',
- 'BigInt::exponentiate': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-exponentiate',
- 'BigInt::leftShift': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-leftShift',
- 'BigInt::lessThan': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-lessThan',
- 'BigInt::multiply': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-multiply',
- 'BigInt::remainder': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-remainder',
- 'BigInt::sameValue': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-sameValue',
- 'BigInt::sameValueZero': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-sameValueZero',
- 'BigInt::signedRightShift': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-signedRightShift',
- 'BigInt::subtract': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-subtract',
- 'BigInt::toString': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-tostring',
- 'BigInt::unaryMinus': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-unaryMinus',
- 'BigInt::unsignedRightShift': 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-unsignedRightShift',
- BigIntBitwiseOp: 'https://262.ecma-international.org/11.0/#sec-bigintbitwiseop',
- BinaryAnd: 'https://262.ecma-international.org/11.0/#sec-binaryand',
- BinaryOr: 'https://262.ecma-international.org/11.0/#sec-binaryor',
- BinaryXor: 'https://262.ecma-international.org/11.0/#sec-binaryxor',
- BlockDeclarationInstantiation: 'https://262.ecma-international.org/11.0/#sec-blockdeclarationinstantiation',
- BoundFunctionCreate: 'https://262.ecma-international.org/11.0/#sec-boundfunctioncreate',
- Call: 'https://262.ecma-international.org/11.0/#sec-call',
- Canonicalize: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-canonicalize-ch',
- CanonicalNumericIndexString: 'https://262.ecma-international.org/11.0/#sec-canonicalnumericindexstring',
- CaseClauseIsSelected: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-caseclauseisselected',
- CharacterRange: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-characterrange-abstract-operation',
- CharacterRangeOrUnion: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation',
- CharacterSetMatcher: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation',
- CloneArrayBuffer: 'https://262.ecma-international.org/11.0/#sec-clonearraybuffer',
- CodePointAt: 'https://262.ecma-international.org/11.0/#sec-codepointat',
- CompletePropertyDescriptor: 'https://262.ecma-international.org/11.0/#sec-completepropertydescriptor',
- Completion: 'https://262.ecma-international.org/11.0/#sec-completion-record-specification-type',
- ComposeWriteEventBytes: 'https://262.ecma-international.org/11.0/#sec-composewriteeventbytes',
- Construct: 'https://262.ecma-international.org/11.0/#sec-construct',
- CopyDataBlockBytes: 'https://262.ecma-international.org/11.0/#sec-copydatablockbytes',
- CopyDataProperties: 'https://262.ecma-international.org/11.0/#sec-copydataproperties',
- CreateArrayFromList: 'https://262.ecma-international.org/11.0/#sec-createarrayfromlist',
- CreateArrayIterator: 'https://262.ecma-international.org/11.0/#sec-createarrayiterator',
- CreateAsyncFromSyncIterator: 'https://262.ecma-international.org/11.0/#sec-createasyncfromsynciterator',
- CreateBuiltinFunction: 'https://262.ecma-international.org/11.0/#sec-createbuiltinfunction',
- CreateByteDataBlock: 'https://262.ecma-international.org/11.0/#sec-createbytedatablock',
- CreateDataProperty: 'https://262.ecma-international.org/11.0/#sec-createdataproperty',
- CreateDataPropertyOrThrow: 'https://262.ecma-international.org/11.0/#sec-createdatapropertyorthrow',
- CreateDynamicFunction: 'https://262.ecma-international.org/11.0/#sec-createdynamicfunction',
- CreateForInIterator: 'https://262.ecma-international.org/11.0/#sec-createforiniterator',
- CreateHTML: 'https://262.ecma-international.org/11.0/#sec-createhtml',
- CreateIntrinsics: 'https://262.ecma-international.org/11.0/#sec-createintrinsics',
- CreateIterResultObject: 'https://262.ecma-international.org/11.0/#sec-createiterresultobject',
- CreateListFromArrayLike: 'https://262.ecma-international.org/11.0/#sec-createlistfromarraylike',
- CreateListIteratorRecord: 'https://262.ecma-international.org/11.0/#sec-createlistiteratorRecord',
- CreateMapIterator: 'https://262.ecma-international.org/11.0/#sec-createmapiterator',
- CreateMappedArgumentsObject: 'https://262.ecma-international.org/11.0/#sec-createmappedargumentsobject',
- CreateMethodProperty: 'https://262.ecma-international.org/11.0/#sec-createmethodproperty',
- CreatePerIterationEnvironment: 'https://262.ecma-international.org/11.0/#sec-createperiterationenvironment',
- CreateRealm: 'https://262.ecma-international.org/11.0/#sec-createrealm',
- CreateRegExpStringIterator: 'https://262.ecma-international.org/11.0/#sec-createregexpstringiterator',
- CreateResolvingFunctions: 'https://262.ecma-international.org/11.0/#sec-createresolvingfunctions',
- CreateSetIterator: 'https://262.ecma-international.org/11.0/#sec-createsetiterator',
- CreateSharedByteDataBlock: 'https://262.ecma-international.org/11.0/#sec-createsharedbytedatablock',
- CreateStringIterator: 'https://262.ecma-international.org/11.0/#sec-createstringiterator',
- CreateUnmappedArgumentsObject: 'https://262.ecma-international.org/11.0/#sec-createunmappedargumentsobject',
- DateFromTime: 'https://262.ecma-international.org/11.0/#sec-date-number',
- DateString: 'https://262.ecma-international.org/11.0/#sec-datestring',
- Day: 'https://262.ecma-international.org/11.0/#eqn-Day',
- DayFromYear: 'https://262.ecma-international.org/11.0/#eqn-DaysFromYear',
- DaysInYear: 'https://262.ecma-international.org/11.0/#eqn-DaysInYear',
- DayWithinYear: 'https://262.ecma-international.org/11.0/#eqn-DayWithinYear',
- Decode: 'https://262.ecma-international.org/11.0/#sec-decode',
- DefinePropertyOrThrow: 'https://262.ecma-international.org/11.0/#sec-definepropertyorthrow',
- DeletePropertyOrThrow: 'https://262.ecma-international.org/11.0/#sec-deletepropertyorthrow',
- DetachArrayBuffer: 'https://262.ecma-international.org/11.0/#sec-detacharraybuffer',
- Encode: 'https://262.ecma-international.org/11.0/#sec-encode',
- EnterCriticalSection: 'https://262.ecma-international.org/11.0/#sec-entercriticalsection',
- EnumerableOwnPropertyNames: 'https://262.ecma-international.org/11.0/#sec-enumerableownpropertynames',
- EnumerateObjectProperties: 'https://262.ecma-international.org/11.0/#sec-enumerate-object-properties',
- EscapeRegExpPattern: 'https://262.ecma-international.org/11.0/#sec-escaperegexppattern',
- EvalDeclarationInstantiation: 'https://262.ecma-international.org/11.0/#sec-evaldeclarationinstantiation',
- EvaluateCall: 'https://262.ecma-international.org/11.0/#sec-evaluatecall',
- EvaluateNew: 'https://262.ecma-international.org/11.0/#sec-evaluatenew',
- EvaluatePropertyAccessWithExpressionKey: 'https://262.ecma-international.org/11.0/#sec-evaluate-property-access-with-expression-key',
- EvaluatePropertyAccessWithIdentifierKey: 'https://262.ecma-international.org/11.0/#sec-evaluate-property-access-with-identifier-key',
- EventSet: 'https://262.ecma-international.org/11.0/#sec-event-set',
- ExecuteModule: 'https://262.ecma-international.org/11.0/#sec-source-text-module-record-execute-module',
- FinishDynamicImport: 'https://262.ecma-international.org/11.0/#sec-finishdynamicimport',
- FlattenIntoArray: 'https://262.ecma-international.org/11.0/#sec-flattenintoarray',
- floor: 'https://262.ecma-international.org/11.0/#eqn-floor',
- ForBodyEvaluation: 'https://262.ecma-international.org/11.0/#sec-forbodyevaluation',
- 'ForIn/OfBodyEvaluation': 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset',
- 'ForIn/OfHeadEvaluation': 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-forinofheadevaluation',
- FromPropertyDescriptor: 'https://262.ecma-international.org/11.0/#sec-frompropertydescriptor',
- FulfillPromise: 'https://262.ecma-international.org/11.0/#sec-fulfillpromise',
- FunctionDeclarationInstantiation: 'https://262.ecma-international.org/11.0/#sec-functiondeclarationinstantiation',
- GeneratorResume: 'https://262.ecma-international.org/11.0/#sec-generatorresume',
- GeneratorResumeAbrupt: 'https://262.ecma-international.org/11.0/#sec-generatorresumeabrupt',
- GeneratorStart: 'https://262.ecma-international.org/11.0/#sec-generatorstart',
- GeneratorValidate: 'https://262.ecma-international.org/11.0/#sec-generatorvalidate',
- GeneratorYield: 'https://262.ecma-international.org/11.0/#sec-generatoryield',
- Get: 'https://262.ecma-international.org/11.0/#sec-get-o-p',
- GetActiveScriptOrModule: 'https://262.ecma-international.org/11.0/#sec-getactivescriptormodule',
- GetBase: 'https://262.ecma-international.org/11.0/#sec-getbase',
- GetFunctionRealm: 'https://262.ecma-international.org/11.0/#sec-getfunctionrealm',
- GetGeneratorKind: 'https://262.ecma-international.org/11.0/#sec-getgeneratorkind',
- GetGlobalObject: 'https://262.ecma-international.org/11.0/#sec-getglobalobject',
- GetIdentifierReference: 'https://262.ecma-international.org/11.0/#sec-getidentifierreference',
- GetIterator: 'https://262.ecma-international.org/11.0/#sec-getiterator',
- GetMethod: 'https://262.ecma-international.org/11.0/#sec-getmethod',
- GetModifySetValueInBuffer: 'https://262.ecma-international.org/11.0/#sec-getmodifysetvalueinbuffer',
- GetModuleNamespace: 'https://262.ecma-international.org/11.0/#sec-getmodulenamespace',
- GetNewTarget: 'https://262.ecma-international.org/11.0/#sec-getnewtarget',
- GetOwnPropertyKeys: 'https://262.ecma-international.org/11.0/#sec-getownpropertykeys',
- GetPrototypeFromConstructor: 'https://262.ecma-international.org/11.0/#sec-getprototypefromconstructor',
- GetReferencedName: 'https://262.ecma-international.org/11.0/#sec-getreferencedname',
- GetSubstitution: 'https://262.ecma-international.org/11.0/#sec-getsubstitution',
- GetSuperConstructor: 'https://262.ecma-international.org/11.0/#sec-getsuperconstructor',
- GetTemplateObject: 'https://262.ecma-international.org/11.0/#sec-gettemplateobject',
- GetThisEnvironment: 'https://262.ecma-international.org/11.0/#sec-getthisenvironment',
- GetThisValue: 'https://262.ecma-international.org/11.0/#sec-getthisvalue',
- GetV: 'https://262.ecma-international.org/11.0/#sec-getv',
- GetValue: 'https://262.ecma-international.org/11.0/#sec-getvalue',
- GetValueFromBuffer: 'https://262.ecma-international.org/11.0/#sec-getvaluefrombuffer',
- GetViewValue: 'https://262.ecma-international.org/11.0/#sec-getviewvalue',
- GetWaiterList: 'https://262.ecma-international.org/11.0/#sec-getwaiterlist',
- GlobalDeclarationInstantiation: 'https://262.ecma-international.org/11.0/#sec-globaldeclarationinstantiation',
- 'happens-before': 'https://262.ecma-international.org/11.0/#sec-happens-before',
- HasOwnProperty: 'https://262.ecma-international.org/11.0/#sec-hasownproperty',
- HasPrimitiveBase: 'https://262.ecma-international.org/11.0/#sec-hasprimitivebase',
- HasProperty: 'https://262.ecma-international.org/11.0/#sec-hasproperty',
- 'host-synchronizes-with': 'https://262.ecma-international.org/11.0/#sec-host-synchronizes-with',
- HostEnqueuePromiseJob: 'https://262.ecma-international.org/11.0/#sec-hostenqueuepromisejob',
- HostEnsureCanCompileStrings: 'https://262.ecma-international.org/11.0/#sec-hostensurecancompilestrings',
- HostEventSet: 'https://262.ecma-international.org/11.0/#sec-hosteventset',
- HostFinalizeImportMeta: 'https://262.ecma-international.org/11.0/#sec-hostfinalizeimportmeta',
- HostGetImportMetaProperties: 'https://262.ecma-international.org/11.0/#sec-hostgetimportmetaproperties',
- HostImportModuleDynamically: 'https://262.ecma-international.org/11.0/#sec-hostimportmoduledynamically',
- HostPromiseRejectionTracker: 'https://262.ecma-international.org/11.0/#sec-host-promise-rejection-tracker',
- HostResolveImportedModule: 'https://262.ecma-international.org/11.0/#sec-hostresolveimportedmodule',
- HourFromTime: 'https://262.ecma-international.org/11.0/#eqn-HourFromTime',
- IfAbruptRejectPromise: 'https://262.ecma-international.org/11.0/#sec-ifabruptrejectpromise',
- ImportedLocalNames: 'https://262.ecma-international.org/11.0/#sec-importedlocalnames',
- InitializeBoundName: 'https://262.ecma-international.org/11.0/#sec-initializeboundname',
- InitializeEnvironment: 'https://262.ecma-international.org/11.0/#sec-source-text-module-record-initialize-environment',
- InitializeHostDefinedRealm: 'https://262.ecma-international.org/11.0/#sec-initializehostdefinedrealm',
- InitializeReferencedBinding: 'https://262.ecma-international.org/11.0/#sec-initializereferencedbinding',
- InLeapYear: 'https://262.ecma-international.org/11.0/#eqn-InLeapYear',
- InnerModuleEvaluation: 'https://262.ecma-international.org/11.0/#sec-innermoduleevaluation',
- InnerModuleLinking: 'https://262.ecma-international.org/11.0/#sec-InnerModuleLinking',
- InstanceofOperator: 'https://262.ecma-international.org/11.0/#sec-instanceofoperator',
- IntegerIndexedElementGet: 'https://262.ecma-international.org/11.0/#sec-integerindexedelementget',
- IntegerIndexedElementSet: 'https://262.ecma-international.org/11.0/#sec-integerindexedelementset',
- IntegerIndexedObjectCreate: 'https://262.ecma-international.org/11.0/#sec-integerindexedobjectcreate',
- InternalizeJSONProperty: 'https://262.ecma-international.org/11.0/#sec-internalizejsonproperty',
- Invoke: 'https://262.ecma-international.org/11.0/#sec-invoke',
- IsAccessorDescriptor: 'https://262.ecma-international.org/11.0/#sec-isaccessordescriptor',
- IsAnonymousFunctionDefinition: 'https://262.ecma-international.org/11.0/#sec-isanonymousfunctiondefinition',
- IsArray: 'https://262.ecma-international.org/11.0/#sec-isarray',
- IsBigIntElementType: 'https://262.ecma-international.org/11.0/#sec-isbigintelementtype',
- IsCallable: 'https://262.ecma-international.org/11.0/#sec-iscallable',
- IsCompatiblePropertyDescriptor: 'https://262.ecma-international.org/11.0/#sec-iscompatiblepropertydescriptor',
- IsConcatSpreadable: 'https://262.ecma-international.org/11.0/#sec-isconcatspreadable',
- IsConstructor: 'https://262.ecma-international.org/11.0/#sec-isconstructor',
- IsDataDescriptor: 'https://262.ecma-international.org/11.0/#sec-isdatadescriptor',
- IsDetachedBuffer: 'https://262.ecma-international.org/11.0/#sec-isdetachedbuffer',
- IsExtensible: 'https://262.ecma-international.org/11.0/#sec-isextensible-o',
- IsGenericDescriptor: 'https://262.ecma-international.org/11.0/#sec-isgenericdescriptor',
- IsInTailPosition: 'https://262.ecma-international.org/11.0/#sec-isintailposition',
- IsInteger: 'https://262.ecma-international.org/11.0/#sec-isinteger',
- IsLabelledFunction: 'https://262.ecma-international.org/11.0/#sec-islabelledfunction',
- IsNonNegativeInteger: 'https://262.ecma-international.org/11.0/#sec-isnonnegativeinteger',
- IsNoTearConfiguration: 'https://262.ecma-international.org/11.0/#sec-isnotearconfiguration',
- IsPromise: 'https://262.ecma-international.org/11.0/#sec-ispromise',
- IsPropertyKey: 'https://262.ecma-international.org/11.0/#sec-ispropertykey',
- IsPropertyReference: 'https://262.ecma-international.org/11.0/#sec-ispropertyreference',
- IsRegExp: 'https://262.ecma-international.org/11.0/#sec-isregexp',
- IsSharedArrayBuffer: 'https://262.ecma-international.org/11.0/#sec-issharedarraybuffer',
- IsStrictReference: 'https://262.ecma-international.org/11.0/#sec-isstrictreference',
- IsStringPrefix: 'https://262.ecma-international.org/11.0/#sec-isstringprefix',
- IsSuperReference: 'https://262.ecma-international.org/11.0/#sec-issuperreference',
- IsUnclampedIntegerElementType: 'https://262.ecma-international.org/11.0/#sec-isunclampedintegerelementtype',
- IsUnresolvableReference: 'https://262.ecma-international.org/11.0/#sec-isunresolvablereference',
- IsUnsignedElementType: 'https://262.ecma-international.org/11.0/#sec-isunsignedelementtype',
- IsValidIntegerIndex: 'https://262.ecma-international.org/11.0/#sec-isvalidintegerindex',
- IsValidRegularExpressionLiteral: 'https://262.ecma-international.org/11.0/#sec-isvalidregularexpressionliteral',
- IsWordChar: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-iswordchar-abstract-operation',
- IterableToList: 'https://262.ecma-international.org/11.0/#sec-iterabletolist',
- IteratorClose: 'https://262.ecma-international.org/11.0/#sec-iteratorclose',
- IteratorComplete: 'https://262.ecma-international.org/11.0/#sec-iteratorcomplete',
- IteratorNext: 'https://262.ecma-international.org/11.0/#sec-iteratornext',
- IteratorStep: 'https://262.ecma-international.org/11.0/#sec-iteratorstep',
- IteratorValue: 'https://262.ecma-international.org/11.0/#sec-iteratorvalue',
- LeaveCriticalSection: 'https://262.ecma-international.org/11.0/#sec-leavecriticalsection',
- LengthOfArrayLike: 'https://262.ecma-international.org/11.0/#sec-lengthofarraylike',
- LocalTime: 'https://262.ecma-international.org/11.0/#sec-localtime',
- LocalTZA: 'https://262.ecma-international.org/11.0/#sec-local-time-zone-adjustment',
- LoopContinues: 'https://262.ecma-international.org/11.0/#sec-loopcontinues',
- MakeArgGetter: 'https://262.ecma-international.org/11.0/#sec-makearggetter',
- MakeArgSetter: 'https://262.ecma-international.org/11.0/#sec-makeargsetter',
- MakeBasicObject: 'https://262.ecma-international.org/11.0/#sec-makebasicobject',
- MakeClassConstructor: 'https://262.ecma-international.org/11.0/#sec-makeclassconstructor',
- MakeConstructor: 'https://262.ecma-international.org/11.0/#sec-makeconstructor',
- MakeDate: 'https://262.ecma-international.org/11.0/#sec-makedate',
- MakeDay: 'https://262.ecma-international.org/11.0/#sec-makeday',
- MakeMethod: 'https://262.ecma-international.org/11.0/#sec-makemethod',
- MakeSuperPropertyReference: 'https://262.ecma-international.org/11.0/#sec-makesuperpropertyreference',
- MakeTime: 'https://262.ecma-international.org/11.0/#sec-maketime',
- max: 'https://262.ecma-international.org/11.0/#eqn-max',
- 'memory-order': 'https://262.ecma-international.org/11.0/#sec-memory-order',
- min: 'https://262.ecma-international.org/11.0/#eqn-min',
- MinFromTime: 'https://262.ecma-international.org/11.0/#eqn-MinFromTime',
- ModuleNamespaceCreate: 'https://262.ecma-international.org/11.0/#sec-modulenamespacecreate',
- modulo: 'https://262.ecma-international.org/11.0/#eqn-modulo',
- MonthFromTime: 'https://262.ecma-international.org/11.0/#eqn-MonthFromTime',
- msFromTime: 'https://262.ecma-international.org/11.0/#eqn-msFromTime',
- NewDeclarativeEnvironment: 'https://262.ecma-international.org/11.0/#sec-newdeclarativeenvironment',
- NewFunctionEnvironment: 'https://262.ecma-international.org/11.0/#sec-newfunctionenvironment',
- NewGlobalEnvironment: 'https://262.ecma-international.org/11.0/#sec-newglobalenvironment',
- NewModuleEnvironment: 'https://262.ecma-international.org/11.0/#sec-newmoduleenvironment',
- NewObjectEnvironment: 'https://262.ecma-international.org/11.0/#sec-newobjectenvironment',
- NewPromiseCapability: 'https://262.ecma-international.org/11.0/#sec-newpromisecapability',
- NewPromiseReactionJob: 'https://262.ecma-international.org/11.0/#sec-newpromisereactionjob',
- NewPromiseResolveThenableJob: 'https://262.ecma-international.org/11.0/#sec-newpromiseresolvethenablejob',
- NormalCompletion: 'https://262.ecma-international.org/11.0/#sec-normalcompletion',
- NotifyWaiter: 'https://262.ecma-international.org/11.0/#sec-notifywaiter',
- 'Number::add': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-add',
- 'Number::bitwiseAND': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseAND',
- 'Number::bitwiseNOT': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseNOT',
- 'Number::bitwiseOR': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseOR',
- 'Number::bitwiseXOR': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseXOR',
- 'Number::divide': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-divide',
- 'Number::equal': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-equal',
- 'Number::exponentiate': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-exponentiate',
- 'Number::leftShift': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-leftShift',
- 'Number::lessThan': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-lessThan',
- 'Number::multiply': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-multiply',
- 'Number::remainder': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-remainder',
- 'Number::sameValue': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-sameValue',
- 'Number::sameValueZero': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-sameValueZero',
- 'Number::signedRightShift': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-signedRightShift',
- 'Number::subtract': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-subtract',
- 'Number::toString': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-tostring',
- 'Number::unaryMinus': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-unaryMinus',
- 'Number::unsignedRightShift': 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-unsignedRightShift',
- NumberBitwiseOp: 'https://262.ecma-international.org/11.0/#sec-numberbitwiseop',
- NumberToBigInt: 'https://262.ecma-international.org/11.0/#sec-numbertobigint',
- NumericToRawBytes: 'https://262.ecma-international.org/11.0/#sec-numerictorawbytes',
- ObjectDefineProperties: 'https://262.ecma-international.org/11.0/#sec-objectdefineproperties',
- OrdinaryCallBindThis: 'https://262.ecma-international.org/11.0/#sec-ordinarycallbindthis',
- OrdinaryCallEvaluateBody: 'https://262.ecma-international.org/11.0/#sec-ordinarycallevaluatebody',
- OrdinaryCreateFromConstructor: 'https://262.ecma-international.org/11.0/#sec-ordinarycreatefromconstructor',
- OrdinaryDefineOwnProperty: 'https://262.ecma-international.org/11.0/#sec-ordinarydefineownproperty',
- OrdinaryDelete: 'https://262.ecma-international.org/11.0/#sec-ordinarydelete',
- OrdinaryFunctionCreate: 'https://262.ecma-international.org/11.0/#sec-ordinaryfunctioncreate',
- OrdinaryGet: 'https://262.ecma-international.org/11.0/#sec-ordinaryget',
- OrdinaryGetOwnProperty: 'https://262.ecma-international.org/11.0/#sec-ordinarygetownproperty',
- OrdinaryGetPrototypeOf: 'https://262.ecma-international.org/11.0/#sec-ordinarygetprototypeof',
- OrdinaryHasInstance: 'https://262.ecma-international.org/11.0/#sec-ordinaryhasinstance',
- OrdinaryHasProperty: 'https://262.ecma-international.org/11.0/#sec-ordinaryhasproperty',
- OrdinaryIsExtensible: 'https://262.ecma-international.org/11.0/#sec-ordinaryisextensible',
- OrdinaryObjectCreate: 'https://262.ecma-international.org/11.0/#sec-ordinaryobjectcreate',
- OrdinaryOwnPropertyKeys: 'https://262.ecma-international.org/11.0/#sec-ordinaryownpropertykeys',
- OrdinaryPreventExtensions: 'https://262.ecma-international.org/11.0/#sec-ordinarypreventextensions',
- OrdinarySet: 'https://262.ecma-international.org/11.0/#sec-ordinaryset',
- OrdinarySetPrototypeOf: 'https://262.ecma-international.org/11.0/#sec-ordinarysetprototypeof',
- OrdinarySetWithOwnDescriptor: 'https://262.ecma-international.org/11.0/#sec-ordinarysetwithowndescriptor',
- OrdinaryToPrimitive: 'https://262.ecma-international.org/11.0/#sec-ordinarytoprimitive',
- ParseModule: 'https://262.ecma-international.org/11.0/#sec-parsemodule',
- ParseScript: 'https://262.ecma-international.org/11.0/#sec-parse-script',
- PerformEval: 'https://262.ecma-international.org/11.0/#sec-performeval',
- PerformPromiseAll: 'https://262.ecma-international.org/11.0/#sec-performpromiseall',
- PerformPromiseAllSettled: 'https://262.ecma-international.org/11.0/#sec-performpromiseallsettled',
- PerformPromiseRace: 'https://262.ecma-international.org/11.0/#sec-performpromiserace',
- PerformPromiseThen: 'https://262.ecma-international.org/11.0/#sec-performpromisethen',
- PrepareForOrdinaryCall: 'https://262.ecma-international.org/11.0/#sec-prepareforordinarycall',
- PrepareForTailCall: 'https://262.ecma-international.org/11.0/#sec-preparefortailcall',
- PromiseResolve: 'https://262.ecma-international.org/11.0/#sec-promise-resolve',
- ProxyCreate: 'https://262.ecma-international.org/11.0/#sec-proxycreate',
- PutValue: 'https://262.ecma-international.org/11.0/#sec-putvalue',
- QuoteJSONString: 'https://262.ecma-international.org/11.0/#sec-quotejsonstring',
- RawBytesToNumeric: 'https://262.ecma-international.org/11.0/#sec-rawbytestonumeric',
- 'reads-bytes-from': 'https://262.ecma-international.org/11.0/#sec-reads-bytes-from',
- 'reads-from': 'https://262.ecma-international.org/11.0/#sec-reads-from',
- RegExpAlloc: 'https://262.ecma-international.org/11.0/#sec-regexpalloc',
- RegExpBuiltinExec: 'https://262.ecma-international.org/11.0/#sec-regexpbuiltinexec',
- RegExpCreate: 'https://262.ecma-international.org/11.0/#sec-regexpcreate',
- RegExpExec: 'https://262.ecma-international.org/11.0/#sec-regexpexec',
- RegExpInitialize: 'https://262.ecma-international.org/11.0/#sec-regexpinitialize',
- RejectPromise: 'https://262.ecma-international.org/11.0/#sec-rejectpromise',
- RemoveWaiter: 'https://262.ecma-international.org/11.0/#sec-removewaiter',
- RemoveWaiters: 'https://262.ecma-international.org/11.0/#sec-removewaiters',
- RepeatMatcher: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-repeatmatcher-abstract-operation',
- RequireInternalSlot: 'https://262.ecma-international.org/11.0/#sec-requireinternalslot',
- RequireObjectCoercible: 'https://262.ecma-international.org/11.0/#sec-requireobjectcoercible',
- ResolveBinding: 'https://262.ecma-international.org/11.0/#sec-resolvebinding',
- ResolveThisBinding: 'https://262.ecma-international.org/11.0/#sec-resolvethisbinding',
- ReturnIfAbrupt: 'https://262.ecma-international.org/11.0/#sec-returnifabrupt',
- SameValue: 'https://262.ecma-international.org/11.0/#sec-samevalue',
- SameValueNonNumeric: 'https://262.ecma-international.org/11.0/#sec-samevaluenonnumeric',
- SameValueZero: 'https://262.ecma-international.org/11.0/#sec-samevaluezero',
- ScriptEvaluation: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-scriptevaluation',
- SecFromTime: 'https://262.ecma-international.org/11.0/#eqn-SecFromTime',
- SerializeJSONArray: 'https://262.ecma-international.org/11.0/#sec-serializejsonarray',
- SerializeJSONObject: 'https://262.ecma-international.org/11.0/#sec-serializejsonobject',
- SerializeJSONProperty: 'https://262.ecma-international.org/11.0/#sec-serializejsonproperty',
- Set: 'https://262.ecma-international.org/11.0/#sec-set-o-p-v-throw',
- SetDefaultGlobalBindings: 'https://262.ecma-international.org/11.0/#sec-setdefaultglobalbindings',
- SetFunctionLength: 'https://262.ecma-international.org/11.0/#sec-setfunctionlength',
- SetFunctionName: 'https://262.ecma-international.org/11.0/#sec-setfunctionname',
- SetImmutablePrototype: 'https://262.ecma-international.org/11.0/#sec-set-immutable-prototype',
- SetIntegrityLevel: 'https://262.ecma-international.org/11.0/#sec-setintegritylevel',
- SetRealmGlobalObject: 'https://262.ecma-international.org/11.0/#sec-setrealmglobalobject',
- SetValueInBuffer: 'https://262.ecma-international.org/11.0/#sec-setvalueinbuffer',
- SetViewValue: 'https://262.ecma-international.org/11.0/#sec-setviewvalue',
- SharedDataBlockEventSet: 'https://262.ecma-international.org/11.0/#sec-sharedatablockeventset',
- SortCompare: 'https://262.ecma-international.org/11.0/#sec-sortcompare',
- SpeciesConstructor: 'https://262.ecma-international.org/11.0/#sec-speciesconstructor',
- SplitMatch: 'https://262.ecma-international.org/11.0/#sec-splitmatch',
- 'Strict Equality Comparison': 'https://262.ecma-international.org/11.0/#sec-strict-equality-comparison',
- StringCreate: 'https://262.ecma-international.org/11.0/#sec-stringcreate',
- StringGetOwnProperty: 'https://262.ecma-international.org/11.0/#sec-stringgetownproperty',
- StringPad: 'https://262.ecma-international.org/11.0/#sec-stringpad',
- StringToBigInt: 'https://262.ecma-international.org/11.0/#sec-stringtobigint',
- Suspend: 'https://262.ecma-international.org/11.0/#sec-suspend',
- SymbolDescriptiveString: 'https://262.ecma-international.org/11.0/#sec-symboldescriptivestring',
- 'synchronizes-with': 'https://262.ecma-international.org/11.0/#sec-synchronizes-with',
- TestIntegrityLevel: 'https://262.ecma-international.org/11.0/#sec-testintegritylevel',
- thisBigIntValue: 'https://262.ecma-international.org/11.0/#sec-thisbigintvalue',
- thisBooleanValue: 'https://262.ecma-international.org/11.0/#sec-thisbooleanvalue',
- thisNumberValue: 'https://262.ecma-international.org/11.0/#sec-thisnumbervalue',
- thisStringValue: 'https://262.ecma-international.org/11.0/#sec-thisstringvalue',
- thisSymbolValue: 'https://262.ecma-international.org/11.0/#sec-thissymbolvalue',
- thisTimeValue: 'https://262.ecma-international.org/11.0/#sec-thistimevalue',
- ThrowCompletion: 'https://262.ecma-international.org/11.0/#sec-throwcompletion',
- TimeClip: 'https://262.ecma-international.org/11.0/#sec-timeclip',
- TimeFromYear: 'https://262.ecma-international.org/11.0/#eqn-TimeFromYear',
- TimeString: 'https://262.ecma-international.org/11.0/#sec-timestring',
- TimeWithinDay: 'https://262.ecma-international.org/11.0/#eqn-TimeWithinDay',
- TimeZoneString: 'https://262.ecma-international.org/11.0/#sec-timezoneestring',
- ToBigInt: 'https://262.ecma-international.org/11.0/#sec-tobigint',
- ToBigInt64: 'https://262.ecma-international.org/11.0/#sec-tobigint64',
- ToBigUint64: 'https://262.ecma-international.org/11.0/#sec-tobiguint64',
- ToBoolean: 'https://262.ecma-international.org/11.0/#sec-toboolean',
- ToDateString: 'https://262.ecma-international.org/11.0/#sec-todatestring',
- ToIndex: 'https://262.ecma-international.org/11.0/#sec-toindex',
- ToInt16: 'https://262.ecma-international.org/11.0/#sec-toint16',
- ToInt32: 'https://262.ecma-international.org/11.0/#sec-toint32',
- ToInt8: 'https://262.ecma-international.org/11.0/#sec-toint8',
- ToInteger: 'https://262.ecma-international.org/11.0/#sec-tointeger',
- ToLength: 'https://262.ecma-international.org/11.0/#sec-tolength',
- ToNumber: 'https://262.ecma-international.org/11.0/#sec-tonumber',
- ToNumeric: 'https://262.ecma-international.org/11.0/#sec-tonumeric',
- ToObject: 'https://262.ecma-international.org/11.0/#sec-toobject',
- ToPrimitive: 'https://262.ecma-international.org/11.0/#sec-toprimitive',
- ToPropertyDescriptor: 'https://262.ecma-international.org/11.0/#sec-topropertydescriptor',
- ToPropertyKey: 'https://262.ecma-international.org/11.0/#sec-topropertykey',
- ToString: 'https://262.ecma-international.org/11.0/#sec-tostring',
- ToUint16: 'https://262.ecma-international.org/11.0/#sec-touint16',
- ToUint32: 'https://262.ecma-international.org/11.0/#sec-touint32',
- ToUint8: 'https://262.ecma-international.org/11.0/#sec-touint8',
- ToUint8Clamp: 'https://262.ecma-international.org/11.0/#sec-touint8clamp',
- TriggerPromiseReactions: 'https://262.ecma-international.org/11.0/#sec-triggerpromisereactions',
- TrimString: 'https://262.ecma-international.org/11.0/#sec-trimstring',
- Type: 'https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values',
- TypedArrayCreate: 'https://262.ecma-international.org/11.0/#typedarray-create',
- TypedArraySpeciesCreate: 'https://262.ecma-international.org/11.0/#typedarray-species-create',
- UnicodeEscape: 'https://262.ecma-international.org/11.0/#sec-unicodeescape',
- UnicodeMatchProperty: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-unicodematchproperty-p',
- UnicodeMatchPropertyValue: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-unicodematchpropertyvalue-p-v',
- UpdateEmpty: 'https://262.ecma-international.org/11.0/#sec-updateempty',
- UTC: 'https://262.ecma-international.org/11.0/#sec-utc-t',
- UTF16DecodeString: 'https://262.ecma-international.org/11.0/#sec-utf16decodestring',
- UTF16DecodeSurrogatePair: 'https://262.ecma-international.org/11.0/#sec-utf16decodesurrogatepair',
- UTF16Encode: 'https://262.ecma-international.org/11.0/#sec-utf16encode',
- UTF16Encoding: 'https://262.ecma-international.org/11.0/#sec-utf16encoding',
- ValidateAndApplyPropertyDescriptor: 'https://262.ecma-international.org/11.0/#sec-validateandapplypropertydescriptor',
- ValidateAtomicAccess: 'https://262.ecma-international.org/11.0/#sec-validateatomicaccess',
- ValidateSharedIntegerTypedArray: 'https://262.ecma-international.org/11.0/#sec-validatesharedintegertypedarray',
- ValidateTypedArray: 'https://262.ecma-international.org/11.0/#sec-validatetypedarray',
- ValueOfReadEvent: 'https://262.ecma-international.org/11.0/#sec-valueofreadevent',
- WeekDay: 'https://262.ecma-international.org/11.0/#sec-week-day',
- WordCharacters: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-wordcharacters-abstract-operation',
- YearFromTime: 'https://262.ecma-international.org/11.0/#eqn-YearFromTime'
+ abs: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-abs'
+ },
+ 'Abstract Equality Comparison': {
+ url: 'https://262.ecma-international.org/11.0/#sec-abstract-equality-comparison'
+ },
+ 'Abstract Relational Comparison': {
+ url: 'https://262.ecma-international.org/11.0/#sec-abstract-relational-comparison'
+ },
+ AddEntriesFromIterable: {
+ url: 'https://262.ecma-international.org/11.0/#sec-add-entries-from-iterable'
+ },
+ AddRestrictedFunctionProperties: {
+ url: 'https://262.ecma-international.org/11.0/#sec-addrestrictedfunctionproperties'
+ },
+ AddWaiter: {
+ url: 'https://262.ecma-international.org/11.0/#sec-addwaiter'
+ },
+ AdvanceStringIndex: {
+ url: 'https://262.ecma-international.org/11.0/#sec-advancestringindex'
+ },
+ 'agent-order': {
+ url: 'https://262.ecma-international.org/11.0/#sec-agent-order'
+ },
+ AgentCanSuspend: {
+ url: 'https://262.ecma-international.org/11.0/#sec-agentcansuspend'
+ },
+ AgentSignifier: {
+ url: 'https://262.ecma-international.org/11.0/#sec-agentsignifier'
+ },
+ AllocateArrayBuffer: {
+ url: 'https://262.ecma-international.org/11.0/#sec-allocatearraybuffer'
+ },
+ AllocateSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/11.0/#sec-allocatesharedarraybuffer'
+ },
+ AllocateTypedArray: {
+ url: 'https://262.ecma-international.org/11.0/#sec-allocatetypedarray'
+ },
+ AllocateTypedArrayBuffer: {
+ url: 'https://262.ecma-international.org/11.0/#sec-allocatetypedarraybuffer'
+ },
+ ArrayCreate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-arraycreate'
+ },
+ ArraySetLength: {
+ url: 'https://262.ecma-international.org/11.0/#sec-arraysetlength'
+ },
+ ArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-arrayspeciescreate'
+ },
+ AsyncFromSyncIteratorContinuation: {
+ url: 'https://262.ecma-international.org/11.0/#sec-asyncfromsynciteratorcontinuation'
+ },
+ AsyncFunctionStart: {
+ url: 'https://262.ecma-international.org/11.0/#sec-async-functions-abstract-operations-async-function-start'
+ },
+ AsyncGeneratorEnqueue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratorenqueue'
+ },
+ AsyncGeneratorReject: {
+ url: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratorreject'
+ },
+ AsyncGeneratorResolve: {
+ url: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratorresolve'
+ },
+ AsyncGeneratorResumeNext: {
+ url: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratorresumenext'
+ },
+ AsyncGeneratorStart: {
+ url: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratorstart'
+ },
+ AsyncGeneratorYield: {
+ url: 'https://262.ecma-international.org/11.0/#sec-asyncgeneratoryield'
+ },
+ AsyncIteratorClose: {
+ url: 'https://262.ecma-international.org/11.0/#sec-asynciteratorclose'
+ },
+ AtomicLoad: {
+ url: 'https://262.ecma-international.org/11.0/#sec-atomicload'
+ },
+ AtomicReadModifyWrite: {
+ url: 'https://262.ecma-international.org/11.0/#sec-atomicreadmodifywrite'
+ },
+ Await: {
+ url: 'https://262.ecma-international.org/11.0/#await'
+ },
+ BackreferenceMatcher: {
+ url: 'https://262.ecma-international.org/11.0/#sec-backreference-matcher'
+ },
+ 'BigInt::add': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-add'
+ },
+ 'BigInt::bitwiseAND': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseAND'
+ },
+ 'BigInt::bitwiseNOT': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseNOT'
+ },
+ 'BigInt::bitwiseOR': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseOR'
+ },
+ 'BigInt::bitwiseXOR': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-bitwiseXOR'
+ },
+ 'BigInt::divide': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-divide'
+ },
+ 'BigInt::equal': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-equal'
+ },
+ 'BigInt::exponentiate': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-exponentiate'
+ },
+ 'BigInt::leftShift': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-leftShift'
+ },
+ 'BigInt::lessThan': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-lessThan'
+ },
+ 'BigInt::multiply': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-multiply'
+ },
+ 'BigInt::remainder': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-remainder'
+ },
+ 'BigInt::sameValue': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-sameValue'
+ },
+ 'BigInt::sameValueZero': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-sameValueZero'
+ },
+ 'BigInt::signedRightShift': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-signedRightShift'
+ },
+ 'BigInt::subtract': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-subtract'
+ },
+ 'BigInt::toString': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-tostring'
+ },
+ 'BigInt::unaryMinus': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-unaryMinus'
+ },
+ 'BigInt::unsignedRightShift': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-bigint-unsignedRightShift'
+ },
+ BigIntBitwiseOp: {
+ url: 'https://262.ecma-international.org/11.0/#sec-bigintbitwiseop'
+ },
+ BinaryAnd: {
+ url: 'https://262.ecma-international.org/11.0/#sec-binaryand'
+ },
+ BinaryOr: {
+ url: 'https://262.ecma-international.org/11.0/#sec-binaryor'
+ },
+ BinaryXor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-binaryxor'
+ },
+ BlockDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/11.0/#sec-blockdeclarationinstantiation'
+ },
+ BoundFunctionCreate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-boundfunctioncreate'
+ },
+ Call: {
+ url: 'https://262.ecma-international.org/11.0/#sec-call'
+ },
+ Canonicalize: {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-canonicalize-ch'
+ },
+ CanonicalNumericIndexString: {
+ url: 'https://262.ecma-international.org/11.0/#sec-canonicalnumericindexstring'
+ },
+ CaseClauseIsSelected: {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-caseclauseisselected'
+ },
+ CharacterRange: {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-characterrange-abstract-operation'
+ },
+ CharacterRangeOrUnion: {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation'
+ },
+ CharacterSetMatcher: {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation'
+ },
+ CloneArrayBuffer: {
+ url: 'https://262.ecma-international.org/11.0/#sec-clonearraybuffer'
+ },
+ CodePointAt: {
+ url: 'https://262.ecma-international.org/11.0/#sec-codepointat'
+ },
+ CompletePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-completepropertydescriptor'
+ },
+ Completion: {
+ url: 'https://262.ecma-international.org/11.0/#sec-completion-record-specification-type'
+ },
+ CompletionRecord: {
+ url: 'https://262.ecma-international.org/11.0/#sec-completion-record-specification-type'
+ },
+ ComposeWriteEventBytes: {
+ url: 'https://262.ecma-international.org/11.0/#sec-composewriteeventbytes'
+ },
+ Construct: {
+ url: 'https://262.ecma-international.org/11.0/#sec-construct'
+ },
+ CopyDataBlockBytes: {
+ url: 'https://262.ecma-international.org/11.0/#sec-copydatablockbytes'
+ },
+ CopyDataProperties: {
+ url: 'https://262.ecma-international.org/11.0/#sec-copydataproperties'
+ },
+ CreateArrayFromList: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createarrayfromlist'
+ },
+ CreateArrayIterator: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createarrayiterator'
+ },
+ CreateAsyncFromSyncIterator: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createasyncfromsynciterator'
+ },
+ CreateBuiltinFunction: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createbuiltinfunction'
+ },
+ CreateByteDataBlock: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createbytedatablock'
+ },
+ CreateDataProperty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createdataproperty'
+ },
+ CreateDataPropertyOrThrow: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createdatapropertyorthrow'
+ },
+ CreateDynamicFunction: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createdynamicfunction'
+ },
+ CreateForInIterator: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createforiniterator'
+ },
+ CreateHTML: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createhtml'
+ },
+ CreateIntrinsics: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createintrinsics'
+ },
+ CreateIterResultObject: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createiterresultobject'
+ },
+ CreateListFromArrayLike: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createlistfromarraylike'
+ },
+ CreateListIteratorRecord: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createlistiteratorRecord'
+ },
+ CreateMapIterator: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createmapiterator'
+ },
+ CreateMappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createmappedargumentsobject'
+ },
+ CreateMethodProperty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createmethodproperty'
+ },
+ CreatePerIterationEnvironment: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createperiterationenvironment'
+ },
+ CreateRealm: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createrealm'
+ },
+ CreateRegExpStringIterator: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createregexpstringiterator'
+ },
+ CreateResolvingFunctions: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createresolvingfunctions'
+ },
+ CreateSetIterator: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createsetiterator'
+ },
+ CreateSharedByteDataBlock: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createsharedbytedatablock'
+ },
+ CreateStringIterator: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createstringiterator'
+ },
+ CreateUnmappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/11.0/#sec-createunmappedargumentsobject'
+ },
+ DateFromTime: {
+ url: 'https://262.ecma-international.org/11.0/#sec-date-number'
+ },
+ DateString: {
+ url: 'https://262.ecma-international.org/11.0/#sec-datestring'
+ },
+ Day: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-Day'
+ },
+ DayFromYear: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-DaysFromYear'
+ },
+ DaysInYear: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-DaysInYear'
+ },
+ DayWithinYear: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-DayWithinYear'
+ },
+ Decode: {
+ url: 'https://262.ecma-international.org/11.0/#sec-decode'
+ },
+ DefinePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/11.0/#sec-definepropertyorthrow'
+ },
+ DeletePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/11.0/#sec-deletepropertyorthrow'
+ },
+ DetachArrayBuffer: {
+ url: 'https://262.ecma-international.org/11.0/#sec-detacharraybuffer'
+ },
+ Encode: {
+ url: 'https://262.ecma-international.org/11.0/#sec-encode'
+ },
+ EnterCriticalSection: {
+ url: 'https://262.ecma-international.org/11.0/#sec-entercriticalsection'
+ },
+ EnumerableOwnPropertyNames: {
+ url: 'https://262.ecma-international.org/11.0/#sec-enumerableownpropertynames'
+ },
+ EnumerateObjectProperties: {
+ url: 'https://262.ecma-international.org/11.0/#sec-enumerate-object-properties'
+ },
+ EscapeRegExpPattern: {
+ url: 'https://262.ecma-international.org/11.0/#sec-escaperegexppattern'
+ },
+ EvalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/11.0/#sec-evaldeclarationinstantiation'
+ },
+ EvaluateCall: {
+ url: 'https://262.ecma-international.org/11.0/#sec-evaluatecall'
+ },
+ EvaluateNew: {
+ url: 'https://262.ecma-international.org/11.0/#sec-evaluatenew'
+ },
+ EvaluatePropertyAccessWithExpressionKey: {
+ url: 'https://262.ecma-international.org/11.0/#sec-evaluate-property-access-with-expression-key'
+ },
+ EvaluatePropertyAccessWithIdentifierKey: {
+ url: 'https://262.ecma-international.org/11.0/#sec-evaluate-property-access-with-identifier-key'
+ },
+ EventSet: {
+ url: 'https://262.ecma-international.org/11.0/#sec-event-set'
+ },
+ ExecuteModule: {
+ url: 'https://262.ecma-international.org/11.0/#sec-source-text-module-record-execute-module'
+ },
+ FinishDynamicImport: {
+ url: 'https://262.ecma-international.org/11.0/#sec-finishdynamicimport'
+ },
+ FlattenIntoArray: {
+ url: 'https://262.ecma-international.org/11.0/#sec-flattenintoarray'
+ },
+ floor: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-floor'
+ },
+ ForBodyEvaluation: {
+ url: 'https://262.ecma-international.org/11.0/#sec-forbodyevaluation'
+ },
+ 'ForIn/OfBodyEvaluation': {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset'
+ },
+ 'ForIn/OfHeadEvaluation': {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-forinofheadevaluation'
+ },
+ FromPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-frompropertydescriptor'
+ },
+ FulfillPromise: {
+ url: 'https://262.ecma-international.org/11.0/#sec-fulfillpromise'
+ },
+ FunctionDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/11.0/#sec-functiondeclarationinstantiation'
+ },
+ GeneratorResume: {
+ url: 'https://262.ecma-international.org/11.0/#sec-generatorresume'
+ },
+ GeneratorResumeAbrupt: {
+ url: 'https://262.ecma-international.org/11.0/#sec-generatorresumeabrupt'
+ },
+ GeneratorStart: {
+ url: 'https://262.ecma-international.org/11.0/#sec-generatorstart'
+ },
+ GeneratorValidate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-generatorvalidate'
+ },
+ GeneratorYield: {
+ url: 'https://262.ecma-international.org/11.0/#sec-generatoryield'
+ },
+ Get: {
+ url: 'https://262.ecma-international.org/11.0/#sec-get-o-p'
+ },
+ GetActiveScriptOrModule: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getactivescriptormodule'
+ },
+ GetBase: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getbase'
+ },
+ GetFunctionRealm: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getfunctionrealm'
+ },
+ GetGeneratorKind: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getgeneratorkind'
+ },
+ GetGlobalObject: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getglobalobject'
+ },
+ GetIdentifierReference: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getidentifierreference'
+ },
+ GetIterator: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getiterator'
+ },
+ GetMethod: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getmethod'
+ },
+ GetModifySetValueInBuffer: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getmodifysetvalueinbuffer'
+ },
+ GetModuleNamespace: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getmodulenamespace'
+ },
+ GetNewTarget: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getnewtarget'
+ },
+ GetOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getownpropertykeys'
+ },
+ GetPrototypeFromConstructor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getprototypefromconstructor'
+ },
+ GetReferencedName: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getreferencedname'
+ },
+ GetSubstitution: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getsubstitution'
+ },
+ GetSuperConstructor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getsuperconstructor'
+ },
+ GetTemplateObject: {
+ url: 'https://262.ecma-international.org/11.0/#sec-gettemplateobject'
+ },
+ GetThisEnvironment: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getthisenvironment'
+ },
+ GetThisValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getthisvalue'
+ },
+ GetV: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getv'
+ },
+ GetValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getvalue'
+ },
+ GetValueFromBuffer: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getvaluefrombuffer'
+ },
+ GetViewValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getviewvalue'
+ },
+ GetWaiterList: {
+ url: 'https://262.ecma-international.org/11.0/#sec-getwaiterlist'
+ },
+ GlobalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/11.0/#sec-globaldeclarationinstantiation'
+ },
+ 'happens-before': {
+ url: 'https://262.ecma-international.org/11.0/#sec-happens-before'
+ },
+ HasOwnProperty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-hasownproperty'
+ },
+ HasPrimitiveBase: {
+ url: 'https://262.ecma-international.org/11.0/#sec-hasprimitivebase'
+ },
+ HasProperty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-hasproperty'
+ },
+ 'host-synchronizes-with': {
+ url: 'https://262.ecma-international.org/11.0/#sec-host-synchronizes-with'
+ },
+ HostEventSet: {
+ url: 'https://262.ecma-international.org/11.0/#sec-hosteventset'
+ },
+ HourFromTime: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-HourFromTime'
+ },
+ IfAbruptRejectPromise: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ifabruptrejectpromise'
+ },
+ ImportedLocalNames: {
+ url: 'https://262.ecma-international.org/11.0/#sec-importedlocalnames'
+ },
+ InitializeBoundName: {
+ url: 'https://262.ecma-international.org/11.0/#sec-initializeboundname'
+ },
+ InitializeEnvironment: {
+ url: 'https://262.ecma-international.org/11.0/#sec-source-text-module-record-initialize-environment'
+ },
+ InitializeHostDefinedRealm: {
+ url: 'https://262.ecma-international.org/11.0/#sec-initializehostdefinedrealm'
+ },
+ InitializeReferencedBinding: {
+ url: 'https://262.ecma-international.org/11.0/#sec-initializereferencedbinding'
+ },
+ InLeapYear: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-InLeapYear'
+ },
+ InnerModuleEvaluation: {
+ url: 'https://262.ecma-international.org/11.0/#sec-innermoduleevaluation'
+ },
+ InnerModuleLinking: {
+ url: 'https://262.ecma-international.org/11.0/#sec-InnerModuleLinking'
+ },
+ InstanceofOperator: {
+ url: 'https://262.ecma-international.org/11.0/#sec-instanceofoperator'
+ },
+ IntegerIndexedElementGet: {
+ url: 'https://262.ecma-international.org/11.0/#sec-integerindexedelementget'
+ },
+ IntegerIndexedElementSet: {
+ url: 'https://262.ecma-international.org/11.0/#sec-integerindexedelementset'
+ },
+ IntegerIndexedObjectCreate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-integerindexedobjectcreate'
+ },
+ InternalizeJSONProperty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-internalizejsonproperty'
+ },
+ Invoke: {
+ url: 'https://262.ecma-international.org/11.0/#sec-invoke'
+ },
+ IsAccessorDescriptor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isaccessordescriptor'
+ },
+ IsAnonymousFunctionDefinition: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isanonymousfunctiondefinition'
+ },
+ IsArray: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isarray'
+ },
+ IsBigIntElementType: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isbigintelementtype'
+ },
+ IsCallable: {
+ url: 'https://262.ecma-international.org/11.0/#sec-iscallable'
+ },
+ IsCompatiblePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-iscompatiblepropertydescriptor'
+ },
+ IsConcatSpreadable: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isconcatspreadable'
+ },
+ IsConstructor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isconstructor'
+ },
+ IsDataDescriptor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isdatadescriptor'
+ },
+ IsDetachedBuffer: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isdetachedbuffer'
+ },
+ IsExtensible: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isextensible-o'
+ },
+ IsGenericDescriptor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isgenericdescriptor'
+ },
+ IsInTailPosition: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isintailposition'
+ },
+ IsInteger: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isinteger'
+ },
+ IsLabelledFunction: {
+ url: 'https://262.ecma-international.org/11.0/#sec-islabelledfunction'
+ },
+ IsNonNegativeInteger: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isnonnegativeinteger'
+ },
+ IsNoTearConfiguration: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isnotearconfiguration'
+ },
+ IsPromise: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ispromise'
+ },
+ IsPropertyKey: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ispropertykey'
+ },
+ IsPropertyReference: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ispropertyreference'
+ },
+ IsRegExp: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isregexp'
+ },
+ IsSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/11.0/#sec-issharedarraybuffer'
+ },
+ IsStrictReference: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isstrictreference'
+ },
+ IsStringPrefix: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isstringprefix'
+ },
+ IsSuperReference: {
+ url: 'https://262.ecma-international.org/11.0/#sec-issuperreference'
+ },
+ IsUnclampedIntegerElementType: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isunclampedintegerelementtype'
+ },
+ IsUnresolvableReference: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isunresolvablereference'
+ },
+ IsUnsignedElementType: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isunsignedelementtype'
+ },
+ IsValidIntegerIndex: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isvalidintegerindex'
+ },
+ IsValidRegularExpressionLiteral: {
+ url: 'https://262.ecma-international.org/11.0/#sec-isvalidregularexpressionliteral'
+ },
+ IsWordChar: {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-iswordchar-abstract-operation'
+ },
+ IterableToList: {
+ url: 'https://262.ecma-international.org/11.0/#sec-iterabletolist'
+ },
+ IteratorClose: {
+ url: 'https://262.ecma-international.org/11.0/#sec-iteratorclose'
+ },
+ IteratorComplete: {
+ url: 'https://262.ecma-international.org/11.0/#sec-iteratorcomplete'
+ },
+ IteratorNext: {
+ url: 'https://262.ecma-international.org/11.0/#sec-iteratornext'
+ },
+ IteratorStep: {
+ url: 'https://262.ecma-international.org/11.0/#sec-iteratorstep'
+ },
+ IteratorValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-iteratorvalue'
+ },
+ LeaveCriticalSection: {
+ url: 'https://262.ecma-international.org/11.0/#sec-leavecriticalsection'
+ },
+ LengthOfArrayLike: {
+ url: 'https://262.ecma-international.org/11.0/#sec-lengthofarraylike'
+ },
+ LocalTime: {
+ url: 'https://262.ecma-international.org/11.0/#sec-localtime'
+ },
+ LocalTZA: {
+ url: 'https://262.ecma-international.org/11.0/#sec-local-time-zone-adjustment'
+ },
+ LoopContinues: {
+ url: 'https://262.ecma-international.org/11.0/#sec-loopcontinues'
+ },
+ MakeArgGetter: {
+ url: 'https://262.ecma-international.org/11.0/#sec-makearggetter'
+ },
+ MakeArgSetter: {
+ url: 'https://262.ecma-international.org/11.0/#sec-makeargsetter'
+ },
+ MakeBasicObject: {
+ url: 'https://262.ecma-international.org/11.0/#sec-makebasicobject'
+ },
+ MakeClassConstructor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-makeclassconstructor'
+ },
+ MakeConstructor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-makeconstructor'
+ },
+ MakeDate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-makedate'
+ },
+ MakeDay: {
+ url: 'https://262.ecma-international.org/11.0/#sec-makeday'
+ },
+ MakeMethod: {
+ url: 'https://262.ecma-international.org/11.0/#sec-makemethod'
+ },
+ MakeSuperPropertyReference: {
+ url: 'https://262.ecma-international.org/11.0/#sec-makesuperpropertyreference'
+ },
+ MakeTime: {
+ url: 'https://262.ecma-international.org/11.0/#sec-maketime'
+ },
+ max: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-max'
+ },
+ 'memory-order': {
+ url: 'https://262.ecma-international.org/11.0/#sec-memory-order'
+ },
+ min: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-min'
+ },
+ MinFromTime: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-MinFromTime'
+ },
+ ModuleNamespaceCreate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-modulenamespacecreate'
+ },
+ modulo: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-modulo'
+ },
+ MonthFromTime: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-MonthFromTime'
+ },
+ msFromTime: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-msFromTime'
+ },
+ NewDeclarativeEnvironment: {
+ url: 'https://262.ecma-international.org/11.0/#sec-newdeclarativeenvironment'
+ },
+ NewFunctionEnvironment: {
+ url: 'https://262.ecma-international.org/11.0/#sec-newfunctionenvironment'
+ },
+ NewGlobalEnvironment: {
+ url: 'https://262.ecma-international.org/11.0/#sec-newglobalenvironment'
+ },
+ NewModuleEnvironment: {
+ url: 'https://262.ecma-international.org/11.0/#sec-newmoduleenvironment'
+ },
+ NewObjectEnvironment: {
+ url: 'https://262.ecma-international.org/11.0/#sec-newobjectenvironment'
+ },
+ NewPromiseCapability: {
+ url: 'https://262.ecma-international.org/11.0/#sec-newpromisecapability'
+ },
+ NewPromiseReactionJob: {
+ url: 'https://262.ecma-international.org/11.0/#sec-newpromisereactionjob'
+ },
+ NewPromiseResolveThenableJob: {
+ url: 'https://262.ecma-international.org/11.0/#sec-newpromiseresolvethenablejob'
+ },
+ NormalCompletion: {
+ url: 'https://262.ecma-international.org/11.0/#sec-normalcompletion'
+ },
+ NotifyWaiter: {
+ url: 'https://262.ecma-international.org/11.0/#sec-notifywaiter'
+ },
+ 'Number::add': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-add'
+ },
+ 'Number::bitwiseAND': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseAND'
+ },
+ 'Number::bitwiseNOT': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseNOT'
+ },
+ 'Number::bitwiseOR': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseOR'
+ },
+ 'Number::bitwiseXOR': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-bitwiseXOR'
+ },
+ 'Number::divide': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-divide'
+ },
+ 'Number::equal': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-equal'
+ },
+ 'Number::exponentiate': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-exponentiate'
+ },
+ 'Number::leftShift': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-leftShift'
+ },
+ 'Number::lessThan': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-lessThan'
+ },
+ 'Number::multiply': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-multiply'
+ },
+ 'Number::remainder': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-remainder'
+ },
+ 'Number::sameValue': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-sameValue'
+ },
+ 'Number::sameValueZero': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-sameValueZero'
+ },
+ 'Number::signedRightShift': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-signedRightShift'
+ },
+ 'Number::subtract': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-subtract'
+ },
+ 'Number::toString': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-tostring'
+ },
+ 'Number::unaryMinus': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-unaryMinus'
+ },
+ 'Number::unsignedRightShift': {
+ url: 'https://262.ecma-international.org/11.0/#sec-numeric-types-number-unsignedRightShift'
+ },
+ NumberBitwiseOp: {
+ url: 'https://262.ecma-international.org/11.0/#sec-numberbitwiseop'
+ },
+ NumberToBigInt: {
+ url: 'https://262.ecma-international.org/11.0/#sec-numbertobigint'
+ },
+ NumericToRawBytes: {
+ url: 'https://262.ecma-international.org/11.0/#sec-numerictorawbytes'
+ },
+ ObjectDefineProperties: {
+ url: 'https://262.ecma-international.org/11.0/#sec-objectdefineproperties'
+ },
+ OrdinaryCallBindThis: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinarycallbindthis'
+ },
+ OrdinaryCallEvaluateBody: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinarycallevaluatebody'
+ },
+ OrdinaryCreateFromConstructor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinarycreatefromconstructor'
+ },
+ OrdinaryDefineOwnProperty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinarydefineownproperty'
+ },
+ OrdinaryDelete: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinarydelete'
+ },
+ OrdinaryFunctionCreate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinaryfunctioncreate'
+ },
+ OrdinaryGet: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinaryget'
+ },
+ OrdinaryGetOwnProperty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinarygetownproperty'
+ },
+ OrdinaryGetPrototypeOf: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinarygetprototypeof'
+ },
+ OrdinaryHasInstance: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinaryhasinstance'
+ },
+ OrdinaryHasProperty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinaryhasproperty'
+ },
+ OrdinaryIsExtensible: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinaryisextensible'
+ },
+ OrdinaryObjectCreate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinaryobjectcreate'
+ },
+ OrdinaryOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinaryownpropertykeys'
+ },
+ OrdinaryPreventExtensions: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinarypreventextensions'
+ },
+ OrdinarySet: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinaryset'
+ },
+ OrdinarySetPrototypeOf: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinarysetprototypeof'
+ },
+ OrdinarySetWithOwnDescriptor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinarysetwithowndescriptor'
+ },
+ OrdinaryToPrimitive: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ordinarytoprimitive'
+ },
+ ParseModule: {
+ url: 'https://262.ecma-international.org/11.0/#sec-parsemodule'
+ },
+ ParseScript: {
+ url: 'https://262.ecma-international.org/11.0/#sec-parse-script'
+ },
+ PerformEval: {
+ url: 'https://262.ecma-international.org/11.0/#sec-performeval'
+ },
+ PerformPromiseAll: {
+ url: 'https://262.ecma-international.org/11.0/#sec-performpromiseall'
+ },
+ PerformPromiseAllSettled: {
+ url: 'https://262.ecma-international.org/11.0/#sec-performpromiseallsettled'
+ },
+ PerformPromiseRace: {
+ url: 'https://262.ecma-international.org/11.0/#sec-performpromiserace'
+ },
+ PerformPromiseThen: {
+ url: 'https://262.ecma-international.org/11.0/#sec-performpromisethen'
+ },
+ PrepareForOrdinaryCall: {
+ url: 'https://262.ecma-international.org/11.0/#sec-prepareforordinarycall'
+ },
+ PrepareForTailCall: {
+ url: 'https://262.ecma-international.org/11.0/#sec-preparefortailcall'
+ },
+ PromiseResolve: {
+ url: 'https://262.ecma-international.org/11.0/#sec-promise-resolve'
+ },
+ ProxyCreate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-proxycreate'
+ },
+ PutValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-putvalue'
+ },
+ QuoteJSONString: {
+ url: 'https://262.ecma-international.org/11.0/#sec-quotejsonstring'
+ },
+ RawBytesToNumeric: {
+ url: 'https://262.ecma-international.org/11.0/#sec-rawbytestonumeric'
+ },
+ 'reads-bytes-from': {
+ url: 'https://262.ecma-international.org/11.0/#sec-reads-bytes-from'
+ },
+ 'reads-from': {
+ url: 'https://262.ecma-international.org/11.0/#sec-reads-from'
+ },
+ RegExpAlloc: {
+ url: 'https://262.ecma-international.org/11.0/#sec-regexpalloc'
+ },
+ RegExpBuiltinExec: {
+ url: 'https://262.ecma-international.org/11.0/#sec-regexpbuiltinexec'
+ },
+ RegExpCreate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-regexpcreate'
+ },
+ RegExpExec: {
+ url: 'https://262.ecma-international.org/11.0/#sec-regexpexec'
+ },
+ RegExpInitialize: {
+ url: 'https://262.ecma-international.org/11.0/#sec-regexpinitialize'
+ },
+ RejectPromise: {
+ url: 'https://262.ecma-international.org/11.0/#sec-rejectpromise'
+ },
+ RemoveWaiter: {
+ url: 'https://262.ecma-international.org/11.0/#sec-removewaiter'
+ },
+ RemoveWaiters: {
+ url: 'https://262.ecma-international.org/11.0/#sec-removewaiters'
+ },
+ RepeatMatcher: {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-repeatmatcher-abstract-operation'
+ },
+ RequireInternalSlot: {
+ url: 'https://262.ecma-international.org/11.0/#sec-requireinternalslot'
+ },
+ RequireObjectCoercible: {
+ url: 'https://262.ecma-international.org/11.0/#sec-requireobjectcoercible'
+ },
+ ResolveBinding: {
+ url: 'https://262.ecma-international.org/11.0/#sec-resolvebinding'
+ },
+ ResolveThisBinding: {
+ url: 'https://262.ecma-international.org/11.0/#sec-resolvethisbinding'
+ },
+ ReturnIfAbrupt: {
+ url: 'https://262.ecma-international.org/11.0/#sec-returnifabrupt'
+ },
+ SameValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-samevalue'
+ },
+ SameValueNonNumeric: {
+ url: 'https://262.ecma-international.org/11.0/#sec-samevaluenonnumeric'
+ },
+ SameValueZero: {
+ url: 'https://262.ecma-international.org/11.0/#sec-samevaluezero'
+ },
+ ScriptEvaluation: {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-scriptevaluation'
+ },
+ SecFromTime: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-SecFromTime'
+ },
+ SerializeJSONArray: {
+ url: 'https://262.ecma-international.org/11.0/#sec-serializejsonarray'
+ },
+ SerializeJSONObject: {
+ url: 'https://262.ecma-international.org/11.0/#sec-serializejsonobject'
+ },
+ SerializeJSONProperty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-serializejsonproperty'
+ },
+ Set: {
+ url: 'https://262.ecma-international.org/11.0/#sec-set-o-p-v-throw'
+ },
+ SetDefaultGlobalBindings: {
+ url: 'https://262.ecma-international.org/11.0/#sec-setdefaultglobalbindings'
+ },
+ SetFunctionLength: {
+ url: 'https://262.ecma-international.org/11.0/#sec-setfunctionlength'
+ },
+ SetFunctionName: {
+ url: 'https://262.ecma-international.org/11.0/#sec-setfunctionname'
+ },
+ SetImmutablePrototype: {
+ url: 'https://262.ecma-international.org/11.0/#sec-set-immutable-prototype'
+ },
+ SetIntegrityLevel: {
+ url: 'https://262.ecma-international.org/11.0/#sec-setintegritylevel'
+ },
+ SetRealmGlobalObject: {
+ url: 'https://262.ecma-international.org/11.0/#sec-setrealmglobalobject'
+ },
+ SetValueInBuffer: {
+ url: 'https://262.ecma-international.org/11.0/#sec-setvalueinbuffer'
+ },
+ SetViewValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-setviewvalue'
+ },
+ SharedDataBlockEventSet: {
+ url: 'https://262.ecma-international.org/11.0/#sec-sharedatablockeventset'
+ },
+ SortCompare: {
+ url: 'https://262.ecma-international.org/11.0/#sec-sortcompare'
+ },
+ SpeciesConstructor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-speciesconstructor'
+ },
+ SplitMatch: {
+ url: 'https://262.ecma-international.org/11.0/#sec-splitmatch'
+ },
+ 'Strict Equality Comparison': {
+ url: 'https://262.ecma-international.org/11.0/#sec-strict-equality-comparison'
+ },
+ StringCreate: {
+ url: 'https://262.ecma-international.org/11.0/#sec-stringcreate'
+ },
+ StringGetOwnProperty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-stringgetownproperty'
+ },
+ StringPad: {
+ url: 'https://262.ecma-international.org/11.0/#sec-stringpad'
+ },
+ StringToBigInt: {
+ url: 'https://262.ecma-international.org/11.0/#sec-stringtobigint'
+ },
+ Suspend: {
+ url: 'https://262.ecma-international.org/11.0/#sec-suspend'
+ },
+ SymbolDescriptiveString: {
+ url: 'https://262.ecma-international.org/11.0/#sec-symboldescriptivestring'
+ },
+ 'synchronizes-with': {
+ url: 'https://262.ecma-international.org/11.0/#sec-synchronizes-with'
+ },
+ TestIntegrityLevel: {
+ url: 'https://262.ecma-international.org/11.0/#sec-testintegritylevel'
+ },
+ thisBigIntValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-thisbigintvalue'
+ },
+ thisBooleanValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-thisbooleanvalue'
+ },
+ thisNumberValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-thisnumbervalue'
+ },
+ thisStringValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-thisstringvalue'
+ },
+ thisSymbolValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-thissymbolvalue'
+ },
+ thisTimeValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-thistimevalue'
+ },
+ ThrowCompletion: {
+ url: 'https://262.ecma-international.org/11.0/#sec-throwcompletion'
+ },
+ TimeClip: {
+ url: 'https://262.ecma-international.org/11.0/#sec-timeclip'
+ },
+ TimeFromYear: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-TimeFromYear'
+ },
+ TimeString: {
+ url: 'https://262.ecma-international.org/11.0/#sec-timestring'
+ },
+ TimeWithinDay: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-TimeWithinDay'
+ },
+ TimeZoneString: {
+ url: 'https://262.ecma-international.org/11.0/#sec-timezoneestring'
+ },
+ ToBigInt: {
+ url: 'https://262.ecma-international.org/11.0/#sec-tobigint'
+ },
+ ToBigInt64: {
+ url: 'https://262.ecma-international.org/11.0/#sec-tobigint64'
+ },
+ ToBigUint64: {
+ url: 'https://262.ecma-international.org/11.0/#sec-tobiguint64'
+ },
+ ToBoolean: {
+ url: 'https://262.ecma-international.org/11.0/#sec-toboolean'
+ },
+ ToDateString: {
+ url: 'https://262.ecma-international.org/11.0/#sec-todatestring'
+ },
+ ToIndex: {
+ url: 'https://262.ecma-international.org/11.0/#sec-toindex'
+ },
+ ToInt16: {
+ url: 'https://262.ecma-international.org/11.0/#sec-toint16'
+ },
+ ToInt32: {
+ url: 'https://262.ecma-international.org/11.0/#sec-toint32'
+ },
+ ToInt8: {
+ url: 'https://262.ecma-international.org/11.0/#sec-toint8'
+ },
+ ToInteger: {
+ url: 'https://262.ecma-international.org/11.0/#sec-tointeger'
+ },
+ ToLength: {
+ url: 'https://262.ecma-international.org/11.0/#sec-tolength'
+ },
+ ToNumber: {
+ url: 'https://262.ecma-international.org/11.0/#sec-tonumber'
+ },
+ ToNumeric: {
+ url: 'https://262.ecma-international.org/11.0/#sec-tonumeric'
+ },
+ ToObject: {
+ url: 'https://262.ecma-international.org/11.0/#sec-toobject'
+ },
+ ToPrimitive: {
+ url: 'https://262.ecma-international.org/11.0/#sec-toprimitive'
+ },
+ ToPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-topropertydescriptor'
+ },
+ ToPropertyKey: {
+ url: 'https://262.ecma-international.org/11.0/#sec-topropertykey'
+ },
+ ToString: {
+ url: 'https://262.ecma-international.org/11.0/#sec-tostring'
+ },
+ ToUint16: {
+ url: 'https://262.ecma-international.org/11.0/#sec-touint16'
+ },
+ ToUint32: {
+ url: 'https://262.ecma-international.org/11.0/#sec-touint32'
+ },
+ ToUint8: {
+ url: 'https://262.ecma-international.org/11.0/#sec-touint8'
+ },
+ ToUint8Clamp: {
+ url: 'https://262.ecma-international.org/11.0/#sec-touint8clamp'
+ },
+ TriggerPromiseReactions: {
+ url: 'https://262.ecma-international.org/11.0/#sec-triggerpromisereactions'
+ },
+ TrimString: {
+ url: 'https://262.ecma-international.org/11.0/#sec-trimstring'
+ },
+ Type: {
+ url: 'https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values'
+ },
+ TypedArrayCreate: {
+ url: 'https://262.ecma-international.org/11.0/#typedarray-create'
+ },
+ TypedArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/11.0/#typedarray-species-create'
+ },
+ UnicodeEscape: {
+ url: 'https://262.ecma-international.org/11.0/#sec-unicodeescape'
+ },
+ UnicodeMatchProperty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-unicodematchproperty-p'
+ },
+ UnicodeMatchPropertyValue: {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-unicodematchpropertyvalue-p-v'
+ },
+ UpdateEmpty: {
+ url: 'https://262.ecma-international.org/11.0/#sec-updateempty'
+ },
+ UTC: {
+ url: 'https://262.ecma-international.org/11.0/#sec-utc-t'
+ },
+ UTF16DecodeString: {
+ url: 'https://262.ecma-international.org/11.0/#sec-utf16decodestring'
+ },
+ UTF16DecodeSurrogatePair: {
+ url: 'https://262.ecma-international.org/11.0/#sec-utf16decodesurrogatepair'
+ },
+ UTF16Encode: {
+ url: 'https://262.ecma-international.org/11.0/#sec-utf16encode'
+ },
+ UTF16Encoding: {
+ url: 'https://262.ecma-international.org/11.0/#sec-utf16encoding'
+ },
+ ValidateAndApplyPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/11.0/#sec-validateandapplypropertydescriptor'
+ },
+ ValidateAtomicAccess: {
+ url: 'https://262.ecma-international.org/11.0/#sec-validateatomicaccess'
+ },
+ ValidateSharedIntegerTypedArray: {
+ url: 'https://262.ecma-international.org/11.0/#sec-validatesharedintegertypedarray'
+ },
+ ValidateTypedArray: {
+ url: 'https://262.ecma-international.org/11.0/#sec-validatetypedarray'
+ },
+ ValueOfReadEvent: {
+ url: 'https://262.ecma-international.org/11.0/#sec-valueofreadevent'
+ },
+ WeekDay: {
+ url: 'https://262.ecma-international.org/11.0/#sec-week-day'
+ },
+ WordCharacters: {
+ url: 'https://262.ecma-international.org/11.0/#sec-runtime-semantics-wordcharacters-abstract-operation'
+ },
+ YearFromTime: {
+ url: 'https://262.ecma-international.org/11.0/#eqn-YearFromTime'
+ }
};
diff --git a/node_modules/es-abstract/operations/2021.js b/node_modules/es-abstract/operations/2021.js
new file mode 100644
index 000000000..54d020943
--- /dev/null
+++ b/node_modules/es-abstract/operations/2021.js
@@ -0,0 +1,1279 @@
+'use strict';
+
+module.exports = {
+ abs: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-abs'
+ },
+ 'Abstract Equality Comparison': {
+ url: 'https://262.ecma-international.org/12.0/#sec-abstract-equality-comparison'
+ },
+ 'Abstract Relational Comparison': {
+ url: 'https://262.ecma-international.org/12.0/#sec-abstract-relational-comparison'
+ },
+ AddEntriesFromIterable: {
+ url: 'https://262.ecma-international.org/12.0/#sec-add-entries-from-iterable'
+ },
+ AddRestrictedFunctionProperties: {
+ url: 'https://262.ecma-international.org/12.0/#sec-addrestrictedfunctionproperties'
+ },
+ AddToKeptObjects: {
+ url: 'https://262.ecma-international.org/12.0/#sec-addtokeptobjects'
+ },
+ AddWaiter: {
+ url: 'https://262.ecma-international.org/12.0/#sec-addwaiter'
+ },
+ AdvanceStringIndex: {
+ url: 'https://262.ecma-international.org/12.0/#sec-advancestringindex'
+ },
+ 'agent-order': {
+ url: 'https://262.ecma-international.org/12.0/#sec-agent-order'
+ },
+ AgentCanSuspend: {
+ url: 'https://262.ecma-international.org/12.0/#sec-agentcansuspend'
+ },
+ AgentSignifier: {
+ url: 'https://262.ecma-international.org/12.0/#sec-agentsignifier'
+ },
+ AllocateArrayBuffer: {
+ url: 'https://262.ecma-international.org/12.0/#sec-allocatearraybuffer'
+ },
+ AllocateSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/12.0/#sec-allocatesharedarraybuffer'
+ },
+ AllocateTypedArray: {
+ url: 'https://262.ecma-international.org/12.0/#sec-allocatetypedarray'
+ },
+ AllocateTypedArrayBuffer: {
+ url: 'https://262.ecma-international.org/12.0/#sec-allocatetypedarraybuffer'
+ },
+ ApplyStringOrNumericBinaryOperator: {
+ url: 'https://262.ecma-international.org/12.0/#sec-applystringornumericbinaryoperator'
+ },
+ ArrayCreate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-arraycreate'
+ },
+ ArraySetLength: {
+ url: 'https://262.ecma-international.org/12.0/#sec-arraysetlength'
+ },
+ ArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-arrayspeciescreate'
+ },
+ AsyncFromSyncIteratorContinuation: {
+ url: 'https://262.ecma-international.org/12.0/#sec-asyncfromsynciteratorcontinuation'
+ },
+ AsyncFunctionStart: {
+ url: 'https://262.ecma-international.org/12.0/#sec-async-functions-abstract-operations-async-function-start'
+ },
+ AsyncGeneratorEnqueue: {
+ url: 'https://262.ecma-international.org/12.0/#sec-asyncgeneratorenqueue'
+ },
+ AsyncGeneratorReject: {
+ url: 'https://262.ecma-international.org/12.0/#sec-asyncgeneratorreject'
+ },
+ AsyncGeneratorResolve: {
+ url: 'https://262.ecma-international.org/12.0/#sec-asyncgeneratorresolve'
+ },
+ AsyncGeneratorResumeNext: {
+ url: 'https://262.ecma-international.org/12.0/#sec-asyncgeneratorresumenext'
+ },
+ AsyncGeneratorStart: {
+ url: 'https://262.ecma-international.org/12.0/#sec-asyncgeneratorstart'
+ },
+ AsyncGeneratorValidate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-asyncgeneratorvalidate'
+ },
+ AsyncGeneratorYield: {
+ url: 'https://262.ecma-international.org/12.0/#sec-asyncgeneratoryield'
+ },
+ AsyncIteratorClose: {
+ url: 'https://262.ecma-international.org/12.0/#sec-asynciteratorclose'
+ },
+ AtomicReadModifyWrite: {
+ url: 'https://262.ecma-international.org/12.0/#sec-atomicreadmodifywrite'
+ },
+ Await: {
+ url: 'https://262.ecma-international.org/12.0/#await'
+ },
+ BackreferenceMatcher: {
+ url: 'https://262.ecma-international.org/12.0/#sec-backreference-matcher'
+ },
+ 'BigInt::add': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-add'
+ },
+ 'BigInt::bitwiseAND': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-bitwiseAND'
+ },
+ 'BigInt::bitwiseNOT': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-bitwiseNOT'
+ },
+ 'BigInt::bitwiseOR': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-bitwiseOR'
+ },
+ 'BigInt::bitwiseXOR': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-bitwiseXOR'
+ },
+ 'BigInt::divide': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-divide'
+ },
+ 'BigInt::equal': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-equal'
+ },
+ 'BigInt::exponentiate': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-exponentiate'
+ },
+ 'BigInt::leftShift': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-leftShift'
+ },
+ 'BigInt::lessThan': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-lessThan'
+ },
+ 'BigInt::multiply': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-multiply'
+ },
+ 'BigInt::remainder': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-remainder'
+ },
+ 'BigInt::sameValue': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-sameValue'
+ },
+ 'BigInt::sameValueZero': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-sameValueZero'
+ },
+ 'BigInt::signedRightShift': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-signedRightShift'
+ },
+ 'BigInt::subtract': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-subtract'
+ },
+ 'BigInt::toString': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-tostring'
+ },
+ 'BigInt::unaryMinus': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-unaryMinus'
+ },
+ 'BigInt::unsignedRightShift': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-bigint-unsignedRightShift'
+ },
+ BigIntBitwiseOp: {
+ url: 'https://262.ecma-international.org/12.0/#sec-bigintbitwiseop'
+ },
+ BinaryAnd: {
+ url: 'https://262.ecma-international.org/12.0/#sec-binaryand'
+ },
+ BinaryOr: {
+ url: 'https://262.ecma-international.org/12.0/#sec-binaryor'
+ },
+ BinaryXor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-binaryxor'
+ },
+ BlockDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/12.0/#sec-blockdeclarationinstantiation'
+ },
+ BoundFunctionCreate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-boundfunctioncreate'
+ },
+ ByteListBitwiseOp: {
+ url: 'https://262.ecma-international.org/12.0/#sec-bytelistbitwiseop'
+ },
+ ByteListEqual: {
+ url: 'https://262.ecma-international.org/12.0/#sec-bytelistequal'
+ },
+ Call: {
+ url: 'https://262.ecma-international.org/12.0/#sec-call'
+ },
+ Canonicalize: {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-canonicalize-ch'
+ },
+ CanonicalNumericIndexString: {
+ url: 'https://262.ecma-international.org/12.0/#sec-canonicalnumericindexstring'
+ },
+ CaseClauseIsSelected: {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-caseclauseisselected'
+ },
+ CharacterRange: {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-characterrange-abstract-operation'
+ },
+ CharacterRangeOrUnion: {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation'
+ },
+ CharacterSetMatcher: {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation'
+ },
+ clamp: {
+ url: 'https://262.ecma-international.org/12.0/#clamping'
+ },
+ CleanupFinalizationRegistry: {
+ url: 'https://262.ecma-international.org/12.0/#sec-cleanup-finalization-registry'
+ },
+ ClearKeptObjects: {
+ url: 'https://262.ecma-international.org/12.0/#sec-clear-kept-objects'
+ },
+ CloneArrayBuffer: {
+ url: 'https://262.ecma-international.org/12.0/#sec-clonearraybuffer'
+ },
+ CodePointAt: {
+ url: 'https://262.ecma-international.org/12.0/#sec-codepointat'
+ },
+ CodePointsToString: {
+ url: 'https://262.ecma-international.org/12.0/#sec-codepointstostring'
+ },
+ CompletePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-completepropertydescriptor'
+ },
+ Completion: {
+ url: 'https://262.ecma-international.org/12.0/#sec-completion-record-specification-type'
+ },
+ CompletionRecord: {
+ url: 'https://262.ecma-international.org/12.0/#sec-completion-record-specification-type'
+ },
+ ComposeWriteEventBytes: {
+ url: 'https://262.ecma-international.org/12.0/#sec-composewriteeventbytes'
+ },
+ Construct: {
+ url: 'https://262.ecma-international.org/12.0/#sec-construct'
+ },
+ CopyDataBlockBytes: {
+ url: 'https://262.ecma-international.org/12.0/#sec-copydatablockbytes'
+ },
+ CopyDataProperties: {
+ url: 'https://262.ecma-international.org/12.0/#sec-copydataproperties'
+ },
+ CreateArrayFromList: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createarrayfromlist'
+ },
+ CreateArrayIterator: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createarrayiterator'
+ },
+ CreateAsyncFromSyncIterator: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createasyncfromsynciterator'
+ },
+ CreateAsyncIteratorFromClosure: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createasynciteratorfromclosure'
+ },
+ CreateBuiltinFunction: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createbuiltinfunction'
+ },
+ CreateByteDataBlock: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createbytedatablock'
+ },
+ CreateDataProperty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createdataproperty'
+ },
+ CreateDataPropertyOrThrow: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createdatapropertyorthrow'
+ },
+ CreateDynamicFunction: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createdynamicfunction'
+ },
+ CreateForInIterator: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createforiniterator'
+ },
+ CreateHTML: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createhtml'
+ },
+ CreateIntrinsics: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createintrinsics'
+ },
+ CreateIteratorFromClosure: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createiteratorfromclosure'
+ },
+ CreateIterResultObject: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createiterresultobject'
+ },
+ CreateListFromArrayLike: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createlistfromarraylike'
+ },
+ CreateListIteratorRecord: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createlistiteratorRecord'
+ },
+ CreateMapIterator: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createmapiterator'
+ },
+ CreateMappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createmappedargumentsobject'
+ },
+ CreateMethodProperty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createmethodproperty'
+ },
+ CreatePerIterationEnvironment: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createperiterationenvironment'
+ },
+ CreateRealm: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createrealm'
+ },
+ CreateRegExpStringIterator: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createregexpstringiterator'
+ },
+ CreateResolvingFunctions: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createresolvingfunctions'
+ },
+ CreateSetIterator: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createsetiterator'
+ },
+ CreateSharedByteDataBlock: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createsharedbytedatablock'
+ },
+ CreateUnmappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/12.0/#sec-createunmappedargumentsobject'
+ },
+ DateFromTime: {
+ url: 'https://262.ecma-international.org/12.0/#sec-date-number'
+ },
+ DateString: {
+ url: 'https://262.ecma-international.org/12.0/#sec-datestring'
+ },
+ Day: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-Day'
+ },
+ DayFromYear: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-DaysFromYear'
+ },
+ DaysInYear: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-DaysInYear'
+ },
+ DayWithinYear: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-DayWithinYear'
+ },
+ Decode: {
+ url: 'https://262.ecma-international.org/12.0/#sec-decode'
+ },
+ DefinePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/12.0/#sec-definepropertyorthrow'
+ },
+ DeletePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/12.0/#sec-deletepropertyorthrow'
+ },
+ DetachArrayBuffer: {
+ url: 'https://262.ecma-international.org/12.0/#sec-detacharraybuffer'
+ },
+ Encode: {
+ url: 'https://262.ecma-international.org/12.0/#sec-encode'
+ },
+ EnterCriticalSection: {
+ url: 'https://262.ecma-international.org/12.0/#sec-entercriticalsection'
+ },
+ EnumerableOwnPropertyNames: {
+ url: 'https://262.ecma-international.org/12.0/#sec-enumerableownpropertynames'
+ },
+ EnumerateObjectProperties: {
+ url: 'https://262.ecma-international.org/12.0/#sec-enumerate-object-properties'
+ },
+ EscapeRegExpPattern: {
+ url: 'https://262.ecma-international.org/12.0/#sec-escaperegexppattern'
+ },
+ EvalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/12.0/#sec-evaldeclarationinstantiation'
+ },
+ EvaluateCall: {
+ url: 'https://262.ecma-international.org/12.0/#sec-evaluatecall'
+ },
+ EvaluateNew: {
+ url: 'https://262.ecma-international.org/12.0/#sec-evaluatenew'
+ },
+ EvaluatePropertyAccessWithExpressionKey: {
+ url: 'https://262.ecma-international.org/12.0/#sec-evaluate-property-access-with-expression-key'
+ },
+ EvaluatePropertyAccessWithIdentifierKey: {
+ url: 'https://262.ecma-international.org/12.0/#sec-evaluate-property-access-with-identifier-key'
+ },
+ EvaluateStringOrNumericBinaryExpression: {
+ url: 'https://262.ecma-international.org/12.0/#sec-evaluatestringornumericbinaryexpression'
+ },
+ EventSet: {
+ url: 'https://262.ecma-international.org/12.0/#sec-event-set'
+ },
+ ExecuteModule: {
+ url: 'https://262.ecma-international.org/12.0/#sec-source-text-module-record-execute-module'
+ },
+ FinishDynamicImport: {
+ url: 'https://262.ecma-international.org/12.0/#sec-finishdynamicimport'
+ },
+ FlattenIntoArray: {
+ url: 'https://262.ecma-international.org/12.0/#sec-flattenintoarray'
+ },
+ floor: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-floor'
+ },
+ ForBodyEvaluation: {
+ url: 'https://262.ecma-international.org/12.0/#sec-forbodyevaluation'
+ },
+ 'ForIn/OfBodyEvaluation': {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset'
+ },
+ 'ForIn/OfHeadEvaluation': {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-forinofheadevaluation'
+ },
+ FromPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-frompropertydescriptor'
+ },
+ FulfillPromise: {
+ url: 'https://262.ecma-international.org/12.0/#sec-fulfillpromise'
+ },
+ FunctionDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/12.0/#sec-functiondeclarationinstantiation'
+ },
+ GeneratorResume: {
+ url: 'https://262.ecma-international.org/12.0/#sec-generatorresume'
+ },
+ GeneratorResumeAbrupt: {
+ url: 'https://262.ecma-international.org/12.0/#sec-generatorresumeabrupt'
+ },
+ GeneratorStart: {
+ url: 'https://262.ecma-international.org/12.0/#sec-generatorstart'
+ },
+ GeneratorValidate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-generatorvalidate'
+ },
+ GeneratorYield: {
+ url: 'https://262.ecma-international.org/12.0/#sec-generatoryield'
+ },
+ Get: {
+ url: 'https://262.ecma-international.org/12.0/#sec-get-o-p'
+ },
+ GetActiveScriptOrModule: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getactivescriptormodule'
+ },
+ GetFunctionRealm: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getfunctionrealm'
+ },
+ GetGeneratorKind: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getgeneratorkind'
+ },
+ GetGlobalObject: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getglobalobject'
+ },
+ GetIdentifierReference: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getidentifierreference'
+ },
+ GetIterator: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getiterator'
+ },
+ GetMethod: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getmethod'
+ },
+ GetModifySetValueInBuffer: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getmodifysetvalueinbuffer'
+ },
+ GetModuleNamespace: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getmodulenamespace'
+ },
+ GetNewTarget: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getnewtarget'
+ },
+ GetOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getownpropertykeys'
+ },
+ GetPromiseResolve: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getpromiseresolve'
+ },
+ GetPrototypeFromConstructor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getprototypefromconstructor'
+ },
+ GetSubstitution: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getsubstitution'
+ },
+ GetSuperConstructor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getsuperconstructor'
+ },
+ GetTemplateObject: {
+ url: 'https://262.ecma-international.org/12.0/#sec-gettemplateobject'
+ },
+ GetThisEnvironment: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getthisenvironment'
+ },
+ GetThisValue: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getthisvalue'
+ },
+ GetV: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getv'
+ },
+ GetValue: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getvalue'
+ },
+ GetValueFromBuffer: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getvaluefrombuffer'
+ },
+ GetViewValue: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getviewvalue'
+ },
+ GetWaiterList: {
+ url: 'https://262.ecma-international.org/12.0/#sec-getwaiterlist'
+ },
+ GlobalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/12.0/#sec-globaldeclarationinstantiation'
+ },
+ 'happens-before': {
+ url: 'https://262.ecma-international.org/12.0/#sec-happens-before'
+ },
+ HasOwnProperty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-hasownproperty'
+ },
+ HasProperty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-hasproperty'
+ },
+ 'host-synchronizes-with': {
+ url: 'https://262.ecma-international.org/12.0/#sec-host-synchronizes-with'
+ },
+ HostEventSet: {
+ url: 'https://262.ecma-international.org/12.0/#sec-hosteventset'
+ },
+ HourFromTime: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-HourFromTime'
+ },
+ IfAbruptRejectPromise: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ifabruptrejectpromise'
+ },
+ ImportedLocalNames: {
+ url: 'https://262.ecma-international.org/12.0/#sec-importedlocalnames'
+ },
+ InitializeBoundName: {
+ url: 'https://262.ecma-international.org/12.0/#sec-initializeboundname'
+ },
+ InitializeEnvironment: {
+ url: 'https://262.ecma-international.org/12.0/#sec-source-text-module-record-initialize-environment'
+ },
+ InitializeHostDefinedRealm: {
+ url: 'https://262.ecma-international.org/12.0/#sec-initializehostdefinedrealm'
+ },
+ InitializeReferencedBinding: {
+ url: 'https://262.ecma-international.org/12.0/#sec-initializereferencedbinding'
+ },
+ InitializeTypedArrayFromArrayBuffer: {
+ url: 'https://262.ecma-international.org/12.0/#sec-initializetypedarrayfromarraybuffer'
+ },
+ InitializeTypedArrayFromArrayLike: {
+ url: 'https://262.ecma-international.org/12.0/#sec-initializetypedarrayfromarraylike'
+ },
+ InitializeTypedArrayFromList: {
+ url: 'https://262.ecma-international.org/12.0/#sec-initializetypedarrayfromlist'
+ },
+ InitializeTypedArrayFromTypedArray: {
+ url: 'https://262.ecma-international.org/12.0/#sec-initializetypedarrayfromtypedarray'
+ },
+ InLeapYear: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-InLeapYear'
+ },
+ InnerModuleEvaluation: {
+ url: 'https://262.ecma-international.org/12.0/#sec-innermoduleevaluation'
+ },
+ InnerModuleLinking: {
+ url: 'https://262.ecma-international.org/12.0/#sec-InnerModuleLinking'
+ },
+ InstanceofOperator: {
+ url: 'https://262.ecma-international.org/12.0/#sec-instanceofoperator'
+ },
+ IntegerIndexedElementGet: {
+ url: 'https://262.ecma-international.org/12.0/#sec-integerindexedelementget'
+ },
+ IntegerIndexedElementSet: {
+ url: 'https://262.ecma-international.org/12.0/#sec-integerindexedelementset'
+ },
+ IntegerIndexedObjectCreate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-integerindexedobjectcreate'
+ },
+ InternalizeJSONProperty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-internalizejsonproperty'
+ },
+ Invoke: {
+ url: 'https://262.ecma-international.org/12.0/#sec-invoke'
+ },
+ IsAccessorDescriptor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isaccessordescriptor'
+ },
+ IsAnonymousFunctionDefinition: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isanonymousfunctiondefinition'
+ },
+ IsArray: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isarray'
+ },
+ IsBigIntElementType: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isbigintelementtype'
+ },
+ IsCallable: {
+ url: 'https://262.ecma-international.org/12.0/#sec-iscallable'
+ },
+ IsCompatiblePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-iscompatiblepropertydescriptor'
+ },
+ IsConcatSpreadable: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isconcatspreadable'
+ },
+ IsConstructor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isconstructor'
+ },
+ IsDataDescriptor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isdatadescriptor'
+ },
+ IsDetachedBuffer: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isdetachedbuffer'
+ },
+ IsExtensible: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isextensible-o'
+ },
+ IsGenericDescriptor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isgenericdescriptor'
+ },
+ IsInTailPosition: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isintailposition'
+ },
+ IsIntegralNumber: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isintegralnumber'
+ },
+ IsLabelledFunction: {
+ url: 'https://262.ecma-international.org/12.0/#sec-islabelledfunction'
+ },
+ IsNoTearConfiguration: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isnotearconfiguration'
+ },
+ IsPromise: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ispromise'
+ },
+ IsPropertyKey: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ispropertykey'
+ },
+ IsPropertyReference: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ispropertyreference'
+ },
+ IsRegExp: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isregexp'
+ },
+ IsSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/12.0/#sec-issharedarraybuffer'
+ },
+ IsStringPrefix: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isstringprefix'
+ },
+ IsSuperReference: {
+ url: 'https://262.ecma-international.org/12.0/#sec-issuperreference'
+ },
+ IsUnclampedIntegerElementType: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isunclampedintegerelementtype'
+ },
+ IsUnresolvableReference: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isunresolvablereference'
+ },
+ IsUnsignedElementType: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isunsignedelementtype'
+ },
+ IsValidIntegerIndex: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isvalidintegerindex'
+ },
+ IsValidRegularExpressionLiteral: {
+ url: 'https://262.ecma-international.org/12.0/#sec-isvalidregularexpressionliteral'
+ },
+ IsWordChar: {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-iswordchar-abstract-operation'
+ },
+ IterableToList: {
+ url: 'https://262.ecma-international.org/12.0/#sec-iterabletolist'
+ },
+ IteratorClose: {
+ url: 'https://262.ecma-international.org/12.0/#sec-iteratorclose'
+ },
+ IteratorComplete: {
+ url: 'https://262.ecma-international.org/12.0/#sec-iteratorcomplete'
+ },
+ IteratorNext: {
+ url: 'https://262.ecma-international.org/12.0/#sec-iteratornext'
+ },
+ IteratorStep: {
+ url: 'https://262.ecma-international.org/12.0/#sec-iteratorstep'
+ },
+ IteratorValue: {
+ url: 'https://262.ecma-international.org/12.0/#sec-iteratorvalue'
+ },
+ LeaveCriticalSection: {
+ url: 'https://262.ecma-international.org/12.0/#sec-leavecriticalsection'
+ },
+ LengthOfArrayLike: {
+ url: 'https://262.ecma-international.org/12.0/#sec-lengthofarraylike'
+ },
+ LocalTime: {
+ url: 'https://262.ecma-international.org/12.0/#sec-localtime'
+ },
+ LocalTZA: {
+ url: 'https://262.ecma-international.org/12.0/#sec-local-time-zone-adjustment'
+ },
+ LoopContinues: {
+ url: 'https://262.ecma-international.org/12.0/#sec-loopcontinues'
+ },
+ MakeArgGetter: {
+ url: 'https://262.ecma-international.org/12.0/#sec-makearggetter'
+ },
+ MakeArgSetter: {
+ url: 'https://262.ecma-international.org/12.0/#sec-makeargsetter'
+ },
+ MakeBasicObject: {
+ url: 'https://262.ecma-international.org/12.0/#sec-makebasicobject'
+ },
+ MakeClassConstructor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-makeclassconstructor'
+ },
+ MakeConstructor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-makeconstructor'
+ },
+ MakeDate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-makedate'
+ },
+ MakeDay: {
+ url: 'https://262.ecma-international.org/12.0/#sec-makeday'
+ },
+ MakeMethod: {
+ url: 'https://262.ecma-international.org/12.0/#sec-makemethod'
+ },
+ MakeSuperPropertyReference: {
+ url: 'https://262.ecma-international.org/12.0/#sec-makesuperpropertyreference'
+ },
+ MakeTime: {
+ url: 'https://262.ecma-international.org/12.0/#sec-maketime'
+ },
+ max: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-max'
+ },
+ 'memory-order': {
+ url: 'https://262.ecma-international.org/12.0/#sec-memory-order'
+ },
+ min: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-min'
+ },
+ MinFromTime: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-MinFromTime'
+ },
+ ModuleNamespaceCreate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-modulenamespacecreate'
+ },
+ modulo: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-modulo'
+ },
+ MonthFromTime: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-MonthFromTime'
+ },
+ msFromTime: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-msFromTime'
+ },
+ NewDeclarativeEnvironment: {
+ url: 'https://262.ecma-international.org/12.0/#sec-newdeclarativeenvironment'
+ },
+ NewFunctionEnvironment: {
+ url: 'https://262.ecma-international.org/12.0/#sec-newfunctionenvironment'
+ },
+ NewGlobalEnvironment: {
+ url: 'https://262.ecma-international.org/12.0/#sec-newglobalenvironment'
+ },
+ NewModuleEnvironment: {
+ url: 'https://262.ecma-international.org/12.0/#sec-newmoduleenvironment'
+ },
+ NewObjectEnvironment: {
+ url: 'https://262.ecma-international.org/12.0/#sec-newobjectenvironment'
+ },
+ NewPromiseCapability: {
+ url: 'https://262.ecma-international.org/12.0/#sec-newpromisecapability'
+ },
+ NewPromiseReactionJob: {
+ url: 'https://262.ecma-international.org/12.0/#sec-newpromisereactionjob'
+ },
+ NewPromiseResolveThenableJob: {
+ url: 'https://262.ecma-international.org/12.0/#sec-newpromiseresolvethenablejob'
+ },
+ NormalCompletion: {
+ url: 'https://262.ecma-international.org/12.0/#sec-normalcompletion'
+ },
+ NotifyWaiter: {
+ url: 'https://262.ecma-international.org/12.0/#sec-notifywaiter'
+ },
+ 'Number::add': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-add'
+ },
+ 'Number::bitwiseAND': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-bitwiseAND'
+ },
+ 'Number::bitwiseNOT': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-bitwiseNOT'
+ },
+ 'Number::bitwiseOR': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-bitwiseOR'
+ },
+ 'Number::bitwiseXOR': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-bitwiseXOR'
+ },
+ 'Number::divide': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-divide'
+ },
+ 'Number::equal': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-equal'
+ },
+ 'Number::exponentiate': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-exponentiate'
+ },
+ 'Number::leftShift': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-leftShift'
+ },
+ 'Number::lessThan': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-lessThan'
+ },
+ 'Number::multiply': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-multiply'
+ },
+ 'Number::remainder': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-remainder'
+ },
+ 'Number::sameValue': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-sameValue'
+ },
+ 'Number::sameValueZero': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-sameValueZero'
+ },
+ 'Number::signedRightShift': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-signedRightShift'
+ },
+ 'Number::subtract': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-subtract'
+ },
+ 'Number::toString': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-tostring'
+ },
+ 'Number::unaryMinus': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-unaryMinus'
+ },
+ 'Number::unsignedRightShift': {
+ url: 'https://262.ecma-international.org/12.0/#sec-numeric-types-number-unsignedRightShift'
+ },
+ NumberBitwiseOp: {
+ url: 'https://262.ecma-international.org/12.0/#sec-numberbitwiseop'
+ },
+ NumberToBigInt: {
+ url: 'https://262.ecma-international.org/12.0/#sec-numbertobigint'
+ },
+ NumericToRawBytes: {
+ url: 'https://262.ecma-international.org/12.0/#sec-numerictorawbytes'
+ },
+ ObjectDefineProperties: {
+ url: 'https://262.ecma-international.org/12.0/#sec-objectdefineproperties'
+ },
+ OrdinaryCallBindThis: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinarycallbindthis'
+ },
+ OrdinaryCallEvaluateBody: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinarycallevaluatebody'
+ },
+ OrdinaryCreateFromConstructor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinarycreatefromconstructor'
+ },
+ OrdinaryDefineOwnProperty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinarydefineownproperty'
+ },
+ OrdinaryDelete: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinarydelete'
+ },
+ OrdinaryFunctionCreate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinaryfunctioncreate'
+ },
+ OrdinaryGet: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinaryget'
+ },
+ OrdinaryGetOwnProperty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinarygetownproperty'
+ },
+ OrdinaryGetPrototypeOf: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinarygetprototypeof'
+ },
+ OrdinaryHasInstance: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinaryhasinstance'
+ },
+ OrdinaryHasProperty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinaryhasproperty'
+ },
+ OrdinaryIsExtensible: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinaryisextensible'
+ },
+ OrdinaryObjectCreate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinaryobjectcreate'
+ },
+ OrdinaryOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinaryownpropertykeys'
+ },
+ OrdinaryPreventExtensions: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinarypreventextensions'
+ },
+ OrdinarySet: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinaryset'
+ },
+ OrdinarySetPrototypeOf: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinarysetprototypeof'
+ },
+ OrdinarySetWithOwnDescriptor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinarysetwithowndescriptor'
+ },
+ OrdinaryToPrimitive: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ordinarytoprimitive'
+ },
+ ParseModule: {
+ url: 'https://262.ecma-international.org/12.0/#sec-parsemodule'
+ },
+ ParsePattern: {
+ url: 'https://262.ecma-international.org/12.0/#sec-parsepattern'
+ },
+ ParseScript: {
+ url: 'https://262.ecma-international.org/12.0/#sec-parse-script'
+ },
+ ParseText: {
+ url: 'https://262.ecma-international.org/12.0/#sec-parsetext'
+ },
+ PerformEval: {
+ url: 'https://262.ecma-international.org/12.0/#sec-performeval'
+ },
+ PerformPromiseAll: {
+ url: 'https://262.ecma-international.org/12.0/#sec-performpromiseall'
+ },
+ PerformPromiseAllSettled: {
+ url: 'https://262.ecma-international.org/12.0/#sec-performpromiseallsettled'
+ },
+ PerformPromiseAny: {
+ url: 'https://262.ecma-international.org/12.0/#sec-performpromiseany'
+ },
+ PerformPromiseRace: {
+ url: 'https://262.ecma-international.org/12.0/#sec-performpromiserace'
+ },
+ PerformPromiseThen: {
+ url: 'https://262.ecma-international.org/12.0/#sec-performpromisethen'
+ },
+ PrepareForOrdinaryCall: {
+ url: 'https://262.ecma-international.org/12.0/#sec-prepareforordinarycall'
+ },
+ PrepareForTailCall: {
+ url: 'https://262.ecma-international.org/12.0/#sec-preparefortailcall'
+ },
+ PromiseResolve: {
+ url: 'https://262.ecma-international.org/12.0/#sec-promise-resolve'
+ },
+ ProxyCreate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-proxycreate'
+ },
+ PutValue: {
+ url: 'https://262.ecma-international.org/12.0/#sec-putvalue'
+ },
+ QuoteJSONString: {
+ url: 'https://262.ecma-international.org/12.0/#sec-quotejsonstring'
+ },
+ RawBytesToNumeric: {
+ url: 'https://262.ecma-international.org/12.0/#sec-rawbytestonumeric'
+ },
+ 'reads-bytes-from': {
+ url: 'https://262.ecma-international.org/12.0/#sec-reads-bytes-from'
+ },
+ 'reads-from': {
+ url: 'https://262.ecma-international.org/12.0/#sec-reads-from'
+ },
+ RegExpAlloc: {
+ url: 'https://262.ecma-international.org/12.0/#sec-regexpalloc'
+ },
+ RegExpBuiltinExec: {
+ url: 'https://262.ecma-international.org/12.0/#sec-regexpbuiltinexec'
+ },
+ RegExpCreate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-regexpcreate'
+ },
+ RegExpExec: {
+ url: 'https://262.ecma-international.org/12.0/#sec-regexpexec'
+ },
+ RegExpInitialize: {
+ url: 'https://262.ecma-international.org/12.0/#sec-regexpinitialize'
+ },
+ RejectPromise: {
+ url: 'https://262.ecma-international.org/12.0/#sec-rejectpromise'
+ },
+ RemoveWaiter: {
+ url: 'https://262.ecma-international.org/12.0/#sec-removewaiter'
+ },
+ RemoveWaiters: {
+ url: 'https://262.ecma-international.org/12.0/#sec-removewaiters'
+ },
+ RepeatMatcher: {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-repeatmatcher-abstract-operation'
+ },
+ RequireInternalSlot: {
+ url: 'https://262.ecma-international.org/12.0/#sec-requireinternalslot'
+ },
+ RequireObjectCoercible: {
+ url: 'https://262.ecma-international.org/12.0/#sec-requireobjectcoercible'
+ },
+ ResolveBinding: {
+ url: 'https://262.ecma-international.org/12.0/#sec-resolvebinding'
+ },
+ ResolveThisBinding: {
+ url: 'https://262.ecma-international.org/12.0/#sec-resolvethisbinding'
+ },
+ ReturnIfAbrupt: {
+ url: 'https://262.ecma-international.org/12.0/#sec-returnifabrupt'
+ },
+ SameValue: {
+ url: 'https://262.ecma-international.org/12.0/#sec-samevalue'
+ },
+ SameValueNonNumeric: {
+ url: 'https://262.ecma-international.org/12.0/#sec-samevaluenonnumeric'
+ },
+ SameValueZero: {
+ url: 'https://262.ecma-international.org/12.0/#sec-samevaluezero'
+ },
+ ScriptEvaluation: {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-scriptevaluation'
+ },
+ SecFromTime: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-SecFromTime'
+ },
+ SerializeJSONArray: {
+ url: 'https://262.ecma-international.org/12.0/#sec-serializejsonarray'
+ },
+ SerializeJSONObject: {
+ url: 'https://262.ecma-international.org/12.0/#sec-serializejsonobject'
+ },
+ SerializeJSONProperty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-serializejsonproperty'
+ },
+ Set: {
+ url: 'https://262.ecma-international.org/12.0/#sec-set-o-p-v-throw'
+ },
+ SetDefaultGlobalBindings: {
+ url: 'https://262.ecma-international.org/12.0/#sec-setdefaultglobalbindings'
+ },
+ SetFunctionLength: {
+ url: 'https://262.ecma-international.org/12.0/#sec-setfunctionlength'
+ },
+ SetFunctionName: {
+ url: 'https://262.ecma-international.org/12.0/#sec-setfunctionname'
+ },
+ SetImmutablePrototype: {
+ url: 'https://262.ecma-international.org/12.0/#sec-set-immutable-prototype'
+ },
+ SetIntegrityLevel: {
+ url: 'https://262.ecma-international.org/12.0/#sec-setintegritylevel'
+ },
+ SetRealmGlobalObject: {
+ url: 'https://262.ecma-international.org/12.0/#sec-setrealmglobalobject'
+ },
+ SetTypedArrayFromArrayLike: {
+ url: 'https://262.ecma-international.org/12.0/#sec-settypedarrayfromarraylike'
+ },
+ SetTypedArrayFromTypedArray: {
+ url: 'https://262.ecma-international.org/12.0/#sec-settypedarrayfromtypedarray'
+ },
+ SetValueInBuffer: {
+ url: 'https://262.ecma-international.org/12.0/#sec-setvalueinbuffer'
+ },
+ SetViewValue: {
+ url: 'https://262.ecma-international.org/12.0/#sec-setviewvalue'
+ },
+ SharedDataBlockEventSet: {
+ url: 'https://262.ecma-international.org/12.0/#sec-sharedatablockeventset'
+ },
+ SortCompare: {
+ url: 'https://262.ecma-international.org/12.0/#sec-sortcompare'
+ },
+ SpeciesConstructor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-speciesconstructor'
+ },
+ SplitMatch: {
+ url: 'https://262.ecma-international.org/12.0/#sec-splitmatch'
+ },
+ 'Strict Equality Comparison': {
+ url: 'https://262.ecma-international.org/12.0/#sec-strict-equality-comparison'
+ },
+ StringCreate: {
+ url: 'https://262.ecma-international.org/12.0/#sec-stringcreate'
+ },
+ StringGetOwnProperty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-stringgetownproperty'
+ },
+ StringIndexOf: {
+ url: 'https://262.ecma-international.org/12.0/#sec-stringindexof'
+ },
+ StringPad: {
+ url: 'https://262.ecma-international.org/12.0/#sec-stringpad'
+ },
+ StringToBigInt: {
+ url: 'https://262.ecma-international.org/12.0/#sec-stringtobigint'
+ },
+ StringToCodePoints: {
+ url: 'https://262.ecma-international.org/12.0/#sec-stringtocodepoints'
+ },
+ substring: {
+ url: 'https://262.ecma-international.org/12.0/#substring'
+ },
+ SuspendAgent: {
+ url: 'https://262.ecma-international.org/12.0/#sec-suspendagent'
+ },
+ SymbolDescriptiveString: {
+ url: 'https://262.ecma-international.org/12.0/#sec-symboldescriptivestring'
+ },
+ 'synchronizes-with': {
+ url: 'https://262.ecma-international.org/12.0/#sec-synchronizes-with'
+ },
+ TestIntegrityLevel: {
+ url: 'https://262.ecma-international.org/12.0/#sec-testintegritylevel'
+ },
+ thisBigIntValue: {
+ url: 'https://262.ecma-international.org/12.0/#thisbigintvalue'
+ },
+ thisBooleanValue: {
+ url: 'https://262.ecma-international.org/12.0/#thisbooleanvalue'
+ },
+ thisNumberValue: {
+ url: 'https://262.ecma-international.org/12.0/#thisnumbervalue'
+ },
+ thisStringValue: {
+ url: 'https://262.ecma-international.org/12.0/#thisstringvalue'
+ },
+ thisSymbolValue: {
+ url: 'https://262.ecma-international.org/12.0/#thissymbolvalue'
+ },
+ thisTimeValue: {
+ url: 'https://262.ecma-international.org/12.0/#thistimevalue'
+ },
+ ThrowCompletion: {
+ url: 'https://262.ecma-international.org/12.0/#sec-throwcompletion'
+ },
+ TimeClip: {
+ url: 'https://262.ecma-international.org/12.0/#sec-timeclip'
+ },
+ TimeFromYear: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-TimeFromYear'
+ },
+ TimeString: {
+ url: 'https://262.ecma-international.org/12.0/#sec-timestring'
+ },
+ TimeWithinDay: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-TimeWithinDay'
+ },
+ TimeZoneString: {
+ url: 'https://262.ecma-international.org/12.0/#sec-timezoneestring'
+ },
+ ToBigInt: {
+ url: 'https://262.ecma-international.org/12.0/#sec-tobigint'
+ },
+ ToBigInt64: {
+ url: 'https://262.ecma-international.org/12.0/#sec-tobigint64'
+ },
+ ToBigUint64: {
+ url: 'https://262.ecma-international.org/12.0/#sec-tobiguint64'
+ },
+ ToBoolean: {
+ url: 'https://262.ecma-international.org/12.0/#sec-toboolean'
+ },
+ ToDateString: {
+ url: 'https://262.ecma-international.org/12.0/#sec-todatestring'
+ },
+ ToIndex: {
+ url: 'https://262.ecma-international.org/12.0/#sec-toindex'
+ },
+ ToInt16: {
+ url: 'https://262.ecma-international.org/12.0/#sec-toint16'
+ },
+ ToInt32: {
+ url: 'https://262.ecma-international.org/12.0/#sec-toint32'
+ },
+ ToInt8: {
+ url: 'https://262.ecma-international.org/12.0/#sec-toint8'
+ },
+ ToIntegerOrInfinity: {
+ url: 'https://262.ecma-international.org/12.0/#sec-tointegerorinfinity'
+ },
+ ToLength: {
+ url: 'https://262.ecma-international.org/12.0/#sec-tolength'
+ },
+ ToNumber: {
+ url: 'https://262.ecma-international.org/12.0/#sec-tonumber'
+ },
+ ToNumeric: {
+ url: 'https://262.ecma-international.org/12.0/#sec-tonumeric'
+ },
+ ToObject: {
+ url: 'https://262.ecma-international.org/12.0/#sec-toobject'
+ },
+ ToPrimitive: {
+ url: 'https://262.ecma-international.org/12.0/#sec-toprimitive'
+ },
+ ToPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-topropertydescriptor'
+ },
+ ToPropertyKey: {
+ url: 'https://262.ecma-international.org/12.0/#sec-topropertykey'
+ },
+ ToString: {
+ url: 'https://262.ecma-international.org/12.0/#sec-tostring'
+ },
+ ToUint16: {
+ url: 'https://262.ecma-international.org/12.0/#sec-touint16'
+ },
+ ToUint32: {
+ url: 'https://262.ecma-international.org/12.0/#sec-touint32'
+ },
+ ToUint8: {
+ url: 'https://262.ecma-international.org/12.0/#sec-touint8'
+ },
+ ToUint8Clamp: {
+ url: 'https://262.ecma-international.org/12.0/#sec-touint8clamp'
+ },
+ TriggerPromiseReactions: {
+ url: 'https://262.ecma-international.org/12.0/#sec-triggerpromisereactions'
+ },
+ TrimString: {
+ url: 'https://262.ecma-international.org/12.0/#sec-trimstring'
+ },
+ Type: {
+ url: 'https://262.ecma-international.org/12.0/#sec-ecmascript-data-types-and-values'
+ },
+ TypedArrayCreate: {
+ url: 'https://262.ecma-international.org/12.0/#typedarray-create'
+ },
+ TypedArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/12.0/#typedarray-species-create'
+ },
+ UnicodeEscape: {
+ url: 'https://262.ecma-international.org/12.0/#sec-unicodeescape'
+ },
+ UnicodeMatchProperty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-unicodematchproperty-p'
+ },
+ UnicodeMatchPropertyValue: {
+ url: 'https://262.ecma-international.org/12.0/#sec-runtime-semantics-unicodematchpropertyvalue-p-v'
+ },
+ UpdateEmpty: {
+ url: 'https://262.ecma-international.org/12.0/#sec-updateempty'
+ },
+ UTC: {
+ url: 'https://262.ecma-international.org/12.0/#sec-utc-t'
+ },
+ UTF16EncodeCodePoint: {
+ url: 'https://262.ecma-international.org/12.0/#sec-utf16encodecodepoint'
+ },
+ UTF16SurrogatePairToCodePoint: {
+ url: 'https://262.ecma-international.org/12.0/#sec-utf16decodesurrogatepair'
+ },
+ ValidateAndApplyPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/12.0/#sec-validateandapplypropertydescriptor'
+ },
+ ValidateAtomicAccess: {
+ url: 'https://262.ecma-international.org/12.0/#sec-validateatomicaccess'
+ },
+ ValidateIntegerTypedArray: {
+ url: 'https://262.ecma-international.org/12.0/#sec-validateintegertypedarray'
+ },
+ ValidateTypedArray: {
+ url: 'https://262.ecma-international.org/12.0/#sec-validatetypedarray'
+ },
+ ValueOfReadEvent: {
+ url: 'https://262.ecma-international.org/12.0/#sec-valueofreadevent'
+ },
+ WeakRefDeref: {
+ url: 'https://262.ecma-international.org/12.0/#sec-weakrefderef'
+ },
+ WeekDay: {
+ url: 'https://262.ecma-international.org/12.0/#sec-week-day'
+ },
+ YearFromTime: {
+ url: 'https://262.ecma-international.org/12.0/#eqn-YearFromTime'
+ },
+ Yield: {
+ url: 'https://262.ecma-international.org/12.0/#sec-yield'
+ }
+};
diff --git a/node_modules/es-abstract/operations/2022.js b/node_modules/es-abstract/operations/2022.js
new file mode 100644
index 000000000..d1b88ebb8
--- /dev/null
+++ b/node_modules/es-abstract/operations/2022.js
@@ -0,0 +1,1369 @@
+'use strict';
+
+module.exports = {
+ abs: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-abs'
+ },
+ AddEntriesFromIterable: {
+ url: 'https://262.ecma-international.org/13.0/#sec-add-entries-from-iterable'
+ },
+ AddRestrictedFunctionProperties: {
+ url: 'https://262.ecma-international.org/13.0/#sec-addrestrictedfunctionproperties'
+ },
+ AddToKeptObjects: {
+ url: 'https://262.ecma-international.org/13.0/#sec-addtokeptobjects'
+ },
+ AddWaiter: {
+ url: 'https://262.ecma-international.org/13.0/#sec-addwaiter'
+ },
+ AdvanceStringIndex: {
+ url: 'https://262.ecma-international.org/13.0/#sec-advancestringindex'
+ },
+ 'agent-order': {
+ url: 'https://262.ecma-international.org/13.0/#sec-agent-order'
+ },
+ AgentCanSuspend: {
+ url: 'https://262.ecma-international.org/13.0/#sec-agentcansuspend'
+ },
+ AgentSignifier: {
+ url: 'https://262.ecma-international.org/13.0/#sec-agentsignifier'
+ },
+ AllocateArrayBuffer: {
+ url: 'https://262.ecma-international.org/13.0/#sec-allocatearraybuffer'
+ },
+ AllocateSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/13.0/#sec-allocatesharedarraybuffer'
+ },
+ AllocateTypedArray: {
+ url: 'https://262.ecma-international.org/13.0/#sec-allocatetypedarray'
+ },
+ AllocateTypedArrayBuffer: {
+ url: 'https://262.ecma-international.org/13.0/#sec-allocatetypedarraybuffer'
+ },
+ ApplyStringOrNumericBinaryOperator: {
+ url: 'https://262.ecma-international.org/13.0/#sec-applystringornumericbinaryoperator'
+ },
+ ArrayCreate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-arraycreate'
+ },
+ ArraySetLength: {
+ url: 'https://262.ecma-international.org/13.0/#sec-arraysetlength'
+ },
+ ArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-arrayspeciescreate'
+ },
+ AsyncBlockStart: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asyncblockstart'
+ },
+ AsyncFromSyncIteratorContinuation: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asyncfromsynciteratorcontinuation'
+ },
+ AsyncFunctionStart: {
+ url: 'https://262.ecma-international.org/13.0/#sec-async-functions-abstract-operations-async-function-start'
+ },
+ AsyncGeneratorAwaitReturn: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asyncgeneratorawaitreturn'
+ },
+ AsyncGeneratorCompleteStep: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asyncgeneratorcompletestep'
+ },
+ AsyncGeneratorDrainQueue: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asyncgeneratordrainqueue'
+ },
+ AsyncGeneratorEnqueue: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asyncgeneratorenqueue'
+ },
+ AsyncGeneratorResume: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asyncgeneratorresume'
+ },
+ AsyncGeneratorStart: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asyncgeneratorstart'
+ },
+ AsyncGeneratorUnwrapYieldResumption: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asyncgeneratorunwrapyieldresumption'
+ },
+ AsyncGeneratorValidate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asyncgeneratorvalidate'
+ },
+ AsyncGeneratorYield: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asyncgeneratoryield'
+ },
+ AsyncIteratorClose: {
+ url: 'https://262.ecma-international.org/13.0/#sec-asynciteratorclose'
+ },
+ AsyncModuleExecutionFulfilled: {
+ url: 'https://262.ecma-international.org/13.0/#sec-async-module-execution-fulfilled'
+ },
+ AsyncModuleExecutionRejected: {
+ url: 'https://262.ecma-international.org/13.0/#sec-async-module-execution-rejected'
+ },
+ AtomicReadModifyWrite: {
+ url: 'https://262.ecma-international.org/13.0/#sec-atomicreadmodifywrite'
+ },
+ Await: {
+ url: 'https://262.ecma-international.org/13.0/#await'
+ },
+ BackreferenceMatcher: {
+ url: 'https://262.ecma-international.org/13.0/#sec-backreference-matcher'
+ },
+ 'BigInt::add': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-add'
+ },
+ 'BigInt::bitwiseAND': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-bitwiseAND'
+ },
+ 'BigInt::bitwiseNOT': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-bitwiseNOT'
+ },
+ 'BigInt::bitwiseOR': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-bitwiseOR'
+ },
+ 'BigInt::bitwiseXOR': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-bitwiseXOR'
+ },
+ 'BigInt::divide': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-divide'
+ },
+ 'BigInt::equal': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-equal'
+ },
+ 'BigInt::exponentiate': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-exponentiate'
+ },
+ 'BigInt::leftShift': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-leftShift'
+ },
+ 'BigInt::lessThan': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-lessThan'
+ },
+ 'BigInt::multiply': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-multiply'
+ },
+ 'BigInt::remainder': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-remainder'
+ },
+ 'BigInt::sameValue': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-sameValue'
+ },
+ 'BigInt::sameValueZero': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-sameValueZero'
+ },
+ 'BigInt::signedRightShift': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-signedRightShift'
+ },
+ 'BigInt::subtract': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-subtract'
+ },
+ 'BigInt::toString': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-tostring'
+ },
+ 'BigInt::unaryMinus': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-unaryMinus'
+ },
+ 'BigInt::unsignedRightShift': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-bigint-unsignedRightShift'
+ },
+ BigIntBitwiseOp: {
+ url: 'https://262.ecma-international.org/13.0/#sec-bigintbitwiseop'
+ },
+ BinaryAnd: {
+ url: 'https://262.ecma-international.org/13.0/#sec-binaryand'
+ },
+ BinaryOr: {
+ url: 'https://262.ecma-international.org/13.0/#sec-binaryor'
+ },
+ BinaryXor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-binaryxor'
+ },
+ BlockDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/13.0/#sec-blockdeclarationinstantiation'
+ },
+ BoundFunctionCreate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-boundfunctioncreate'
+ },
+ ByteListBitwiseOp: {
+ url: 'https://262.ecma-international.org/13.0/#sec-bytelistbitwiseop'
+ },
+ ByteListEqual: {
+ url: 'https://262.ecma-international.org/13.0/#sec-bytelistequal'
+ },
+ Call: {
+ url: 'https://262.ecma-international.org/13.0/#sec-call'
+ },
+ Canonicalize: {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-canonicalize-ch'
+ },
+ CanonicalNumericIndexString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-canonicalnumericindexstring'
+ },
+ CaseClauseIsSelected: {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-caseclauseisselected'
+ },
+ CharacterRange: {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-characterrange-abstract-operation'
+ },
+ CharacterRangeOrUnion: {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation'
+ },
+ CharacterSetMatcher: {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation'
+ },
+ clamp: {
+ url: 'https://262.ecma-international.org/13.0/#clamping'
+ },
+ CleanupFinalizationRegistry: {
+ url: 'https://262.ecma-international.org/13.0/#sec-cleanup-finalization-registry'
+ },
+ ClearKeptObjects: {
+ url: 'https://262.ecma-international.org/13.0/#sec-clear-kept-objects'
+ },
+ CloneArrayBuffer: {
+ url: 'https://262.ecma-international.org/13.0/#sec-clonearraybuffer'
+ },
+ CodePointAt: {
+ url: 'https://262.ecma-international.org/13.0/#sec-codepointat'
+ },
+ CodePointsToString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-codepointstostring'
+ },
+ CompletePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-completepropertydescriptor'
+ },
+ Completion: {
+ url: 'https://262.ecma-international.org/13.0/#sec-completion-ao'
+ },
+ CompletionRecord: {
+ url: 'https://262.ecma-international.org/13.0/#sec-completion-record-specification-type'
+ },
+ ComposeWriteEventBytes: {
+ url: 'https://262.ecma-international.org/13.0/#sec-composewriteeventbytes'
+ },
+ Construct: {
+ url: 'https://262.ecma-international.org/13.0/#sec-construct'
+ },
+ CopyDataBlockBytes: {
+ url: 'https://262.ecma-international.org/13.0/#sec-copydatablockbytes'
+ },
+ CopyDataProperties: {
+ url: 'https://262.ecma-international.org/13.0/#sec-copydataproperties'
+ },
+ CreateArrayFromList: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createarrayfromlist'
+ },
+ CreateArrayIterator: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createarrayiterator'
+ },
+ CreateAsyncFromSyncIterator: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createasyncfromsynciterator'
+ },
+ CreateAsyncIteratorFromClosure: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createasynciteratorfromclosure'
+ },
+ CreateBuiltinFunction: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createbuiltinfunction'
+ },
+ CreateByteDataBlock: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createbytedatablock'
+ },
+ CreateDataProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createdataproperty'
+ },
+ CreateDataPropertyOrThrow: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createdatapropertyorthrow'
+ },
+ CreateDynamicFunction: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createdynamicfunction'
+ },
+ CreateForInIterator: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createforiniterator'
+ },
+ CreateHTML: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createhtml'
+ },
+ CreateIntrinsics: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createintrinsics'
+ },
+ CreateIteratorFromClosure: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createiteratorfromclosure'
+ },
+ CreateIterResultObject: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createiterresultobject'
+ },
+ CreateListFromArrayLike: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createlistfromarraylike'
+ },
+ CreateListIteratorRecord: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createlistiteratorRecord'
+ },
+ CreateMapIterator: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createmapiterator'
+ },
+ CreateMappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createmappedargumentsobject'
+ },
+ CreateMethodProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createmethodproperty'
+ },
+ CreateNonEnumerableDataPropertyOrThrow: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createnonenumerabledatapropertyorthrow'
+ },
+ CreatePerIterationEnvironment: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createperiterationenvironment'
+ },
+ CreateRealm: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createrealm'
+ },
+ CreateRegExpStringIterator: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createregexpstringiterator'
+ },
+ CreateResolvingFunctions: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createresolvingfunctions'
+ },
+ CreateSetIterator: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createsetiterator'
+ },
+ CreateSharedByteDataBlock: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createsharedbytedatablock'
+ },
+ CreateUnmappedArgumentsObject: {
+ url: 'https://262.ecma-international.org/13.0/#sec-createunmappedargumentsobject'
+ },
+ DateFromTime: {
+ url: 'https://262.ecma-international.org/13.0/#sec-date-number'
+ },
+ DateString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-datestring'
+ },
+ Day: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-Day'
+ },
+ DayFromYear: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-DaysFromYear'
+ },
+ DaysInYear: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-DaysInYear'
+ },
+ DayWithinYear: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-DayWithinYear'
+ },
+ Decode: {
+ url: 'https://262.ecma-international.org/13.0/#sec-decode'
+ },
+ DefineField: {
+ url: 'https://262.ecma-international.org/13.0/#sec-definefield'
+ },
+ DefineMethodProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-definemethodproperty'
+ },
+ DefinePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/13.0/#sec-definepropertyorthrow'
+ },
+ DeletePropertyOrThrow: {
+ url: 'https://262.ecma-international.org/13.0/#sec-deletepropertyorthrow'
+ },
+ DetachArrayBuffer: {
+ url: 'https://262.ecma-international.org/13.0/#sec-detacharraybuffer'
+ },
+ Encode: {
+ url: 'https://262.ecma-international.org/13.0/#sec-encode'
+ },
+ EnterCriticalSection: {
+ url: 'https://262.ecma-international.org/13.0/#sec-entercriticalsection'
+ },
+ EnumerableOwnPropertyNames: {
+ url: 'https://262.ecma-international.org/13.0/#sec-enumerableownpropertynames'
+ },
+ EnumerateObjectProperties: {
+ url: 'https://262.ecma-international.org/13.0/#sec-enumerate-object-properties'
+ },
+ EscapeRegExpPattern: {
+ url: 'https://262.ecma-international.org/13.0/#sec-escaperegexppattern'
+ },
+ EvalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/13.0/#sec-evaldeclarationinstantiation'
+ },
+ EvaluateCall: {
+ url: 'https://262.ecma-international.org/13.0/#sec-evaluatecall'
+ },
+ EvaluateNew: {
+ url: 'https://262.ecma-international.org/13.0/#sec-evaluatenew'
+ },
+ EvaluatePropertyAccessWithExpressionKey: {
+ url: 'https://262.ecma-international.org/13.0/#sec-evaluate-property-access-with-expression-key'
+ },
+ EvaluatePropertyAccessWithIdentifierKey: {
+ url: 'https://262.ecma-international.org/13.0/#sec-evaluate-property-access-with-identifier-key'
+ },
+ EvaluateStringOrNumericBinaryExpression: {
+ url: 'https://262.ecma-international.org/13.0/#sec-evaluatestringornumericbinaryexpression'
+ },
+ EventSet: {
+ url: 'https://262.ecma-international.org/13.0/#sec-event-set'
+ },
+ ExecuteAsyncModule: {
+ url: 'https://262.ecma-international.org/13.0/#sec-execute-async-module'
+ },
+ FinishDynamicImport: {
+ url: 'https://262.ecma-international.org/13.0/#sec-finishdynamicimport'
+ },
+ FlattenIntoArray: {
+ url: 'https://262.ecma-international.org/13.0/#sec-flattenintoarray'
+ },
+ floor: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-floor'
+ },
+ ForBodyEvaluation: {
+ url: 'https://262.ecma-international.org/13.0/#sec-forbodyevaluation'
+ },
+ 'ForIn/OfBodyEvaluation': {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset'
+ },
+ 'ForIn/OfHeadEvaluation': {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-forinofheadevaluation'
+ },
+ FromPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-frompropertydescriptor'
+ },
+ FulfillPromise: {
+ url: 'https://262.ecma-international.org/13.0/#sec-fulfillpromise'
+ },
+ FunctionDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/13.0/#sec-functiondeclarationinstantiation'
+ },
+ GatherAvailableAncestors: {
+ url: 'https://262.ecma-international.org/13.0/#sec-gather-available-ancestors'
+ },
+ GeneratorResume: {
+ url: 'https://262.ecma-international.org/13.0/#sec-generatorresume'
+ },
+ GeneratorResumeAbrupt: {
+ url: 'https://262.ecma-international.org/13.0/#sec-generatorresumeabrupt'
+ },
+ GeneratorStart: {
+ url: 'https://262.ecma-international.org/13.0/#sec-generatorstart'
+ },
+ GeneratorValidate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-generatorvalidate'
+ },
+ GeneratorYield: {
+ url: 'https://262.ecma-international.org/13.0/#sec-generatoryield'
+ },
+ Get: {
+ url: 'https://262.ecma-international.org/13.0/#sec-get-o-p'
+ },
+ GetActiveScriptOrModule: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getactivescriptormodule'
+ },
+ GetFunctionRealm: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getfunctionrealm'
+ },
+ GetGeneratorKind: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getgeneratorkind'
+ },
+ GetGlobalObject: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getglobalobject'
+ },
+ GetIdentifierReference: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getidentifierreference'
+ },
+ GetIterator: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getiterator'
+ },
+ GetMatchIndexPair: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getmatchindexpair'
+ },
+ GetMatchString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getmatchstring'
+ },
+ GetMethod: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getmethod'
+ },
+ GetModifySetValueInBuffer: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getmodifysetvalueinbuffer'
+ },
+ GetModuleNamespace: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getmodulenamespace'
+ },
+ GetNewTarget: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getnewtarget'
+ },
+ GetOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getownpropertykeys'
+ },
+ GetPromiseResolve: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getpromiseresolve'
+ },
+ GetPrototypeFromConstructor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getprototypefromconstructor'
+ },
+ GetStringIndex: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getstringindex'
+ },
+ GetSubstitution: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getsubstitution'
+ },
+ GetSuperConstructor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getsuperconstructor'
+ },
+ GetTemplateObject: {
+ url: 'https://262.ecma-international.org/13.0/#sec-gettemplateobject'
+ },
+ GetThisEnvironment: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getthisenvironment'
+ },
+ GetThisValue: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getthisvalue'
+ },
+ GetV: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getv'
+ },
+ GetValue: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getvalue'
+ },
+ GetValueFromBuffer: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getvaluefrombuffer'
+ },
+ GetViewValue: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getviewvalue'
+ },
+ GetWaiterList: {
+ url: 'https://262.ecma-international.org/13.0/#sec-getwaiterlist'
+ },
+ GlobalDeclarationInstantiation: {
+ url: 'https://262.ecma-international.org/13.0/#sec-globaldeclarationinstantiation'
+ },
+ 'happens-before': {
+ url: 'https://262.ecma-international.org/13.0/#sec-happens-before'
+ },
+ HasOwnProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-hasownproperty'
+ },
+ HasProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-hasproperty'
+ },
+ 'host-synchronizes-with': {
+ url: 'https://262.ecma-international.org/13.0/#sec-host-synchronizes-with'
+ },
+ HostEventSet: {
+ url: 'https://262.ecma-international.org/13.0/#sec-hosteventset'
+ },
+ HourFromTime: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-HourFromTime'
+ },
+ IfAbruptCloseIterator: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ifabruptcloseiterator'
+ },
+ IfAbruptRejectPromise: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ifabruptrejectpromise'
+ },
+ ImportedLocalNames: {
+ url: 'https://262.ecma-international.org/13.0/#sec-importedlocalnames'
+ },
+ InitializeBoundName: {
+ url: 'https://262.ecma-international.org/13.0/#sec-initializeboundname'
+ },
+ InitializeHostDefinedRealm: {
+ url: 'https://262.ecma-international.org/13.0/#sec-initializehostdefinedrealm'
+ },
+ InitializeInstanceElements: {
+ url: 'https://262.ecma-international.org/13.0/#sec-initializeinstanceelements'
+ },
+ InitializeReferencedBinding: {
+ url: 'https://262.ecma-international.org/13.0/#sec-initializereferencedbinding'
+ },
+ InitializeTypedArrayFromArrayBuffer: {
+ url: 'https://262.ecma-international.org/13.0/#sec-initializetypedarrayfromarraybuffer'
+ },
+ InitializeTypedArrayFromArrayLike: {
+ url: 'https://262.ecma-international.org/13.0/#sec-initializetypedarrayfromarraylike'
+ },
+ InitializeTypedArrayFromList: {
+ url: 'https://262.ecma-international.org/13.0/#sec-initializetypedarrayfromlist'
+ },
+ InitializeTypedArrayFromTypedArray: {
+ url: 'https://262.ecma-international.org/13.0/#sec-initializetypedarrayfromtypedarray'
+ },
+ InLeapYear: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-InLeapYear'
+ },
+ InnerModuleEvaluation: {
+ url: 'https://262.ecma-international.org/13.0/#sec-innermoduleevaluation'
+ },
+ InnerModuleLinking: {
+ url: 'https://262.ecma-international.org/13.0/#sec-InnerModuleLinking'
+ },
+ InstallErrorCause: {
+ url: 'https://262.ecma-international.org/13.0/#sec-installerrorcause'
+ },
+ InstanceofOperator: {
+ url: 'https://262.ecma-international.org/13.0/#sec-instanceofoperator'
+ },
+ IntegerIndexedElementGet: {
+ url: 'https://262.ecma-international.org/13.0/#sec-integerindexedelementget'
+ },
+ IntegerIndexedElementSet: {
+ url: 'https://262.ecma-international.org/13.0/#sec-integerindexedelementset'
+ },
+ IntegerIndexedObjectCreate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-integerindexedobjectcreate'
+ },
+ InternalizeJSONProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-internalizejsonproperty'
+ },
+ Invoke: {
+ url: 'https://262.ecma-international.org/13.0/#sec-invoke'
+ },
+ IsAccessorDescriptor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isaccessordescriptor'
+ },
+ IsAnonymousFunctionDefinition: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isanonymousfunctiondefinition'
+ },
+ IsArray: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isarray'
+ },
+ IsBigIntElementType: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isbigintelementtype'
+ },
+ IsCallable: {
+ url: 'https://262.ecma-international.org/13.0/#sec-iscallable'
+ },
+ IsCompatiblePropertyDescriptor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-iscompatiblepropertydescriptor'
+ },
+ IsConcatSpreadable: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isconcatspreadable'
+ },
+ IsConstructor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isconstructor'
+ },
+ IsDataDescriptor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isdatadescriptor'
+ },
+ IsDetachedBuffer: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isdetachedbuffer'
+ },
+ IsExtensible: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isextensible-o'
+ },
+ IsGenericDescriptor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isgenericdescriptor'
+ },
+ IsInTailPosition: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isintailposition'
+ },
+ IsIntegralNumber: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isintegralnumber'
+ },
+ IsLabelledFunction: {
+ url: 'https://262.ecma-international.org/13.0/#sec-islabelledfunction'
+ },
+ IsLessThan: {
+ url: 'https://262.ecma-international.org/13.0/#sec-islessthan'
+ },
+ IsLooselyEqual: {
+ url: 'https://262.ecma-international.org/13.0/#sec-islooselyequal'
+ },
+ IsNoTearConfiguration: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isnotearconfiguration'
+ },
+ IsPrivateReference: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isprivatereference'
+ },
+ IsPromise: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ispromise'
+ },
+ IsPropertyKey: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ispropertykey'
+ },
+ IsPropertyReference: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ispropertyreference'
+ },
+ IsRegExp: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isregexp'
+ },
+ IsSharedArrayBuffer: {
+ url: 'https://262.ecma-international.org/13.0/#sec-issharedarraybuffer'
+ },
+ IsStrictlyEqual: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isstrictlyequal'
+ },
+ IsStringPrefix: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isstringprefix'
+ },
+ IsStringWellFormedUnicode: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isstringwellformedunicode'
+ },
+ IsSuperReference: {
+ url: 'https://262.ecma-international.org/13.0/#sec-issuperreference'
+ },
+ IsUnclampedIntegerElementType: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isunclampedintegerelementtype'
+ },
+ IsUnresolvableReference: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isunresolvablereference'
+ },
+ IsUnsignedElementType: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isunsignedelementtype'
+ },
+ IsValidIntegerIndex: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isvalidintegerindex'
+ },
+ IsValidRegularExpressionLiteral: {
+ url: 'https://262.ecma-international.org/13.0/#sec-isvalidregularexpressionliteral'
+ },
+ IsWordChar: {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-iswordchar-abstract-operation'
+ },
+ IterableToList: {
+ url: 'https://262.ecma-international.org/13.0/#sec-iterabletolist'
+ },
+ IteratorClose: {
+ url: 'https://262.ecma-international.org/13.0/#sec-iteratorclose'
+ },
+ IteratorComplete: {
+ url: 'https://262.ecma-international.org/13.0/#sec-iteratorcomplete'
+ },
+ IteratorNext: {
+ url: 'https://262.ecma-international.org/13.0/#sec-iteratornext'
+ },
+ IteratorStep: {
+ url: 'https://262.ecma-international.org/13.0/#sec-iteratorstep'
+ },
+ IteratorValue: {
+ url: 'https://262.ecma-international.org/13.0/#sec-iteratorvalue'
+ },
+ LeaveCriticalSection: {
+ url: 'https://262.ecma-international.org/13.0/#sec-leavecriticalsection'
+ },
+ LengthOfArrayLike: {
+ url: 'https://262.ecma-international.org/13.0/#sec-lengthofarraylike'
+ },
+ LocalTime: {
+ url: 'https://262.ecma-international.org/13.0/#sec-localtime'
+ },
+ LocalTZA: {
+ url: 'https://262.ecma-international.org/13.0/#sec-local-time-zone-adjustment'
+ },
+ LoopContinues: {
+ url: 'https://262.ecma-international.org/13.0/#sec-loopcontinues'
+ },
+ MakeArgGetter: {
+ url: 'https://262.ecma-international.org/13.0/#sec-makearggetter'
+ },
+ MakeArgSetter: {
+ url: 'https://262.ecma-international.org/13.0/#sec-makeargsetter'
+ },
+ MakeBasicObject: {
+ url: 'https://262.ecma-international.org/13.0/#sec-makebasicobject'
+ },
+ MakeClassConstructor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-makeclassconstructor'
+ },
+ MakeConstructor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-makeconstructor'
+ },
+ MakeDate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-makedate'
+ },
+ MakeDay: {
+ url: 'https://262.ecma-international.org/13.0/#sec-makeday'
+ },
+ MakeMatchIndicesIndexPairArray: {
+ url: 'https://262.ecma-international.org/13.0/#sec-makematchindicesindexpairarray'
+ },
+ MakeMethod: {
+ url: 'https://262.ecma-international.org/13.0/#sec-makemethod'
+ },
+ MakePrivateReference: {
+ url: 'https://262.ecma-international.org/13.0/#sec-makeprivatereference'
+ },
+ MakeSuperPropertyReference: {
+ url: 'https://262.ecma-international.org/13.0/#sec-makesuperpropertyreference'
+ },
+ MakeTime: {
+ url: 'https://262.ecma-international.org/13.0/#sec-maketime'
+ },
+ max: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-max'
+ },
+ 'memory-order': {
+ url: 'https://262.ecma-international.org/13.0/#sec-memory-order'
+ },
+ min: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-min'
+ },
+ MinFromTime: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-MinFromTime'
+ },
+ ModuleNamespaceCreate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-modulenamespacecreate'
+ },
+ modulo: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-modulo'
+ },
+ MonthFromTime: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-MonthFromTime'
+ },
+ msFromTime: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-msFromTime'
+ },
+ NewDeclarativeEnvironment: {
+ url: 'https://262.ecma-international.org/13.0/#sec-newdeclarativeenvironment'
+ },
+ NewFunctionEnvironment: {
+ url: 'https://262.ecma-international.org/13.0/#sec-newfunctionenvironment'
+ },
+ NewGlobalEnvironment: {
+ url: 'https://262.ecma-international.org/13.0/#sec-newglobalenvironment'
+ },
+ NewModuleEnvironment: {
+ url: 'https://262.ecma-international.org/13.0/#sec-newmoduleenvironment'
+ },
+ NewObjectEnvironment: {
+ url: 'https://262.ecma-international.org/13.0/#sec-newobjectenvironment'
+ },
+ NewPrivateEnvironment: {
+ url: 'https://262.ecma-international.org/13.0/#sec-newprivateenvironment'
+ },
+ NewPromiseCapability: {
+ url: 'https://262.ecma-international.org/13.0/#sec-newpromisecapability'
+ },
+ NewPromiseReactionJob: {
+ url: 'https://262.ecma-international.org/13.0/#sec-newpromisereactionjob'
+ },
+ NewPromiseResolveThenableJob: {
+ url: 'https://262.ecma-international.org/13.0/#sec-newpromiseresolvethenablejob'
+ },
+ NormalCompletion: {
+ url: 'https://262.ecma-international.org/13.0/#sec-normalcompletion'
+ },
+ NotifyWaiter: {
+ url: 'https://262.ecma-international.org/13.0/#sec-notifywaiter'
+ },
+ 'Number::add': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-add'
+ },
+ 'Number::bitwiseAND': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-bitwiseAND'
+ },
+ 'Number::bitwiseNOT': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-bitwiseNOT'
+ },
+ 'Number::bitwiseOR': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-bitwiseOR'
+ },
+ 'Number::bitwiseXOR': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-bitwiseXOR'
+ },
+ 'Number::divide': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-divide'
+ },
+ 'Number::equal': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-equal'
+ },
+ 'Number::exponentiate': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-exponentiate'
+ },
+ 'Number::leftShift': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-leftShift'
+ },
+ 'Number::lessThan': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-lessThan'
+ },
+ 'Number::multiply': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-multiply'
+ },
+ 'Number::remainder': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-remainder'
+ },
+ 'Number::sameValue': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-sameValue'
+ },
+ 'Number::sameValueZero': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-sameValueZero'
+ },
+ 'Number::signedRightShift': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-signedRightShift'
+ },
+ 'Number::subtract': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-subtract'
+ },
+ 'Number::toString': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-tostring'
+ },
+ 'Number::unaryMinus': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-unaryMinus'
+ },
+ 'Number::unsignedRightShift': {
+ url: 'https://262.ecma-international.org/13.0/#sec-numeric-types-number-unsignedRightShift'
+ },
+ NumberBitwiseOp: {
+ url: 'https://262.ecma-international.org/13.0/#sec-numberbitwiseop'
+ },
+ NumberToBigInt: {
+ url: 'https://262.ecma-international.org/13.0/#sec-numbertobigint'
+ },
+ NumericToRawBytes: {
+ url: 'https://262.ecma-international.org/13.0/#sec-numerictorawbytes'
+ },
+ ObjectDefineProperties: {
+ url: 'https://262.ecma-international.org/13.0/#sec-objectdefineproperties'
+ },
+ OrdinaryCallBindThis: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinarycallbindthis'
+ },
+ OrdinaryCallEvaluateBody: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinarycallevaluatebody'
+ },
+ OrdinaryCreateFromConstructor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinarycreatefromconstructor'
+ },
+ OrdinaryDefineOwnProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinarydefineownproperty'
+ },
+ OrdinaryDelete: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinarydelete'
+ },
+ OrdinaryFunctionCreate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinaryfunctioncreate'
+ },
+ OrdinaryGet: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinaryget'
+ },
+ OrdinaryGetOwnProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinarygetownproperty'
+ },
+ OrdinaryGetPrototypeOf: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinarygetprototypeof'
+ },
+ OrdinaryHasInstance: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinaryhasinstance'
+ },
+ OrdinaryHasProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinaryhasproperty'
+ },
+ OrdinaryIsExtensible: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinaryisextensible'
+ },
+ OrdinaryObjectCreate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinaryobjectcreate'
+ },
+ OrdinaryOwnPropertyKeys: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinaryownpropertykeys'
+ },
+ OrdinaryPreventExtensions: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinarypreventextensions'
+ },
+ OrdinarySet: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinaryset'
+ },
+ OrdinarySetPrototypeOf: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinarysetprototypeof'
+ },
+ OrdinarySetWithOwnDescriptor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinarysetwithowndescriptor'
+ },
+ OrdinaryToPrimitive: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ordinarytoprimitive'
+ },
+ ParseModule: {
+ url: 'https://262.ecma-international.org/13.0/#sec-parsemodule'
+ },
+ ParsePattern: {
+ url: 'https://262.ecma-international.org/13.0/#sec-parsepattern'
+ },
+ ParseScript: {
+ url: 'https://262.ecma-international.org/13.0/#sec-parse-script'
+ },
+ ParseText: {
+ url: 'https://262.ecma-international.org/13.0/#sec-parsetext'
+ },
+ PerformEval: {
+ url: 'https://262.ecma-international.org/13.0/#sec-performeval'
+ },
+ PerformPromiseAll: {
+ url: 'https://262.ecma-international.org/13.0/#sec-performpromiseall'
+ },
+ PerformPromiseAllSettled: {
+ url: 'https://262.ecma-international.org/13.0/#sec-performpromiseallsettled'
+ },
+ PerformPromiseAny: {
+ url: 'https://262.ecma-international.org/13.0/#sec-performpromiseany'
+ },
+ PerformPromiseRace: {
+ url: 'https://262.ecma-international.org/13.0/#sec-performpromiserace'
+ },
+ PerformPromiseThen: {
+ url: 'https://262.ecma-international.org/13.0/#sec-performpromisethen'
+ },
+ PrepareForOrdinaryCall: {
+ url: 'https://262.ecma-international.org/13.0/#sec-prepareforordinarycall'
+ },
+ PrepareForTailCall: {
+ url: 'https://262.ecma-international.org/13.0/#sec-preparefortailcall'
+ },
+ PrivateElementFind: {
+ url: 'https://262.ecma-international.org/13.0/#sec-privateelementfind'
+ },
+ PrivateFieldAdd: {
+ url: 'https://262.ecma-international.org/13.0/#sec-privatefieldadd'
+ },
+ PrivateGet: {
+ url: 'https://262.ecma-international.org/13.0/#sec-privateget'
+ },
+ PrivateMethodOrAccessorAdd: {
+ url: 'https://262.ecma-international.org/13.0/#sec-privatemethodoraccessoradd'
+ },
+ PrivateSet: {
+ url: 'https://262.ecma-international.org/13.0/#sec-privateset'
+ },
+ PromiseResolve: {
+ url: 'https://262.ecma-international.org/13.0/#sec-promise-resolve'
+ },
+ ProxyCreate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-proxycreate'
+ },
+ PutValue: {
+ url: 'https://262.ecma-international.org/13.0/#sec-putvalue'
+ },
+ QuoteJSONString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-quotejsonstring'
+ },
+ RawBytesToNumeric: {
+ url: 'https://262.ecma-international.org/13.0/#sec-rawbytestonumeric'
+ },
+ 'reads-bytes-from': {
+ url: 'https://262.ecma-international.org/13.0/#sec-reads-bytes-from'
+ },
+ 'reads-from': {
+ url: 'https://262.ecma-international.org/13.0/#sec-reads-from'
+ },
+ RegExpAlloc: {
+ url: 'https://262.ecma-international.org/13.0/#sec-regexpalloc'
+ },
+ RegExpBuiltinExec: {
+ url: 'https://262.ecma-international.org/13.0/#sec-regexpbuiltinexec'
+ },
+ RegExpCreate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-regexpcreate'
+ },
+ RegExpExec: {
+ url: 'https://262.ecma-international.org/13.0/#sec-regexpexec'
+ },
+ RegExpHasFlag: {
+ url: 'https://262.ecma-international.org/13.0/#sec-regexphasflag'
+ },
+ RegExpInitialize: {
+ url: 'https://262.ecma-international.org/13.0/#sec-regexpinitialize'
+ },
+ RejectPromise: {
+ url: 'https://262.ecma-international.org/13.0/#sec-rejectpromise'
+ },
+ RemoveWaiter: {
+ url: 'https://262.ecma-international.org/13.0/#sec-removewaiter'
+ },
+ RemoveWaiters: {
+ url: 'https://262.ecma-international.org/13.0/#sec-removewaiters'
+ },
+ RepeatMatcher: {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-repeatmatcher-abstract-operation'
+ },
+ RequireInternalSlot: {
+ url: 'https://262.ecma-international.org/13.0/#sec-requireinternalslot'
+ },
+ RequireObjectCoercible: {
+ url: 'https://262.ecma-international.org/13.0/#sec-requireobjectcoercible'
+ },
+ ResolveBinding: {
+ url: 'https://262.ecma-international.org/13.0/#sec-resolvebinding'
+ },
+ ResolvePrivateIdentifier: {
+ url: 'https://262.ecma-international.org/13.0/#sec-resolve-private-identifier'
+ },
+ ResolveThisBinding: {
+ url: 'https://262.ecma-international.org/13.0/#sec-resolvethisbinding'
+ },
+ ReturnIfAbrupt: {
+ url: 'https://262.ecma-international.org/13.0/#sec-returnifabrupt'
+ },
+ RoundMVResult: {
+ url: 'https://262.ecma-international.org/13.0/#sec-roundmvresult'
+ },
+ SameValue: {
+ url: 'https://262.ecma-international.org/13.0/#sec-samevalue'
+ },
+ SameValueNonNumeric: {
+ url: 'https://262.ecma-international.org/13.0/#sec-samevaluenonnumeric'
+ },
+ SameValueZero: {
+ url: 'https://262.ecma-international.org/13.0/#sec-samevaluezero'
+ },
+ ScriptEvaluation: {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-scriptevaluation'
+ },
+ SecFromTime: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-SecFromTime'
+ },
+ SerializeJSONArray: {
+ url: 'https://262.ecma-international.org/13.0/#sec-serializejsonarray'
+ },
+ SerializeJSONObject: {
+ url: 'https://262.ecma-international.org/13.0/#sec-serializejsonobject'
+ },
+ SerializeJSONProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-serializejsonproperty'
+ },
+ Set: {
+ url: 'https://262.ecma-international.org/13.0/#sec-set-o-p-v-throw'
+ },
+ SetDefaultGlobalBindings: {
+ url: 'https://262.ecma-international.org/13.0/#sec-setdefaultglobalbindings'
+ },
+ SetFunctionLength: {
+ url: 'https://262.ecma-international.org/13.0/#sec-setfunctionlength'
+ },
+ SetFunctionName: {
+ url: 'https://262.ecma-international.org/13.0/#sec-setfunctionname'
+ },
+ SetImmutablePrototype: {
+ url: 'https://262.ecma-international.org/13.0/#sec-set-immutable-prototype'
+ },
+ SetIntegrityLevel: {
+ url: 'https://262.ecma-international.org/13.0/#sec-setintegritylevel'
+ },
+ SetRealmGlobalObject: {
+ url: 'https://262.ecma-international.org/13.0/#sec-setrealmglobalobject'
+ },
+ SetTypedArrayFromArrayLike: {
+ url: 'https://262.ecma-international.org/13.0/#sec-settypedarrayfromarraylike'
+ },
+ SetTypedArrayFromTypedArray: {
+ url: 'https://262.ecma-international.org/13.0/#sec-settypedarrayfromtypedarray'
+ },
+ SetValueInBuffer: {
+ url: 'https://262.ecma-international.org/13.0/#sec-setvalueinbuffer'
+ },
+ SetViewValue: {
+ url: 'https://262.ecma-international.org/13.0/#sec-setviewvalue'
+ },
+ SharedDataBlockEventSet: {
+ url: 'https://262.ecma-international.org/13.0/#sec-sharedatablockeventset'
+ },
+ SortIndexedProperties: {
+ url: 'https://262.ecma-international.org/13.0/#sec-sortindexedproperties'
+ },
+ SpeciesConstructor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-speciesconstructor'
+ },
+ StringCreate: {
+ url: 'https://262.ecma-international.org/13.0/#sec-stringcreate'
+ },
+ StringGetOwnProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-stringgetownproperty'
+ },
+ StringIndexOf: {
+ url: 'https://262.ecma-international.org/13.0/#sec-stringindexof'
+ },
+ StringPad: {
+ url: 'https://262.ecma-international.org/13.0/#sec-stringpad'
+ },
+ StringToBigInt: {
+ url: 'https://262.ecma-international.org/13.0/#sec-stringtobigint'
+ },
+ StringToCodePoints: {
+ url: 'https://262.ecma-international.org/13.0/#sec-stringtocodepoints'
+ },
+ StringToNumber: {
+ url: 'https://262.ecma-international.org/13.0/#sec-stringtonumber'
+ },
+ substring: {
+ url: 'https://262.ecma-international.org/13.0/#substring'
+ },
+ SuspendAgent: {
+ url: 'https://262.ecma-international.org/13.0/#sec-suspendagent'
+ },
+ SymbolDescriptiveString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-symboldescriptivestring'
+ },
+ 'synchronizes-with': {
+ url: 'https://262.ecma-international.org/13.0/#sec-synchronizes-with'
+ },
+ TestIntegrityLevel: {
+ url: 'https://262.ecma-international.org/13.0/#sec-testintegritylevel'
+ },
+ thisBigIntValue: {
+ url: 'https://262.ecma-international.org/13.0/#thisbigintvalue'
+ },
+ thisBooleanValue: {
+ url: 'https://262.ecma-international.org/13.0/#thisbooleanvalue'
+ },
+ thisNumberValue: {
+ url: 'https://262.ecma-international.org/13.0/#thisnumbervalue'
+ },
+ thisStringValue: {
+ url: 'https://262.ecma-international.org/13.0/#thisstringvalue'
+ },
+ thisSymbolValue: {
+ url: 'https://262.ecma-international.org/13.0/#thissymbolvalue'
+ },
+ thisTimeValue: {
+ url: 'https://262.ecma-international.org/13.0/#thistimevalue'
+ },
+ ThrowCompletion: {
+ url: 'https://262.ecma-international.org/13.0/#sec-throwcompletion'
+ },
+ TimeClip: {
+ url: 'https://262.ecma-international.org/13.0/#sec-timeclip'
+ },
+ TimeFromYear: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-TimeFromYear'
+ },
+ TimeString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-timestring'
+ },
+ TimeWithinDay: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-TimeWithinDay'
+ },
+ TimeZoneString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-timezoneestring'
+ },
+ ToBigInt: {
+ url: 'https://262.ecma-international.org/13.0/#sec-tobigint'
+ },
+ ToBigInt64: {
+ url: 'https://262.ecma-international.org/13.0/#sec-tobigint64'
+ },
+ ToBigUint64: {
+ url: 'https://262.ecma-international.org/13.0/#sec-tobiguint64'
+ },
+ ToBoolean: {
+ url: 'https://262.ecma-international.org/13.0/#sec-toboolean'
+ },
+ ToDateString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-todatestring'
+ },
+ ToIndex: {
+ url: 'https://262.ecma-international.org/13.0/#sec-toindex'
+ },
+ ToInt16: {
+ url: 'https://262.ecma-international.org/13.0/#sec-toint16'
+ },
+ ToInt32: {
+ url: 'https://262.ecma-international.org/13.0/#sec-toint32'
+ },
+ ToInt8: {
+ url: 'https://262.ecma-international.org/13.0/#sec-toint8'
+ },
+ ToIntegerOrInfinity: {
+ url: 'https://262.ecma-international.org/13.0/#sec-tointegerorinfinity'
+ },
+ ToLength: {
+ url: 'https://262.ecma-international.org/13.0/#sec-tolength'
+ },
+ ToNumber: {
+ url: 'https://262.ecma-international.org/13.0/#sec-tonumber'
+ },
+ ToNumeric: {
+ url: 'https://262.ecma-international.org/13.0/#sec-tonumeric'
+ },
+ ToObject: {
+ url: 'https://262.ecma-international.org/13.0/#sec-toobject'
+ },
+ ToPrimitive: {
+ url: 'https://262.ecma-international.org/13.0/#sec-toprimitive'
+ },
+ ToPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-topropertydescriptor'
+ },
+ ToPropertyKey: {
+ url: 'https://262.ecma-international.org/13.0/#sec-topropertykey'
+ },
+ ToString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-tostring'
+ },
+ ToUint16: {
+ url: 'https://262.ecma-international.org/13.0/#sec-touint16'
+ },
+ ToUint32: {
+ url: 'https://262.ecma-international.org/13.0/#sec-touint32'
+ },
+ ToUint8: {
+ url: 'https://262.ecma-international.org/13.0/#sec-touint8'
+ },
+ ToUint8Clamp: {
+ url: 'https://262.ecma-international.org/13.0/#sec-touint8clamp'
+ },
+ ToZeroPaddedDecimalString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-tozeropaddeddecimalstring'
+ },
+ TriggerPromiseReactions: {
+ url: 'https://262.ecma-international.org/13.0/#sec-triggerpromisereactions'
+ },
+ TrimString: {
+ url: 'https://262.ecma-international.org/13.0/#sec-trimstring'
+ },
+ Type: {
+ url: 'https://262.ecma-international.org/13.0/#sec-ecmascript-data-types-and-values'
+ },
+ TypedArrayCreate: {
+ url: 'https://262.ecma-international.org/13.0/#typedarray-create'
+ },
+ TypedArrayElementSize: {
+ url: 'https://262.ecma-international.org/13.0/#sec-typedarrayelementsize'
+ },
+ TypedArrayElementType: {
+ url: 'https://262.ecma-international.org/13.0/#sec-typedarrayelementtype'
+ },
+ TypedArraySpeciesCreate: {
+ url: 'https://262.ecma-international.org/13.0/#typedarray-species-create'
+ },
+ UnicodeEscape: {
+ url: 'https://262.ecma-international.org/13.0/#sec-unicodeescape'
+ },
+ UnicodeMatchProperty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-unicodematchproperty-p'
+ },
+ UnicodeMatchPropertyValue: {
+ url: 'https://262.ecma-international.org/13.0/#sec-runtime-semantics-unicodematchpropertyvalue-p-v'
+ },
+ UpdateEmpty: {
+ url: 'https://262.ecma-international.org/13.0/#sec-updateempty'
+ },
+ UTC: {
+ url: 'https://262.ecma-international.org/13.0/#sec-utc-t'
+ },
+ UTF16EncodeCodePoint: {
+ url: 'https://262.ecma-international.org/13.0/#sec-utf16encodecodepoint'
+ },
+ UTF16SurrogatePairToCodePoint: {
+ url: 'https://262.ecma-international.org/13.0/#sec-utf16decodesurrogatepair'
+ },
+ ValidateAndApplyPropertyDescriptor: {
+ url: 'https://262.ecma-international.org/13.0/#sec-validateandapplypropertydescriptor'
+ },
+ ValidateAtomicAccess: {
+ url: 'https://262.ecma-international.org/13.0/#sec-validateatomicaccess'
+ },
+ ValidateIntegerTypedArray: {
+ url: 'https://262.ecma-international.org/13.0/#sec-validateintegertypedarray'
+ },
+ ValidateTypedArray: {
+ url: 'https://262.ecma-international.org/13.0/#sec-validatetypedarray'
+ },
+ ValueOfReadEvent: {
+ url: 'https://262.ecma-international.org/13.0/#sec-valueofreadevent'
+ },
+ WeakRefDeref: {
+ url: 'https://262.ecma-international.org/13.0/#sec-weakrefderef'
+ },
+ WeekDay: {
+ url: 'https://262.ecma-international.org/13.0/#sec-week-day'
+ },
+ YearFromTime: {
+ url: 'https://262.ecma-international.org/13.0/#eqn-YearFromTime'
+ },
+ Yield: {
+ url: 'https://262.ecma-international.org/13.0/#sec-yield'
+ }
+};
diff --git a/node_modules/es-abstract/package.json b/node_modules/es-abstract/package.json
index 142f8db1b..917c12b8a 100644
--- a/node_modules/es-abstract/package.json
+++ b/node_modules/es-abstract/package.json
@@ -1,6 +1,6 @@
{
"name": "es-abstract",
- "version": "1.18.3",
+ "version": "1.21.1",
"author": {
"name": "Jordan Harband",
"email": "ljharb@gmail.com",
@@ -19,25 +19,16 @@
"description": "ECMAScript spec abstract operations.",
"license": "MIT",
"main": "index.js",
- "type": "commonjs",
- "exports": {
- ".": "./index.js",
- "./package.json": "./package.json",
- "./2020/*": "./2020/*.js",
- "./2019/*": "./2019/*.js",
- "./2018/*": "./2018/*.js",
- "./2017/*": "./2017/*.js",
- "./2016/*": "./2016/*.js",
- "./2015/*": "./2015/*.js",
- "./helpers/*": "./helpers/*.js",
- "./5/*": "./5/*.js",
- "./": "./"
+ "browser": {
+ "worker_threads": false
},
+ "type": "commonjs",
"sideEffects": false,
"scripts": {
"prespackle": "git ls-files | xargs git check-attr spackled | grep -v 'unspecified$' | cut -d: -f1 | xargs rm || true",
"spackle": "node operations/spackle 1",
"postspackle": "git ls-files | xargs git check-attr spackled | grep -v 'unspecified$' | cut -d: -f1 | xargs git add",
+ "prepack": "npmignore --auto --commentLines=autogenerated",
"prepublish": "not-in-publish || npm run prepublishOnly",
"prepublishOnly": "safe-publish-latest && npm run spackle",
"pretest": "npm run lint",
@@ -46,7 +37,7 @@
"posttest": "aud --production",
"tests-only": "nyc node test",
"lint": "eslint .",
- "eccheck": "eclint check *.js **/*.js > /dev/null"
+ "eccheck": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')"
},
"repository": {
"type": "git",
@@ -64,46 +55,70 @@
"ES7"
],
"dependencies": {
+ "available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.1",
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
- "get-intrinsic": "^1.1.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.1.3",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
"has": "^1.0.3",
- "has-symbols": "^1.0.2",
- "is-callable": "^1.2.3",
- "is-negative-zero": "^2.0.1",
- "is-regex": "^1.1.3",
- "is-string": "^1.0.6",
- "object-inspect": "^1.10.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.4",
+ "is-array-buffer": "^3.0.1",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.10",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.2",
"object-keys": "^1.1.1",
- "object.assign": "^4.1.2",
- "string.prototype.trimend": "^1.0.4",
- "string.prototype.trimstart": "^1.0.4",
- "unbox-primitive": "^1.0.1"
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.4.3",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trimend": "^1.0.6",
+ "string.prototype.trimstart": "^1.0.6",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.9"
},
"devDependencies": {
- "@ljharb/eslint-config": "^17.6.0",
- "array.prototype.indexof": "^1.0.2",
- "aud": "^1.1.5",
+ "@ljharb/eslint-config": "^21.0.1",
+ "array.from": "^1.1.3",
+ "array.prototype.filter": "^1.0.2",
+ "array.prototype.flatmap": "^1.3.1",
+ "array.prototype.indexof": "^1.0.5",
+ "aud": "^2.0.2",
+ "available-regexp-flags": "^1.0.0",
"cheerio": "=1.0.0-rc.3",
- "diff": "^5.0.0",
+ "diff": "^5.1.0",
"eclint": "^2.8.1",
- "es-value-fixtures": "^1.2.1",
- "eslint": "^7.27.0",
- "foreach": "^2.0.5",
- "functions-have-names": "^1.2.2",
- "has-bigints": "^1.0.1",
+ "es-value-fixtures": "^1.4.2",
+ "eslint": "=8.8.0",
+ "for-each": "^0.3.3",
+ "functions-have-names": "^1.2.3",
+ "has-bigints": "^1.0.2",
"has-strict-mode": "^1.0.1",
"in-publish": "^2.0.1",
+ "is-core-module": "^2.11.0",
"make-arrow-function": "^1.2.0",
"make-async-function": "^1.0.0",
"make-async-generator-function": "^1.0.0",
"make-generator-function": "^2.0.0",
+ "mock-property": "^1.0.0",
+ "npmignore": "^0.3.0",
"nyc": "^10.3.2",
- "object.fromentries": "^2.0.4",
- "safe-publish-latest": "^1.1.4",
+ "object.fromentries": "^2.0.6",
+ "safe-publish-latest": "^2.0.0",
"ses": "^0.10.4",
- "tape": "^5.2.2"
+ "tape": "^5.6.1"
},
"testling": {
"files": "test/index.js",
@@ -126,10 +141,17 @@
"engines": {
"node": ">= 0.4"
},
- "greenkeeper": {
- "//": "nyc is ignored because it requires node 4+, and we support older than that",
+ "publishConfig": {
"ignore": [
- "nyc"
+ ".github",
+ "",
+ "# dev scripts",
+ "operations/*.js",
+ "!operations/20*.js",
+ "",
+ "test/",
+ "",
+ ".gitattributes"
]
}
}
diff --git a/node_modules/es-abstract/test/GetIntrinsic.js b/node_modules/es-abstract/test/GetIntrinsic.js
deleted file mode 100644
index 2f21e7647..000000000
--- a/node_modules/es-abstract/test/GetIntrinsic.js
+++ /dev/null
@@ -1,207 +0,0 @@
-'use strict';
-
-var GetIntrinsic = require('get-intrinsic');
-
-var test = require('tape');
-var forEach = require('foreach');
-var debug = require('object-inspect');
-var generatorFns = require('make-generator-function')();
-var asyncFns = require('make-async-function').list();
-var asyncGenFns = require('make-async-generator-function')();
-
-var callBound = require('call-bind/callBound');
-var v = require('es-value-fixtures');
-var $gOPD = require('../helpers/getOwnPropertyDescriptor');
-var defineProperty = require('./helpers/defineProperty');
-
-var $isProto = callBound('%Object.prototype.isPrototypeOf%');
-
-test('export', function (t) {
- t.equal(typeof GetIntrinsic, 'function', 'it is a function');
- t.equal(GetIntrinsic.length, 2, 'function has length of 2');
-
- t.end();
-});
-
-test('throws', function (t) {
- t['throws'](
- function () { GetIntrinsic('not an intrinsic'); },
- SyntaxError,
- 'nonexistent intrinsic throws a syntax error'
- );
-
- t['throws'](
- function () { GetIntrinsic(''); },
- TypeError,
- 'empty string intrinsic throws a type error'
- );
-
- t['throws'](
- function () { GetIntrinsic('.'); },
- SyntaxError,
- '"just a dot" intrinsic throws a syntax error'
- );
-
- forEach(v.nonStrings, function (nonString) {
- t['throws'](
- function () { GetIntrinsic(nonString); },
- TypeError,
- debug(nonString) + ' is not a String'
- );
- });
-
- forEach(v.nonBooleans, function (nonBoolean) {
- t['throws'](
- function () { GetIntrinsic('%', nonBoolean); },
- TypeError,
- debug(nonBoolean) + ' is not a Boolean'
- );
- });
-
- forEach([
- 'toString',
- 'propertyIsEnumerable',
- 'hasOwnProperty'
- ], function (objectProtoMember) {
- t['throws'](
- function () { GetIntrinsic(objectProtoMember); },
- SyntaxError,
- debug(objectProtoMember) + ' is not an intrinsic'
- );
- });
-
- t.end();
-});
-
-test('base intrinsics', function (t) {
- t.equal(GetIntrinsic('%Object%'), Object, '%Object% yields Object');
- t.equal(GetIntrinsic('Object'), Object, 'Object yields Object');
- t.equal(GetIntrinsic('%Array%'), Array, '%Array% yields Array');
- t.equal(GetIntrinsic('Array'), Array, 'Array yields Array');
-
- t.end();
-});
-
-test('dotted paths', function (t) {
- t.equal(GetIntrinsic('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% yields Object.prototype.toString');
- t.equal(GetIntrinsic('Object.prototype.toString'), Object.prototype.toString, 'Object.prototype.toString yields Object.prototype.toString');
- t.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push, '%Array.prototype.push% yields Array.prototype.push');
- t.equal(GetIntrinsic('Array.prototype.push'), Array.prototype.push, 'Array.prototype.push yields Array.prototype.push');
-
- test('underscore paths are aliases for dotted paths', { skip: !Object.isFrozen || Object.isFrozen(Object.prototype) }, function (st) {
- var original = GetIntrinsic('%ObjProto_toString%');
-
- forEach([
- '%Object.prototype.toString%',
- 'Object.prototype.toString',
- '%ObjectPrototype.toString%',
- 'ObjectPrototype.toString',
- '%ObjProto_toString%',
- 'ObjProto_toString'
- ], function (name) {
- defineProperty(Object.prototype, 'toString', {
- value: function toString() {
- return original.apply(this, arguments);
- }
- });
- st.equal(GetIntrinsic(name), original, name + ' yields original Object.prototype.toString');
- });
-
- defineProperty(Object.prototype, 'toString', { value: original });
- st.end();
- });
-
- test('dotted paths cache', { skip: !Object.isFrozen || Object.isFrozen(Object.prototype) }, function (st) {
- var original = GetIntrinsic('%Object.prototype.propertyIsEnumerable%');
-
- forEach([
- '%Object.prototype.propertyIsEnumerable%',
- 'Object.prototype.propertyIsEnumerable',
- '%ObjectPrototype.propertyIsEnumerable%',
- 'ObjectPrototype.propertyIsEnumerable'
- ], function (name) {
- // eslint-disable-next-line no-extend-native
- Object.prototype.propertyIsEnumerable = function propertyIsEnumerable() {
- return original.apply(this, arguments);
- };
- st.equal(GetIntrinsic(name), original, name + ' yields cached Object.prototype.propertyIsEnumerable');
- });
-
- // eslint-disable-next-line no-extend-native
- Object.prototype.propertyIsEnumerable = original;
- st.end();
- });
-
- test('dotted path reports correct error', function (st) {
- st['throws'](function () {
- GetIntrinsic('%NonExistentIntrinsic.prototype.property%');
- }, /%NonExistentIntrinsic%/, 'The base intrinsic of %NonExistentIntrinsic.prototype.property% is %NonExistentIntrinsic%');
-
- st['throws'](function () {
- GetIntrinsic('%NonExistentIntrinsicPrototype.property%');
- }, /%NonExistentIntrinsicPrototype%/, 'The base intrinsic of %NonExistentIntrinsicPrototype.property% is %NonExistentIntrinsicPrototype%');
-
- st.end();
- });
-
- t.end();
-});
-
-test('accessors', { skip: !$gOPD || typeof Map !== 'function' }, function (t) {
- var actual = $gOPD(Map.prototype, 'size');
- t.ok(actual, 'Map.prototype.size has a descriptor');
- t.equal(typeof actual.get, 'function', 'Map.prototype.size has a getter function');
- t.equal(GetIntrinsic('%Map.prototype.size%'), actual.get, '%Map.prototype.size% yields the getter for it');
- t.equal(GetIntrinsic('Map.prototype.size'), actual.get, 'Map.prototype.size yields the getter for it');
-
- t.end();
-});
-
-test('generator functions', { skip: !generatorFns.length }, function (t) {
- var $GeneratorFunction = GetIntrinsic('%GeneratorFunction%');
- var $GeneratorFunctionPrototype = GetIntrinsic('%Generator%');
- var $GeneratorPrototype = GetIntrinsic('%GeneratorPrototype%');
-
- forEach(generatorFns, function (genFn) {
- var fnName = genFn.name;
- fnName = fnName ? "'" + fnName + "'" : 'genFn';
-
- t.ok(genFn instanceof $GeneratorFunction, fnName + ' instanceof %GeneratorFunction%');
- t.ok($isProto($GeneratorFunctionPrototype, genFn), '%Generator% is prototype of ' + fnName);
- t.ok($isProto($GeneratorPrototype, genFn.prototype), '%GeneratorPrototype% is prototype of ' + fnName + '.prototype');
- });
-
- t.end();
-});
-
-test('async functions', { skip: !asyncFns.length }, function (t) {
- var $AsyncFunction = GetIntrinsic('%AsyncFunction%');
- var $AsyncFunctionPrototype = GetIntrinsic('%AsyncFunctionPrototype%');
-
- forEach(asyncFns, function (asyncFn) {
- var fnName = asyncFn.name;
- fnName = fnName ? "'" + fnName + "'" : 'asyncFn';
-
- t.ok(asyncFn instanceof $AsyncFunction, fnName + ' instanceof %AsyncFunction%');
- t.ok($isProto($AsyncFunctionPrototype, asyncFn), '%AsyncFunctionPrototype% is prototype of ' + fnName);
- });
-
- t.end();
-});
-
-test('async generator functions', { skip: !asyncGenFns.length }, function (t) {
- var $AsyncGeneratorFunction = GetIntrinsic('%AsyncGeneratorFunction%');
- var $AsyncGeneratorFunctionPrototype = GetIntrinsic('%AsyncGenerator%');
- var $AsyncGeneratorPrototype = GetIntrinsic('%AsyncGeneratorPrototype%');
-
- forEach(asyncGenFns, function (asyncGenFn) {
- var fnName = asyncGenFn.name;
- fnName = fnName ? "'" + fnName + "'" : 'asyncGenFn';
-
- t.ok(asyncGenFn instanceof $AsyncGeneratorFunction, fnName + ' instanceof %AsyncGeneratorFunction%');
- t.ok($isProto($AsyncGeneratorFunctionPrototype, asyncGenFn), '%AsyncGenerator% is prototype of ' + fnName);
- t.ok($isProto($AsyncGeneratorPrototype, asyncGenFn.prototype), '%AsyncGeneratorPrototype% is prototype of ' + fnName + '.prototype');
- });
-
- t.end();
-});
diff --git a/node_modules/es-abstract/test/diffOps.js b/node_modules/es-abstract/test/diffOps.js
deleted file mode 100644
index 06641b187..000000000
--- a/node_modules/es-abstract/test/diffOps.js
+++ /dev/null
@@ -1,58 +0,0 @@
-'use strict';
-
-var keys = require('object-keys');
-var forEach = require('foreach');
-var indexOf = require('array.prototype.indexof');
-var has = require('has');
-
-module.exports = function diffOperations(actual, expected, expectedMissing) {
- var actualKeys = keys(actual);
- var expectedKeys = keys(expected);
-
- var extra = [];
- var missing = [];
- var extraMissing = [];
-
- forEach(actualKeys, function (op) {
- if (!(op in expected)) {
- if (actual[op] && typeof actual[op] === 'object') {
- forEach(keys(actual[op]), function (nestedOp) {
- var fullNestedOp = op + '::' + nestedOp;
- if (!(fullNestedOp in expected)) {
- extra.push(fullNestedOp);
- } else if (indexOf(expectedMissing, fullNestedOp) !== -1) {
- extra.push(fullNestedOp);
- }
- });
- } else {
- extra.push(op);
- }
- } else if (indexOf(expectedMissing, op) !== -1) {
- extra.push(op);
- }
- });
- var checkMissing = function checkMissing(op, actualValue) {
- if (typeof actualValue !== 'function' && indexOf(expectedMissing, op) === -1) {
- missing.push(op);
- }
- };
- forEach(expectedKeys, function (op) {
- if (op.indexOf('::') > -1) {
- var parts = op.split('::');
- var value = actual[parts[0]];
- if (value && typeof value === 'object' && typeof value[parts[1]] === 'function') {
- checkMissing(op, value[parts[1]]);
- }
- } else {
- checkMissing(op, actual[op]);
- }
- });
-
- forEach(expectedMissing, function (expectedOp) {
- if (!has(expected, expectedOp)) {
- extraMissing.push(expectedOp);
- }
- });
-
- return { missing: missing, extra: extra, extraMissing: extraMissing };
-};
diff --git a/node_modules/es-abstract/test/es2015.js b/node_modules/es-abstract/test/es2015.js
deleted file mode 100644
index 33a8ead4c..000000000
--- a/node_modules/es-abstract/test/es2015.js
+++ /dev/null
@@ -1,144 +0,0 @@
-'use strict';
-
-var ES = require('../').ES2015;
-var boundES = require('./helpers/createBoundESNamespace')(ES);
-
-var ops = require('../operations/2015');
-
-var expectedMissing = [
- 'AddRestrictedFunctionProperties',
- 'AllocateArrayBuffer',
- 'AllocateTypedArray',
- 'BoundFunctionCreate',
- 'Canonicalize',
- 'CharacterRange',
- 'CharacterSetMatcher',
- 'CloneArrayBuffer',
- 'Completion',
- 'Construct',
- 'CopyDataBlockBytes',
- 'CreateArrayFromList',
- 'CreateArrayIterator',
- 'CreateBuiltinFunction',
- 'CreateByteDataBlock',
- 'CreateDynamicFunction',
- 'CreateIntrinsics',
- 'CreateListIterator',
- 'CreateMapIterator',
- 'CreateMappedArgumentsObject',
- 'CreatePerIterationEnvironment',
- 'CreateRealm',
- 'CreateSetIterator',
- 'CreateUnmappedArgumentsObject',
- 'DaylightSavingTA',
- 'Decode',
- 'DetachArrayBuffer',
- 'Encode',
- 'EnqueueJob',
- 'EscapeRegExpPattern',
- 'EvalDeclarationInstantiation',
- 'EvaluateCall',
- 'EvaluateDirectCall',
- 'EvaluateNew',
- 'ForBodyEvaluation',
- 'ForIn/OfBodyEvaluation',
- 'ForIn/OfHeadEvaluation',
- 'FulfillPromise',
- 'FunctionAllocate',
- 'FunctionCreate',
- 'FunctionInitialize',
- 'GeneratorFunctionCreate',
- 'GeneratorResume',
- 'GeneratorResumeAbrupt',
- 'GeneratorStart',
- 'GeneratorValidate',
- 'GeneratorYield',
- 'GetBase',
- 'GetFunctionRealm',
- 'GetGlobalObject',
- 'GetIdentifierReference',
- 'GetModuleNamespace',
- 'GetNewTarget',
- 'GetReferencedName',
- 'GetSuperConstructor',
- 'GetTemplateObject',
- 'GetThisEnvironment',
- 'GetThisValue',
- 'GetValue',
- 'GetValueFromBuffer',
- 'GetViewValue',
- 'HasPrimitiveBase',
- 'HostResolveImportedModule',
- 'ImportedLocalNames',
- 'InitializeHostDefinedRealm',
- 'InitializeReferencedBinding',
- 'IntegerIndexedElementGet',
- 'IntegerIndexedElementSet',
- 'IntegerIndexedObjectCreate',
- 'InternalizeJSONProperty',
- 'IsAnonymousFunctionDefinition',
- 'IsCompatiblePropertyDescriptor',
- 'IsDetachedBuffer',
- 'IsInTailPosition',
- 'IsLabelledFunction',
- 'IsPropertyReference',
- 'IsStrictReference',
- 'IsSuperReference',
- 'IsUnresolvableReference',
- 'IsWordChar',
- 'LocalTime',
- 'LoopContinues',
- 'MakeArgGetter',
- 'MakeArgSetter',
- 'MakeClassConstructor',
- 'MakeConstructor',
- 'MakeMethod',
- 'MakeSuperPropertyReference',
- 'max',
- 'min',
- 'ModuleNamespaceCreate',
- 'msPerDay', // constant
- 'NewDeclarativeEnvironment',
- 'NewFunctionEnvironment',
- 'NewGlobalEnvironment',
- 'NewModuleEnvironment',
- 'NewObjectEnvironment',
- 'NewPromiseCapability',
- 'NormalCompletion',
- 'ObjectDefineProperties',
- 'OrdinaryCallBindThis',
- 'OrdinaryCallEvaluateBody',
- 'ParseModule',
- 'PerformEval',
- 'PerformPromiseAll',
- 'PerformPromiseRace',
- 'PerformPromiseThen',
- 'PrepareForOrdinaryCall',
- 'PrepareForTailCall',
- 'ProxyCreate',
- 'PutValue', // takes a Reference
- 'RegExpAlloc', // creates a regex with uninitialized internal lots
- 'RegExpBuiltinExec',
- 'RegExpInitialize', // initializes allocated regex's internal slots
- 'RejectPromise',
- 'RepeatMatcher',
- 'ResolveBinding',
- 'ResolveThisBinding',
- 'SerializeJSONArray',
- 'SerializeJSONObject',
- 'SerializeJSONProperty',
- 'SetDefaultGlobalBindings',
- 'SetRealmGlobalObject',
- 'SetValueInBuffer',
- 'SetViewValue',
- 'sign',
- 'SortCompare', // mystery access to `comparefn` arg
- 'TriggerPromiseReactions',
- 'TypedArrayFrom',
- 'UpdateEmpty', // completion records
- 'UTC' // depends on LocalTZA, DaylightSavingTA
-];
-
-require('./tests').es2015(boundES, ops, expectedMissing);
-
-require('./helpers/runManifestTest')(require('tape'), ES, 2015);
diff --git a/node_modules/es-abstract/test/es2016.js b/node_modules/es-abstract/test/es2016.js
deleted file mode 100644
index c813ac530..000000000
--- a/node_modules/es-abstract/test/es2016.js
+++ /dev/null
@@ -1,165 +0,0 @@
-'use strict';
-
-var ES = require('../').ES2016;
-var boundES = require('./helpers/createBoundESNamespace')(ES);
-
-var ops = require('../operations/2016');
-
-var expectedMissing = [
- 'AddRestrictedFunctionProperties',
- 'AllocateArrayBuffer',
- 'AllocateTypedArray',
- 'AllocateTypedArrayBuffer',
- 'BlockDeclarationInstantiation',
- 'BoundFunctionCreate',
- 'Canonicalize',
- 'CharacterRange',
- 'CharacterRangeOrUnion',
- 'CharacterSetMatcher',
- 'CloneArrayBuffer',
- 'Completion',
- 'Construct',
- 'CopyDataBlockBytes',
- 'CreateArrayFromList',
- 'CreateArrayIterator',
- 'CreateBuiltinFunction',
- 'CreateByteDataBlock',
- 'CreateDynamicFunction',
- 'CreateIntrinsics',
- 'CreateListIterator',
- 'CreateMapIterator',
- 'CreateMappedArgumentsObject',
- 'CreatePerIterationEnvironment',
- 'CreateRealm',
- 'CreateResolvingFunctions',
- 'CreateSetIterator',
- 'CreateStringIterator',
- 'CreateUnmappedArgumentsObject',
- 'DaylightSavingTA',
- 'Decode',
- 'DetachArrayBuffer',
- 'Encode',
- 'EnqueueJob',
- 'EnumerateObjectProperties',
- 'EscapeRegExpPattern',
- 'EvalDeclarationInstantiation',
- 'EvaluateCall',
- 'EvaluateDirectCall',
- 'EvaluateNew',
- 'ForBodyEvaluation',
- 'ForIn/OfBodyEvaluation',
- 'ForIn/OfHeadEvaluation',
- 'FulfillPromise',
- 'FunctionAllocate',
- 'FunctionCreate',
- 'FunctionDeclarationInstantiation',
- 'FunctionInitialize',
- 'GeneratorFunctionCreate',
- 'GeneratorResume',
- 'GeneratorResumeAbrupt',
- 'GeneratorStart',
- 'GeneratorValidate',
- 'GeneratorYield',
- 'GetActiveScriptOrModule',
- 'GetFunctionRealm',
- 'GetGlobalObject',
- 'GetIdentifierReference',
- 'GetModuleNamespace',
- 'GetNewTarget',
- 'GetSuperConstructor',
- 'GetTemplateObject',
- 'GetThisEnvironment',
- 'GetThisValue',
- 'GetValue',
- 'GetValueFromBuffer',
- 'GetViewValue',
- 'GlobalDeclarationInstantiation',
- 'HostPromiseRejectionTracker',
- 'HostReportErrors',
- 'HostResolveImportedModule',
- 'IfAbruptRejectPromise',
- 'ImportedLocalNames',
- 'InitializeBoundName',
- 'InitializeHostDefinedRealm',
- 'InitializeReferencedBinding',
- 'IntegerIndexedElementGet',
- 'IntegerIndexedElementSet',
- 'IntegerIndexedObjectCreate',
- 'InternalizeJSONProperty',
- 'IsAnonymousFunctionDefinition',
- 'IsCompatiblePropertyDescriptor',
- 'IsDetachedBuffer',
- 'IsInTailPosition',
- 'IsLabelledFunction',
- 'IsWordChar',
- 'LocalTime',
- 'LoopContinues',
- 'MakeArgGetter',
- 'MakeArgSetter',
- 'MakeClassConstructor',
- 'MakeConstructor',
- 'MakeMethod',
- 'MakeSuperPropertyReference',
- 'max',
- 'min',
- 'ModuleNamespaceCreate',
- 'NewDeclarativeEnvironment',
- 'NewFunctionEnvironment',
- 'NewGlobalEnvironment',
- 'NewModuleEnvironment',
- 'NewObjectEnvironment',
- 'NewPromiseCapability',
- 'NextJob',
- 'NormalCompletion',
- 'ObjectDefineProperties',
- 'OrdinaryCallBindThis',
- 'OrdinaryCallEvaluateBody',
- 'OrdinaryDelete',
- 'OrdinaryGet',
- 'OrdinaryIsExtensible',
- 'OrdinaryOwnPropertyKeys',
- 'OrdinaryPreventExtensions',
- 'OrdinarySet',
- 'ParseModule',
- 'ParseScript',
- 'PerformEval',
- 'PerformPromiseAll',
- 'PerformPromiseRace',
- 'PerformPromiseThen',
- 'PrepareForOrdinaryCall',
- 'PrepareForTailCall',
- 'PromiseReactionJob',
- 'PromiseResolveThenableJob',
- 'ProxyCreate',
- 'PutValue', // takes a Reference
- 'RegExpAlloc', // creates a regex with uninitialized internal lots
- 'RegExpBuiltinExec',
- 'RegExpInitialize', // initializes allocated regex's internal slots
- 'RejectPromise',
- 'RepeatMatcher',
- 'ResolveBinding',
- 'ResolveThisBinding',
- 'ReturnIfAbrupt',
- 'ScriptEvaluation',
- 'ScriptEvaluationJob',
- 'SerializeJSONArray',
- 'SerializeJSONObject',
- 'SerializeJSONProperty',
- 'SetDefaultGlobalBindings',
- 'SetRealmGlobalObject',
- 'SetValueInBuffer',
- 'SetViewValue',
- 'SortCompare', // mystery access to `comparefn` arg
- 'TopLevelModuleEvaluationJob',
- 'ToString Applied to the Number Type',
- 'TriggerPromiseReactions',
- 'TypedArrayCreate',
- 'TypedArraySpeciesCreate',
- 'UpdateEmpty', // completion records
- 'UTC', // depends on LocalTZA, DaylightSavingTA
- 'ValidateTypedArray'
-];
-
-require('./tests').es2016(boundES, ops, expectedMissing);
-
-require('./helpers/runManifestTest')(require('tape'), ES, 2016);
diff --git a/node_modules/es-abstract/test/es2017.js b/node_modules/es-abstract/test/es2017.js
deleted file mode 100644
index ab6ca6f9d..000000000
--- a/node_modules/es-abstract/test/es2017.js
+++ /dev/null
@@ -1,211 +0,0 @@
-'use strict';
-
-var ES = require('../').ES2017;
-var boundES = require('./helpers/createBoundESNamespace')(ES);
-
-var ops = require('../operations/2017');
-
-var expectedMissing = [
- 'AddWaiter',
- 'agent-order',
- 'AgentCanSuspend',
- 'AgentSignifier',
- 'AllocateArrayBuffer',
- 'AllocateSharedArrayBuffer',
- 'AllocateTypedArray',
- 'AllocateTypedArrayBuffer',
- 'AsyncFunctionAwait',
- 'AsyncFunctionCreate',
- 'AsyncFunctionStart',
- 'AtomicLoad',
- 'AtomicReadModifyWrite',
- 'BlockDeclarationInstantiation',
- 'BoundFunctionCreate',
- 'Canonicalize',
- 'CharacterRange',
- 'CharacterRangeOrUnion',
- 'CharacterSetMatcher',
- 'CloneArrayBuffer',
- 'Completion',
- 'ComposeWriteEventBytes',
- 'Construct',
- 'CopyDataBlockBytes',
- 'CreateArrayFromList',
- 'CreateArrayIterator',
- 'CreateBuiltinFunction',
- 'CreateByteDataBlock',
- 'CreateDynamicFunction',
- 'CreateIntrinsics',
- 'CreateListIterator',
- 'CreateMapIterator',
- 'CreateMappedArgumentsObject',
- 'CreatePerIterationEnvironment',
- 'CreateRealm',
- 'CreateResolvingFunctions',
- 'CreateSetIterator',
- 'CreateSharedByteDataBlock',
- 'CreateStringIterator',
- 'CreateUnmappedArgumentsObject',
- 'DaylightSavingTA',
- 'Decode',
- 'DetachArrayBuffer',
- 'Encode',
- 'EnqueueJob',
- 'EnterCriticalSection',
- 'EnumerateObjectProperties',
- 'EscapeRegExpPattern',
- 'EvalDeclarationInstantiation',
- 'EvaluateCall',
- 'EvaluateDirectCall',
- 'EvaluateNew',
- 'EventSet',
- 'ForBodyEvaluation',
- 'ForIn/OfBodyEvaluation',
- 'ForIn/OfHeadEvaluation',
- 'FulfillPromise',
- 'FunctionAllocate',
- 'FunctionCreate',
- 'FunctionDeclarationInstantiation',
- 'FunctionInitialize',
- 'GeneratorFunctionCreate',
- 'GeneratorResume',
- 'GeneratorResumeAbrupt',
- 'GeneratorStart',
- 'GeneratorValidate',
- 'GeneratorYield',
- 'GetActiveScriptOrModule',
- 'GetBase',
- 'GetFunctionRealm',
- 'GetGlobalObject',
- 'GetIdentifierReference',
- 'GetModifySetValueInBuffer',
- 'GetModuleNamespace',
- 'GetNewTarget',
- 'GetReferencedName',
- 'GetSuperConstructor',
- 'GetTemplateObject',
- 'GetThisEnvironment',
- 'GetThisValue',
- 'GetValue',
- 'GetValueFromBuffer',
- 'GetViewValue',
- 'GetWaiterList',
- 'GlobalDeclarationInstantiation',
- 'happens-before',
- 'HasPrimitiveBase',
- 'host-synchronizes-with',
- 'HostEnsureCanCompileStrings',
- 'HostEventSet',
- 'HostPromiseRejectionTracker',
- 'HostReportErrors',
- 'HostResolveImportedModule',
- 'IfAbruptRejectPromise',
- 'ImportedLocalNames',
- 'InitializeBoundName',
- 'InitializeHostDefinedRealm',
- 'InitializeReferencedBinding',
- 'IntegerIndexedElementGet',
- 'IntegerIndexedElementSet',
- 'IntegerIndexedObjectCreate',
- 'InternalizeJSONProperty',
- 'IsAnonymousFunctionDefinition',
- 'IsCompatiblePropertyDescriptor',
- 'IsDetachedBuffer',
- 'IsInTailPosition',
- 'IsLabelledFunction',
- 'IsPropertyReference',
- 'IsSharedArrayBuffer',
- 'IsStrictReference',
- 'IsSuperReference',
- 'IsUnresolvableReference',
- 'IsWordChar',
- 'LeaveCriticalSection',
- 'LocalTime',
- 'LoopContinues',
- 'MakeArgGetter',
- 'MakeArgSetter',
- 'MakeClassConstructor',
- 'MakeConstructor',
- 'MakeMethod',
- 'MakeSuperPropertyReference',
- 'max',
- 'memory-order',
- 'min',
- 'ModuleNamespaceCreate',
- 'NewDeclarativeEnvironment',
- 'NewFunctionEnvironment',
- 'NewGlobalEnvironment',
- 'NewModuleEnvironment',
- 'NewObjectEnvironment',
- 'NewPromiseCapability',
- 'NormalCompletion',
- 'NumberToRawBytes',
- 'ObjectDefineProperties',
- 'OrdinaryCallBindThis',
- 'OrdinaryCallEvaluateBody',
- 'OrdinaryDelete',
- 'OrdinaryGet',
- 'OrdinaryIsExtensible',
- 'OrdinaryOwnPropertyKeys',
- 'OrdinaryPreventExtensions',
- 'OrdinarySet',
- 'OrdinaryToPrimitive',
- 'ParseModule',
- 'ParseScript',
- 'PerformEval',
- 'PerformPromiseAll',
- 'PerformPromiseRace',
- 'PerformPromiseThen',
- 'PrepareForOrdinaryCall',
- 'PrepareForTailCall',
- 'PromiseReactionJob',
- 'PromiseResolveThenableJob',
- 'ProxyCreate',
- 'PutValue', // takes a Reference
- 'RawBytesToNumber',
- 'reads-bytes-from',
- 'reads-from',
- 'RegExpAlloc', // creates a regex with uninitialized internal lots
- 'RegExpBuiltinExec',
- 'RegExpInitialize', // initializes allocated regex's internal slots
- 'RejectPromise',
- 'RemoveWaiter',
- 'RemoveWaiters',
- 'RepeatMatcher',
- 'ResolveBinding',
- 'ResolveThisBinding',
- 'ReturnIfAbrupt',
- 'RunJobs',
- 'ScriptEvaluation',
- 'ScriptEvaluationJob',
- 'SerializeJSONArray',
- 'SerializeJSONObject',
- 'SerializeJSONProperty',
- 'SetDefaultGlobalBindings',
- 'SetImmutablePrototype',
- 'SetRealmGlobalObject',
- 'SetValueInBuffer',
- 'SetViewValue',
- 'SharedDataBlockEventSet',
- 'SortCompare', // mystery access to `comparefn` arg
- 'Suspend',
- 'TopLevelModuleEvaluationJob',
- 'ToString Applied to the Number Type',
- 'TriggerPromiseReactions',
- 'TypedArrayCreate',
- 'TypedArraySpeciesCreate',
- 'UpdateEmpty', // completion records
- 'UTC', // depends on LocalTZA, DaylightSavingTA
- 'ValidateAtomicAccess',
- 'ValidateSharedIntegerTypedArray',
- 'ValidateTypedArray',
- 'ValueOfReadEvent',
- 'WakeWaiter',
- 'WordCharacters', // depends on Canonicalize
- 'AddRestrictedFunctionProperties',
- 'synchronizes-with'
-];
-
-require('./tests').es2017(boundES, ops, expectedMissing);
-
-require('./helpers/runManifestTest')(require('tape'), ES, 2017);
diff --git a/node_modules/es-abstract/test/es2018.js b/node_modules/es-abstract/test/es2018.js
deleted file mode 100644
index 112e95891..000000000
--- a/node_modules/es-abstract/test/es2018.js
+++ /dev/null
@@ -1,229 +0,0 @@
-'use strict';
-
-var ES = require('../').ES2018;
-var boundES = require('./helpers/createBoundESNamespace')(ES);
-
-var ops = require('../operations/2018');
-
-var expectedMissing = [
- 'AddRestrictedFunctionProperties',
- 'AddWaiter',
- 'agent-order',
- 'AgentCanSuspend',
- 'AgentSignifier',
- 'AllocateArrayBuffer',
- 'AllocateSharedArrayBuffer',
- 'AllocateTypedArray',
- 'AllocateTypedArrayBuffer',
- 'AsyncFunctionCreate',
- 'AsyncFunctionStart',
- 'AsyncGeneratorEnqueue',
- 'AsyncGeneratorFunctionCreate',
- 'AsyncGeneratorReject',
- 'AsyncGeneratorResolve',
- 'AsyncGeneratorResumeNext',
- 'AsyncGeneratorStart',
- 'AsyncGeneratorYield',
- 'AsyncIteratorClose',
- 'AtomicLoad',
- 'AtomicReadModifyWrite',
- 'Await',
- 'BackreferenceMatcher',
- 'BlockDeclarationInstantiation',
- 'BoundFunctionCreate',
- 'Canonicalize',
- 'CaseClauseIsSelected',
- 'CharacterRange',
- 'CharacterRangeOrUnion',
- 'CharacterSetMatcher',
- 'CloneArrayBuffer',
- 'Completion',
- 'ComposeWriteEventBytes',
- 'Construct',
- 'CopyDataBlockBytes',
- 'CreateArrayFromList',
- 'CreateArrayIterator',
- 'CreateAsyncFromSyncIterator',
- 'CreateBuiltinFunction',
- 'CreateByteDataBlock',
- 'CreateDynamicFunction',
- 'CreateIntrinsics',
- 'CreateListIteratorRecord',
- 'CreateMapIterator',
- 'CreateMappedArgumentsObject',
- 'CreatePerIterationEnvironment',
- 'CreateRealm',
- 'CreateResolvingFunctions',
- 'CreateSetIterator',
- 'CreateSharedByteDataBlock',
- 'CreateStringIterator',
- 'CreateUnmappedArgumentsObject',
- 'Decode',
- 'DetachArrayBuffer',
- 'Encode',
- 'EnqueueJob',
- 'EnterCriticalSection',
- 'EnumerateObjectProperties',
- 'EscapeRegExpPattern',
- 'EvalDeclarationInstantiation',
- 'EvaluateCall',
- 'EvaluateNew',
- 'EventSet',
- 'ForBodyEvaluation',
- 'ForIn/OfBodyEvaluation',
- 'ForIn/OfHeadEvaluation',
- 'FulfillPromise',
- 'FunctionAllocate',
- 'FunctionCreate',
- 'FunctionDeclarationInstantiation',
- 'FunctionInitialize',
- 'GeneratorFunctionCreate',
- 'GeneratorResume',
- 'GeneratorResumeAbrupt',
- 'GeneratorStart',
- 'GeneratorValidate',
- 'GeneratorYield',
- 'GetActiveScriptOrModule',
- 'GetBase',
- 'GetFunctionRealm',
- 'GetGeneratorKind',
- 'GetGlobalObject',
- 'GetIdentifierReference',
- 'GetModifySetValueInBuffer',
- 'GetModuleNamespace',
- 'GetNewTarget',
- 'GetReferencedName',
- 'GetSuperConstructor',
- 'GetTemplateObject',
- 'GetThisEnvironment',
- 'GetThisValue',
- 'GetValue',
- 'GetValueFromBuffer',
- 'GetViewValue',
- 'GetWaiterList',
- 'GlobalDeclarationInstantiation',
- 'happens-before',
- 'HasPrimitiveBase',
- 'host-synchronizes-with',
- 'HostEnsureCanCompileStrings',
- 'HostEventSet',
- 'HostPromiseRejectionTracker',
- 'HostReportErrors',
- 'HostResolveImportedModule',
- 'IfAbruptRejectPromise',
- 'ImportedLocalNames',
- 'InitializeBoundName',
- 'InitializeHostDefinedRealm',
- 'InitializeReferencedBinding',
- 'InnerModuleEvaluation',
- 'InnerModuleInstantiation',
- 'IntegerIndexedElementGet',
- 'IntegerIndexedElementSet',
- 'IntegerIndexedObjectCreate',
- 'InternalizeJSONProperty',
- 'IsAnonymousFunctionDefinition',
- 'IsCompatiblePropertyDescriptor',
- 'IsDetachedBuffer',
- 'IsInTailPosition',
- 'IsLabelledFunction',
- 'IsPropertyReference',
- 'IsSharedArrayBuffer',
- 'IsStrictReference',
- 'IsSuperReference',
- 'IsUnresolvableReference',
- 'IsWordChar',
- 'LeaveCriticalSection',
- 'LocalTime',
- 'LoopContinues',
- 'MakeArgGetter',
- 'MakeArgSetter',
- 'MakeClassConstructor',
- 'MakeConstructor',
- 'MakeMethod',
- 'MakeSuperPropertyReference',
- 'max',
- 'memory-order',
- 'min',
- 'ModuleDeclarationEnvironmentSetup',
- 'ModuleExecution',
- 'ModuleNamespaceCreate',
- 'NewDeclarativeEnvironment',
- 'NewFunctionEnvironment',
- 'NewGlobalEnvironment',
- 'NewModuleEnvironment',
- 'NewObjectEnvironment',
- 'NewPromiseCapability',
- 'NormalCompletion',
- 'NumberToRawBytes',
- 'ObjectDefineProperties',
- 'OrdinaryCallBindThis',
- 'OrdinaryCallEvaluateBody',
- 'OrdinaryDelete',
- 'OrdinaryGet',
- 'OrdinaryIsExtensible',
- 'OrdinaryOwnPropertyKeys',
- 'OrdinaryPreventExtensions',
- 'OrdinarySet',
- 'OrdinarySetWithOwnDescriptor',
- 'OrdinaryToPrimitive',
- 'ParseModule',
- 'ParseScript',
- 'PerformEval',
- 'PerformPromiseAll',
- 'PerformPromiseRace',
- 'PerformPromiseThen',
- 'PrepareForOrdinaryCall',
- 'PrepareForTailCall',
- 'PromiseReactionJob',
- 'PromiseResolveThenableJob',
- 'ProxyCreate',
- 'PutValue', // takes a Reference
- 'RawBytesToNumber',
- 'reads-bytes-from',
- 'reads-from',
- 'RegExpAlloc', // creates a regex with uninitialized internal lots
- 'RegExpBuiltinExec',
- 'RegExpInitialize', // initializes allocated regex's internal slots
- 'RejectPromise',
- 'RemoveWaiter',
- 'RemoveWaiters',
- 'RepeatMatcher',
- 'ResolveBinding',
- 'ResolveThisBinding',
- 'ReturnIfAbrupt',
- 'RunJobs',
- 'ScriptEvaluation',
- 'ScriptEvaluationJob',
- 'SerializeJSONArray',
- 'SerializeJSONObject',
- 'SerializeJSONProperty',
- 'SetDefaultGlobalBindings',
- 'SetImmutablePrototype',
- 'SetRealmGlobalObject',
- 'SetValueInBuffer',
- 'SetViewValue',
- 'SharedDataBlockEventSet',
- 'SortCompare', // mystery access to `comparefn` arg
- 'Suspend',
- 'synchronizes-with',
- 'ThrowCompletion',
- 'TimeZoneString',
- 'TopLevelModuleEvaluationJob',
- 'TriggerPromiseReactions',
- 'TypedArrayCreate',
- 'TypedArraySpeciesCreate',
- 'UnicodeMatchProperty',
- 'UnicodeMatchPropertyValue',
- 'UpdateEmpty', // completion records
- 'UTC', // depends on LocalTZA
- 'ValidateAtomicAccess',
- 'ValidateSharedIntegerTypedArray',
- 'ValidateTypedArray',
- 'ValueOfReadEvent',
- 'WakeWaiter',
- 'WordCharacters' // depends on Canonicalize
-];
-
-require('./tests').es2018(boundES, ops, expectedMissing);
-
-require('./helpers/runManifestTest')(require('tape'), ES, 2018);
diff --git a/node_modules/es-abstract/test/es2019.js b/node_modules/es-abstract/test/es2019.js
deleted file mode 100644
index a7cc84af5..000000000
--- a/node_modules/es-abstract/test/es2019.js
+++ /dev/null
@@ -1,231 +0,0 @@
-'use strict';
-
-var ES = require('../').ES2019;
-var boundES = require('./helpers/createBoundESNamespace')(ES);
-
-var ops = require('../operations/2019');
-
-var expectedMissing = [
- 'AddRestrictedFunctionProperties',
- 'AddWaiter',
- 'agent-order',
- 'AgentCanSuspend',
- 'AgentSignifier',
- 'AllocateArrayBuffer',
- 'AllocateSharedArrayBuffer',
- 'AllocateTypedArray',
- 'AllocateTypedArrayBuffer',
- 'AsyncFromSyncIteratorContinuation',
- 'AsyncFunctionCreate',
- 'AsyncFunctionStart',
- 'AsyncGeneratorEnqueue',
- 'AsyncGeneratorFunctionCreate',
- 'AsyncGeneratorReject',
- 'AsyncGeneratorResolve',
- 'AsyncGeneratorResumeNext',
- 'AsyncGeneratorStart',
- 'AsyncGeneratorYield',
- 'AsyncIteratorClose',
- 'AtomicLoad',
- 'AtomicReadModifyWrite',
- 'Await',
- 'BackreferenceMatcher',
- 'BlockDeclarationInstantiation',
- 'BoundFunctionCreate',
- 'Canonicalize',
- 'CaseClauseIsSelected',
- 'CharacterRange',
- 'CharacterRangeOrUnion',
- 'CharacterSetMatcher',
- 'CloneArrayBuffer',
- 'Completion',
- 'ComposeWriteEventBytes',
- 'Construct',
- 'CopyDataBlockBytes',
- 'CreateArrayFromList',
- 'CreateArrayIterator',
- 'CreateAsyncFromSyncIterator',
- 'CreateBuiltinFunction',
- 'CreateByteDataBlock',
- 'CreateDynamicFunction',
- 'CreateIntrinsics',
- 'CreateListIteratorRecord',
- 'CreateMapIterator',
- 'CreateMappedArgumentsObject',
- 'CreatePerIterationEnvironment',
- 'CreateRealm',
- 'CreateResolvingFunctions',
- 'CreateSetIterator',
- 'CreateSharedByteDataBlock',
- 'CreateStringIterator',
- 'CreateUnmappedArgumentsObject',
- 'Decode',
- 'DetachArrayBuffer',
- 'Encode',
- 'EnqueueJob',
- 'EnterCriticalSection',
- 'EnumerateObjectProperties',
- 'EscapeRegExpPattern',
- 'EvalDeclarationInstantiation',
- 'EvaluateCall',
- 'EvaluateNew',
- 'EventSet',
- 'ExecuteModule',
- 'ForBodyEvaluation',
- 'ForIn/OfBodyEvaluation',
- 'ForIn/OfHeadEvaluation',
- 'FulfillPromise',
- 'FunctionAllocate',
- 'FunctionCreate',
- 'FunctionDeclarationInstantiation',
- 'FunctionInitialize',
- 'GeneratorFunctionCreate',
- 'GeneratorResume',
- 'GeneratorResumeAbrupt',
- 'GeneratorStart',
- 'GeneratorValidate',
- 'GeneratorYield',
- 'GetActiveScriptOrModule',
- 'GetBase',
- 'GetFunctionRealm',
- 'GetGeneratorKind',
- 'GetGlobalObject',
- 'GetIdentifierReference',
- 'GetModifySetValueInBuffer',
- 'GetModuleNamespace',
- 'GetNewTarget',
- 'GetReferencedName',
- 'GetSuperConstructor',
- 'GetTemplateObject',
- 'GetThisEnvironment',
- 'GetThisValue',
- 'GetValue',
- 'GetValueFromBuffer',
- 'GetViewValue',
- 'GetWaiterList',
- 'GlobalDeclarationInstantiation',
- 'happens-before',
- 'HasPrimitiveBase',
- 'host-synchronizes-with',
- 'HostEnsureCanCompileStrings',
- 'HostEventSet',
- 'HostPromiseRejectionTracker',
- 'HostReportErrors',
- 'HostResolveImportedModule',
- 'IfAbruptRejectPromise',
- 'ImportedLocalNames',
- 'InitializeBoundName',
- 'InitializeEnvironment',
- 'InitializeHostDefinedRealm',
- 'InitializeReferencedBinding',
- 'InnerModuleEvaluation',
- 'InnerModuleInstantiation',
- 'IntegerIndexedElementGet',
- 'IntegerIndexedElementSet',
- 'IntegerIndexedObjectCreate',
- 'InternalizeJSONProperty',
- 'IsAnonymousFunctionDefinition',
- 'IsCompatiblePropertyDescriptor',
- 'IsDetachedBuffer',
- 'IsInTailPosition',
- 'IsLabelledFunction',
- 'IsPropertyReference',
- 'IsSharedArrayBuffer',
- 'IsStrictReference',
- 'IsSuperReference',
- 'IsUnresolvableReference',
- 'IsWordChar',
- 'LeaveCriticalSection',
- 'LocalTime',
- 'LoopContinues',
- 'MakeArgGetter',
- 'MakeArgSetter',
- 'MakeClassConstructor',
- 'MakeConstructor',
- 'MakeMethod',
- 'MakeSuperPropertyReference',
- 'max',
- 'memory-order',
- 'min',
- 'ModuleNamespaceCreate',
- 'NewDeclarativeEnvironment',
- 'NewFunctionEnvironment',
- 'NewGlobalEnvironment',
- 'NewModuleEnvironment',
- 'NewObjectEnvironment',
- 'NewPromiseCapability',
- 'NormalCompletion',
- 'NotifyWaiter',
- 'NumberToRawBytes',
- 'ObjectDefineProperties',
- 'OrdinaryCallBindThis',
- 'OrdinaryCallEvaluateBody',
- 'OrdinaryDelete',
- 'OrdinaryGet',
- 'OrdinaryIsExtensible',
- 'OrdinaryOwnPropertyKeys',
- 'OrdinaryPreventExtensions',
- 'OrdinarySet',
- 'OrdinarySetWithOwnDescriptor',
- 'OrdinaryToPrimitive',
- 'ParseModule',
- 'ParseScript',
- 'PerformEval',
- 'PerformPromiseAll',
- 'PerformPromiseRace',
- 'PerformPromiseThen',
- 'PrepareForOrdinaryCall',
- 'PrepareForTailCall',
- 'PromiseReactionJob',
- 'PromiseResolveThenableJob',
- 'ProxyCreate',
- 'PutValue', // takes a Reference
- 'RawBytesToNumber',
- 'reads-bytes-from',
- 'reads-from',
- 'RegExpAlloc', // creates a regex with uninitialized internal lots
- 'RegExpBuiltinExec',
- 'RegExpInitialize', // initializes allocated regex's internal slots
- 'RejectPromise',
- 'RemoveWaiter',
- 'RemoveWaiters',
- 'RepeatMatcher',
- 'ResolveBinding',
- 'ResolveThisBinding',
- 'ReturnIfAbrupt',
- 'RunJobs',
- 'ScriptEvaluation',
- 'ScriptEvaluationJob',
- 'SerializeJSONArray',
- 'SerializeJSONObject',
- 'SerializeJSONProperty',
- 'SetDefaultGlobalBindings',
- 'SetImmutablePrototype',
- 'SetRealmGlobalObject',
- 'SetValueInBuffer',
- 'SetViewValue',
- 'SharedDataBlockEventSet',
- 'SortCompare', // mystery access to `comparefn` arg
- 'Suspend',
- 'SynchronizeEventSet',
- 'synchronizes-with',
- 'ThrowCompletion',
- 'TimeZoneString',
- 'TopLevelModuleEvaluationJob',
- 'TriggerPromiseReactions',
- 'TypedArrayCreate',
- 'TypedArraySpeciesCreate',
- 'UnicodeMatchProperty',
- 'UnicodeMatchPropertyValue',
- 'UpdateEmpty', // completion records
- 'UTC', // depends on LocalTZA
- 'ValidateAtomicAccess',
- 'ValidateSharedIntegerTypedArray',
- 'ValidateTypedArray',
- 'ValueOfReadEvent',
- 'WordCharacters' // depends on Canonicalize
-];
-
-require('./tests').es2019(boundES, ops, expectedMissing);
-
-require('./helpers/runManifestTest')(require('tape'), ES, 2019);
diff --git a/node_modules/es-abstract/test/es2020.js b/node_modules/es-abstract/test/es2020.js
deleted file mode 100644
index 83f0b3ae0..000000000
--- a/node_modules/es-abstract/test/es2020.js
+++ /dev/null
@@ -1,240 +0,0 @@
-'use strict';
-
-var ES = require('../').ES2020;
-var boundES = require('./helpers/createBoundESNamespace')(ES);
-
-var ops = require('../operations/2020');
-
-var expectedMissing = [
- 'AddRestrictedFunctionProperties',
- 'AddWaiter',
- 'agent-order',
- 'AgentCanSuspend',
- 'AgentSignifier',
- 'AllocateArrayBuffer',
- 'AllocateSharedArrayBuffer',
- 'AllocateTypedArray',
- 'AllocateTypedArrayBuffer',
- 'AsyncFromSyncIteratorContinuation',
- 'AsyncFunctionStart',
- 'AsyncGeneratorEnqueue',
- 'AsyncGeneratorReject',
- 'AsyncGeneratorResolve',
- 'AsyncGeneratorResumeNext',
- 'AsyncGeneratorStart',
- 'AsyncGeneratorYield',
- 'AsyncIteratorClose',
- 'AtomicLoad',
- 'AtomicReadModifyWrite',
- 'Await',
- 'BackreferenceMatcher',
- 'BlockDeclarationInstantiation',
- 'BoundFunctionCreate',
- 'Canonicalize',
- 'CaseClauseIsSelected',
- 'CharacterRange',
- 'CharacterRangeOrUnion',
- 'CharacterSetMatcher',
- 'CloneArrayBuffer',
- 'Completion',
- 'ComposeWriteEventBytes',
- 'Construct',
- 'CopyDataBlockBytes',
- 'CreateArrayFromList',
- 'CreateArrayIterator',
- 'CreateAsyncFromSyncIterator',
- 'CreateBuiltinFunction',
- 'CreateByteDataBlock',
- 'CreateDynamicFunction',
- 'CreateForInIterator',
- 'CreateIntrinsics',
- 'CreateListIteratorRecord',
- 'CreateMapIterator',
- 'CreateMappedArgumentsObject',
- 'CreatePerIterationEnvironment',
- 'CreateRealm',
- 'CreateRegExpStringIterator',
- 'CreateResolvingFunctions',
- 'CreateSetIterator',
- 'CreateSharedByteDataBlock',
- 'CreateStringIterator',
- 'CreateUnmappedArgumentsObject',
- 'Decode',
- 'DetachArrayBuffer',
- 'Encode',
- 'EnterCriticalSection',
- 'EnumerateObjectProperties',
- 'EscapeRegExpPattern',
- 'EvalDeclarationInstantiation',
- 'EvaluateCall',
- 'EvaluateNew',
- 'EvaluatePropertyAccessWithExpressionKey',
- 'EvaluatePropertyAccessWithIdentifierKey',
- 'EventSet',
- 'ExecuteModule',
- 'FinishDynamicImport',
- 'ForBodyEvaluation',
- 'ForIn/OfBodyEvaluation',
- 'ForIn/OfHeadEvaluation',
- 'FulfillPromise',
- 'FunctionDeclarationInstantiation',
- 'GeneratorResume',
- 'GeneratorResumeAbrupt',
- 'GeneratorStart',
- 'GeneratorValidate',
- 'GeneratorYield',
- 'GetActiveScriptOrModule',
- 'GetBase',
- 'GetFunctionRealm',
- 'GetGeneratorKind',
- 'GetGlobalObject',
- 'GetIdentifierReference',
- 'GetModifySetValueInBuffer',
- 'GetModuleNamespace',
- 'GetNewTarget',
- 'GetReferencedName',
- 'GetSuperConstructor',
- 'GetTemplateObject',
- 'GetThisEnvironment',
- 'GetThisValue',
- 'GetValue',
- 'GetValueFromBuffer',
- 'GetViewValue',
- 'GetWaiterList',
- 'GlobalDeclarationInstantiation',
- 'happens-before',
- 'HasPrimitiveBase',
- 'host-synchronizes-with',
- 'HostEnqueuePromiseJob',
- 'HostEnsureCanCompileStrings',
- 'HostEventSet',
- 'HostFinalizeImportMeta',
- 'HostGetImportMetaProperties',
- 'HostImportModuleDynamically',
- 'HostPromiseRejectionTracker',
- 'HostResolveImportedModule',
- 'IfAbruptRejectPromise',
- 'ImportedLocalNames',
- 'InitializeBoundName',
- 'InitializeEnvironment',
- 'InitializeHostDefinedRealm',
- 'InitializeReferencedBinding',
- 'InnerModuleEvaluation',
- 'InnerModuleLinking',
- 'IntegerIndexedElementGet',
- 'IntegerIndexedElementSet',
- 'IntegerIndexedObjectCreate',
- 'InternalizeJSONProperty',
- 'IsAnonymousFunctionDefinition',
- 'IsCompatiblePropertyDescriptor',
- 'IsDetachedBuffer',
- 'IsInTailPosition',
- 'IsLabelledFunction',
- 'IsPropertyReference',
- 'IsSharedArrayBuffer',
- 'IsStrictReference',
- 'IsSuperReference',
- 'IsUnresolvableReference',
- 'IsValidIntegerIndex',
- 'IsValidRegularExpressionLiteral',
- 'IsWordChar',
- 'LeaveCriticalSection',
- 'LocalTime',
- 'LocalTZA',
- 'LoopContinues',
- 'MakeArgGetter',
- 'MakeArgSetter',
- 'MakeBasicObject',
- 'MakeClassConstructor',
- 'MakeConstructor',
- 'MakeMethod',
- 'MakeSuperPropertyReference',
- 'max',
- 'memory-order',
- 'min',
- 'ModuleNamespaceCreate',
- 'NewDeclarativeEnvironment',
- 'NewFunctionEnvironment',
- 'NewGlobalEnvironment',
- 'NewModuleEnvironment',
- 'NewObjectEnvironment',
- 'NewPromiseCapability',
- 'NewPromiseReactionJob',
- 'NewPromiseResolveThenableJob',
- 'NormalCompletion',
- 'NotifyWaiter',
- 'NumericToRawBytes',
- 'ObjectDefineProperties',
- 'OrdinaryCallBindThis',
- 'OrdinaryCallEvaluateBody',
- 'OrdinaryDelete',
- 'OrdinaryFunctionCreate',
- 'OrdinaryGet',
- 'OrdinaryIsExtensible',
- 'OrdinaryOwnPropertyKeys',
- 'OrdinaryPreventExtensions',
- 'OrdinarySet',
- 'OrdinarySetWithOwnDescriptor',
- 'OrdinaryToPrimitive',
- 'ParseModule',
- 'ParseScript',
- 'PerformEval',
- 'PerformPromiseAll',
- 'PerformPromiseAllSettled',
- 'PerformPromiseRace',
- 'PerformPromiseThen',
- 'PrepareForOrdinaryCall',
- 'PrepareForTailCall',
- 'ProxyCreate',
- 'PutValue', // takes a Reference
- 'RawBytesToNumeric',
- 'reads-bytes-from',
- 'reads-from',
- 'RegExpAlloc', // creates a regex with uninitialized internal lots
- 'RegExpBuiltinExec',
- 'RegExpInitialize', // initializes allocated regex's internal slots
- 'RejectPromise',
- 'RemoveWaiter',
- 'RemoveWaiters',
- 'RepeatMatcher',
- 'RequireInternalSlot',
- 'ResolveBinding',
- 'ResolveThisBinding',
- 'ReturnIfAbrupt',
- 'ScriptEvaluation',
- 'SerializeJSONArray',
- 'SerializeJSONObject',
- 'SerializeJSONProperty',
- 'SetDefaultGlobalBindings',
- 'SetImmutablePrototype',
- 'SetRealmGlobalObject',
- 'SetValueInBuffer',
- 'SetViewValue',
- 'SharedDataBlockEventSet',
- 'SortCompare', // mystery access to `comparefn` arg
- 'StringToBigInt',
- 'Suspend',
- 'synchronizes-with',
- 'ThrowCompletion',
- 'TimeZoneString',
- 'ToBigInt',
- 'ToBigInt64',
- 'ToBigUint64',
- 'TriggerPromiseReactions',
- 'TypedArrayCreate',
- 'TypedArraySpeciesCreate',
- 'UnicodeMatchProperty',
- 'UnicodeMatchPropertyValue',
- 'UpdateEmpty', // completion records
- 'UTC', // depends on LocalTZA
- 'UTF16Encode',
- 'ValidateAtomicAccess',
- 'ValidateSharedIntegerTypedArray',
- 'ValidateTypedArray',
- 'ValueOfReadEvent',
- 'WordCharacters' // depends on Canonicalize
-];
-
-require('./tests').es2020(boundES, ops, expectedMissing);
-
-require('./helpers/runManifestTest')(require('tape'), ES, 2020);
diff --git a/node_modules/es-abstract/test/es5.js b/node_modules/es-abstract/test/es5.js
deleted file mode 100644
index c4033f673..000000000
--- a/node_modules/es-abstract/test/es5.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict';
-
-var ES = require('../').ES5;
-var boundES = require('./helpers/createBoundESNamespace')(ES);
-
-var ops = require('../operations/es5');
-
-var expectedMissing = [
- 'SplitMatch'
-];
-
-require('./tests').es5(boundES, ops, expectedMissing);
-
-require('./helpers/runManifestTest')(require('tape'), ES, 5);
diff --git a/node_modules/es-abstract/test/es6.js b/node_modules/es-abstract/test/es6.js
deleted file mode 100644
index e7c9d98a2..000000000
--- a/node_modules/es-abstract/test/es6.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict';
-
-var test = require('tape');
-
-var ES = require('../');
-var ES6 = ES.ES6;
-var ES2015 = ES.ES2015;
-var ES6entry = require('../es6');
-
-test('legacy es6 export', function (t) {
- t.equal(ES6, ES2015, 'main ES6 === main ES2015');
- t.end();
-});
-
-test('legacy es6 entry point', function (t) {
- t.equal(ES6, ES6entry, 'main ES6 === ES6 entry point');
- t.end();
-});
diff --git a/node_modules/es-abstract/test/es7.js b/node_modules/es-abstract/test/es7.js
deleted file mode 100644
index ee57e153b..000000000
--- a/node_modules/es-abstract/test/es7.js
+++ /dev/null
@@ -1,18 +0,0 @@
-'use strict';
-
-var test = require('tape');
-
-var ES = require('../');
-var ES7 = ES.ES7;
-var ES2016 = ES.ES2016;
-var ES7entry = require('../es7');
-
-test('legacy es7 export', function (t) {
- t.equal(ES7, ES2016, 'main ES7 === main ES2016');
- t.end();
-});
-
-test('legacy es7 entry point', function (t) {
- t.equal(ES7, ES7entry, 'main ES7 === ES7 entry point');
- t.end();
-});
diff --git a/node_modules/es-abstract/test/helpers/OwnPropertyKeys.js b/node_modules/es-abstract/test/helpers/OwnPropertyKeys.js
deleted file mode 100644
index 9c2b4fc44..000000000
--- a/node_modules/es-abstract/test/helpers/OwnPropertyKeys.js
+++ /dev/null
@@ -1,42 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var hasSymbols = require('has-symbols')();
-
-var OwnPropertyKeys = require('../../helpers/OwnPropertyKeys');
-var defineProperty = require('./defineProperty');
-
-test('OwnPropertyKeys', function (t) {
- t.deepEqual(OwnPropertyKeys({ a: 1, b: 2 }).sort(), ['a', 'b'].sort(), 'returns own string keys');
-
- t.test('Symbols', { skip: !hasSymbols }, function (st) {
- var o = { a: 1 };
- var sym = Symbol();
- o[sym] = 2;
-
- st.deepEqual(OwnPropertyKeys(o), ['a', sym], 'returns own string and symbol keys');
-
- st.end();
- });
-
- t.test('non-enumerables', { skip: !defineProperty.oDP }, function (st) {
- var o = { a: 1, b: 42, c: NaN };
- defineProperty(o, 'b', { enumerable: false, value: 42 });
- defineProperty(o, 'c', { enumerable: false, get: function () { return NaN; } });
-
- if (hasSymbols) {
- defineProperty(o, 'd', { enumerable: false, value: true });
- defineProperty(o, 'e', { enumerable: false, get: function () { return true; } });
- }
-
- st.deepEqual(
- OwnPropertyKeys(o).sort(),
- (hasSymbols ? ['a', 'b', 'c', 'd', 'e'] : ['a', 'b', 'c']).sort(),
- 'returns non-enumerable own keys, including accessors and symbols if available'
- );
-
- st.end();
- });
-
- t.end();
-});
diff --git a/node_modules/es-abstract/test/helpers/assertRecord.js b/node_modules/es-abstract/test/helpers/assertRecord.js
deleted file mode 100644
index 02311013f..000000000
--- a/node_modules/es-abstract/test/helpers/assertRecord.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-var forEach = require('foreach');
-var debug = require('object-inspect');
-
-var assertRecord = require('../../helpers/assertRecord');
-var v = require('es-value-fixtures');
-
-module.exports = function assertRecordTests(ES, test) {
- test('Property Descriptor', function (t) {
- var record = 'Property Descriptor';
-
- forEach(v.nonUndefinedPrimitives, function (primitive) {
- t['throws'](
- function () { assertRecord(ES.Type, record, 'arg', primitive); },
- TypeError,
- debug(primitive) + ' is not a Property Descriptor'
- );
- });
-
- t['throws'](
- function () { assertRecord(ES.Type, record, 'arg', { invalid: true }); },
- TypeError,
- 'invalid keys not allowed on a Property Descriptor'
- );
-
- t.doesNotThrow(
- function () { assertRecord(ES.Type, record, 'arg', {}); },
- 'empty object is an incomplete Property Descriptor'
- );
-
- t.doesNotThrow(
- function () { assertRecord(ES.Type, record, 'arg', v.accessorDescriptor()); },
- 'accessor descriptor is a Property Descriptor'
- );
-
- t.doesNotThrow(
- function () { assertRecord(ES.Type, record, 'arg', v.mutatorDescriptor()); },
- 'mutator descriptor is a Property Descriptor'
- );
-
- t.doesNotThrow(
- function () { assertRecord(ES.Type, record, 'arg', v.dataDescriptor()); },
- 'data descriptor is a Property Descriptor'
- );
-
- t.doesNotThrow(
- function () { assertRecord(ES.Type, record, 'arg', v.genericDescriptor()); },
- 'generic descriptor is a Property Descriptor'
- );
-
- t['throws'](
- function () { assertRecord(ES.Type, record, 'arg', v.bothDescriptor()); },
- TypeError,
- 'a Property Descriptor can not be both a Data and an Accessor Descriptor'
- );
-
- t.end();
- });
-};
diff --git a/node_modules/es-abstract/test/helpers/createBoundESNamespace.js b/node_modules/es-abstract/test/helpers/createBoundESNamespace.js
deleted file mode 100644
index 0150404d9..000000000
--- a/node_modules/es-abstract/test/helpers/createBoundESNamespace.js
+++ /dev/null
@@ -1,23 +0,0 @@
-'use strict';
-
-var bind = require('function-bind');
-
-var OwnPropertyKeys = require('../../helpers/OwnPropertyKeys');
-
-module.exports = function createBoundESNamespace(ES) {
- var keys = OwnPropertyKeys(ES);
- var result = {};
-
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- var prop = ES[key];
- if (typeof prop === 'function') {
- prop = bind.call(prop, undefined);
- } else if (prop && typeof prop === 'object') {
- prop = createBoundESNamespace(prop);
- }
- result[key] = prop;
- }
-
- return result;
-};
diff --git a/node_modules/es-abstract/test/helpers/defineProperty.js b/node_modules/es-abstract/test/helpers/defineProperty.js
deleted file mode 100644
index 03102a839..000000000
--- a/node_modules/es-abstract/test/helpers/defineProperty.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict';
-
-var GetIntrinsic = require('../../GetIntrinsic');
-
-var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
-
-if ($defineProperty) {
- try {
- $defineProperty({}, 'a', { value: 1 });
- } catch (e) {
- // IE 8 has a broken defineProperty
- $defineProperty = null;
- }
-}
-
-module.exports = function defineProperty(O, P, Desc) {
- if ($defineProperty) {
- return $defineProperty(O, P, Desc);
- }
- if ((Desc.enumerable && Desc.configurable && Desc.writable) || !(P in O)) {
- O[P] = Desc.value; // eslint-disable-line no-param-reassign
- return O;
- }
-
- throw new SyntaxError('helper does not yet support this configuration');
-};
-module.exports.oDP = $defineProperty;
diff --git a/node_modules/es-abstract/test/helpers/getSymbolDescription.js b/node_modules/es-abstract/test/helpers/getSymbolDescription.js
deleted file mode 100644
index 05be3bbbf..000000000
--- a/node_modules/es-abstract/test/helpers/getSymbolDescription.js
+++ /dev/null
@@ -1,67 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var debug = require('object-inspect');
-var forEach = require('foreach');
-var has = require('has');
-
-var v = require('es-value-fixtures');
-var getSymbolDescription = require('../../helpers/getSymbolDescription');
-var getInferredName = require('../../helpers/getInferredName');
-
-test('getSymbolDescription', function (t) {
- t.test('no symbols', { skip: v.hasSymbols }, function (st) {
- st['throws'](
- getSymbolDescription,
- SyntaxError,
- 'requires Symbol support'
- );
-
- st.end();
- });
-
- forEach(v.nonSymbolPrimitives.concat(v.objects), function (nonSymbol) {
- t['throws'](
- function () { getSymbolDescription(nonSymbol); },
- v.hasSymbols ? TypeError : SyntaxError,
- debug(nonSymbol) + ' is not a Symbol'
- );
- });
-
- t.test('with symbols', { skip: !v.hasSymbols }, function (st) {
- forEach(
- [
- [Symbol(), undefined],
- [Symbol(undefined), undefined],
- [Symbol(null), 'null'],
- [Symbol.iterator, 'Symbol.iterator'],
- [Symbol('foo'), 'foo']
- ],
- function (pair) {
- var sym = pair[0];
- var desc = pair[1];
- st.equal(getSymbolDescription(sym), desc, debug(sym) + ' description is ' + debug(desc));
- }
- );
-
- st.test('only possible when inference or native `Symbol.prototype.description` is supported', {
- skip: !getInferredName && !has(Symbol.prototype, 'description')
- }, function (s2t) {
- s2t.equal(getSymbolDescription(Symbol('')), '', 'Symbol("") description is ""');
-
- s2t.end();
- });
-
- st.test('only possible when global symbols are supported', {
- skip: !has(Symbol, 'for') || !has(Symbol, 'keyFor')
- }, function (s2t) {
- // eslint-disable-next-line no-restricted-properties
- s2t.equal(getSymbolDescription(Symbol['for']('')), '', 'Symbol.for("") description is ""');
- s2t.end();
- });
-
- st.end();
- });
-
- t.end();
-});
diff --git a/node_modules/es-abstract/test/helpers/index.js b/node_modules/es-abstract/test/helpers/index.js
deleted file mode 100644
index 4260bc2f5..000000000
--- a/node_modules/es-abstract/test/helpers/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-'use strict';
-
-require('./getSymbolDescription');
-require('./isByteValue');
-require('./isCodePoint');
-require('./OwnPropertyKeys');
diff --git a/node_modules/es-abstract/test/helpers/isByteValue.js b/node_modules/es-abstract/test/helpers/isByteValue.js
deleted file mode 100644
index f89491024..000000000
--- a/node_modules/es-abstract/test/helpers/isByteValue.js
+++ /dev/null
@@ -1,28 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var forEach = require('foreach');
-var debug = require('object-inspect');
-
-var isByteValue = require('../../helpers/isByteValue');
-var v = require('es-value-fixtures');
-
-test('isByteValue', function (t) {
- forEach([].concat(
- v.notNonNegativeIntegers,
- -1,
- -42,
- -Infinity,
- Infinity,
- v.nonIntegerNumbers
- ), function (nonByteValue) {
- t.equal(isByteValue(nonByteValue), false, debug(nonByteValue) + ' is not a byte value');
- });
-
- for (var i = 0; i <= 255; i += 1) {
- t.equal(isByteValue(i), true, i + ' is a byte value');
- }
- t.equal(isByteValue(256), false, '256 is not a byte value');
-
- t.end();
-});
diff --git a/node_modules/es-abstract/test/helpers/isCodePoint.js b/node_modules/es-abstract/test/helpers/isCodePoint.js
deleted file mode 100644
index 9106615a5..000000000
--- a/node_modules/es-abstract/test/helpers/isCodePoint.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-var test = require('tape');
-var forEach = require('foreach');
-var debug = require('object-inspect');
-
-var isCodePoint = require('../../helpers/isCodePoint');
-var v = require('es-value-fixtures');
-
-test('isCodePoint', function (t) {
- forEach(v.notNonNegativeIntegers.concat(0x10FFFF + 1), function (nonCodePoints) {
- t.equal(isCodePoint(nonCodePoints), false, debug(nonCodePoints) + ' is not a Code Point');
- });
-
- forEach([-0, 0, 1, 7, 42, 0x10FFFF], function (codePoint) {
- t.equal(isCodePoint(codePoint), true, debug(codePoint) + ' is a Code Point');
- });
-
- t.end();
-});
diff --git a/node_modules/es-abstract/test/helpers/runManifestTest.js b/node_modules/es-abstract/test/helpers/runManifestTest.js
deleted file mode 100644
index 2fdb4f216..000000000
--- a/node_modules/es-abstract/test/helpers/runManifestTest.js
+++ /dev/null
@@ -1,27 +0,0 @@
-'use strict';
-
-var path = require('path');
-var fs = require('fs');
-
-var forEach = require('foreach');
-var keys = require('object-keys');
-
-module.exports = function runManifestTest(test, ES, edition) {
- test('ES' + edition + ' manifest', { skip: !fs.readdirSync }, function (t) {
- var files = fs.readdirSync(path.join(__dirname, '../../' + edition), 'utf-8');
- var map = {
- AbstractEqualityComparison: 'Abstract Equality Comparison',
- AbstractRelationalComparison: 'Abstract Relational Comparison',
- StrictEqualityComparison: 'Strict Equality Comparison'
- };
- forEach(files, function (file) {
- var name = path.basename(file, path.extname(file));
- var actual = ES[map[name] || name];
- var expected = require(path.join(__dirname, '../../' + edition + '/', file)); // eslint-disable-line global-require
- t.equal(actual, expected, 'ES["' + name + '"] === ' + file);
- });
- var actualCount = keys(ES).length;
- t.equal(actualCount, files.length, 'expected ' + files.length + ' files, got ' + actualCount);
- t.end();
- });
-};
diff --git a/node_modules/es-abstract/test/index.js b/node_modules/es-abstract/test/index.js
deleted file mode 100644
index 5ebe3dbcc..000000000
--- a/node_modules/es-abstract/test/index.js
+++ /dev/null
@@ -1,35 +0,0 @@
-'use strict';
-
-var ES = require('../');
-var test = require('tape');
-var keys = require('object-keys');
-var forEach = require('foreach');
-
-var ESkeys = keys(ES).sort();
-var ES6keys = keys(ES.ES6).sort();
-
-test('exposed properties', function (t) {
- t.deepEqual(ESkeys, ES6keys.concat(['ES2020', 'ES2019', 'ES2018', 'ES2017', 'ES7', 'ES2016', 'ES6', 'ES2015', 'ES5']).sort(), 'main ES object keys match ES6 keys');
- t.end();
-});
-
-test('methods match', function (t) {
- forEach(ES6keys, function (key) {
- t.equal(ES.ES6[key], ES[key], 'method ' + key + ' on main ES object is ES6 method');
- });
- t.end();
-});
-
-require('./GetIntrinsic');
-
-require('./helpers');
-
-require('./es5');
-require('./es6');
-require('./es2015');
-require('./es7');
-require('./es2016');
-require('./es2017');
-require('./es2018');
-require('./es2019');
-require('./es2020');
diff --git a/node_modules/es-abstract/test/ses-compat.js b/node_modules/es-abstract/test/ses-compat.js
deleted file mode 100644
index c3e60f4ae..000000000
--- a/node_modules/es-abstract/test/ses-compat.js
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict';
-
-/* globals lockdown */
-require('ses');
-
-lockdown({ errorTaming: 'unsafe' });
-
-require('.');
diff --git a/node_modules/es-abstract/test/tests.js b/node_modules/es-abstract/test/tests.js
deleted file mode 100644
index e3ec4003a..000000000
--- a/node_modules/es-abstract/test/tests.js
+++ /dev/null
@@ -1,6962 +0,0 @@
-'use strict';
-
-var tape = require('tape');
-
-var forEach = require('foreach');
-var debug = require('object-inspect');
-var assign = require('object.assign');
-var keys = require('object-keys');
-var has = require('has');
-var arrowFns = require('make-arrow-function').list();
-var hasStrictMode = require('has-strict-mode')();
-var functionsHaveNames = require('functions-have-names')();
-var functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();
-var hasBigInts = require('has-bigints')();
-
-var $getProto = require('../helpers/getProto');
-var $setProto = require('../helpers/setProto');
-var defineProperty = require('./helpers/defineProperty');
-var getInferredName = require('../helpers/getInferredName');
-var getOwnPropertyDescriptor = require('../helpers/getOwnPropertyDescriptor');
-var assertRecordTests = require('./helpers/assertRecord');
-var v = require('es-value-fixtures');
-var diffOps = require('./diffOps');
-
-var $BigInt = hasBigInts ? BigInt : null;
-
-var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;
-
-var canDistinguishSparseFromUndefined = 0 in [undefined]; // IE 6 - 8 have a bug where this returns false
-
-// IE 9 does not throw in strict mode when writability/configurability/extensibility is violated
-var noThrowOnStrictViolation = (function () {
- try {
- delete [].length;
- return true;
- } catch (e) {
- }
- return false;
-}());
-
-var makeTest = function makeTest(skips) {
- return function test(opName, maybeOpts, maybeCb) {
- var origOpts = arguments.length > 2 ? maybeOpts : {};
- var opts = assign(
- {},
- origOpts,
- { skip: (skips && skips[opName]) || origOpts.skip }
- );
- var cb = arguments.length > 2 ? maybeCb : maybeOpts;
- return tape(opName, opts, cb);
- };
-};
-
-var leadingPoo = '\uD83D';
-var trailingPoo = '\uDCA9';
-var wholePoo = leadingPoo + trailingPoo;
-
-var getArraySubclassWithSpeciesConstructor = function getArraySubclass(speciesConstructor) {
- var Bar = function Bar() {
- var inst = [];
- Object.setPrototypeOf(inst, Bar.prototype);
- defineProperty(inst, 'constructor', { value: Bar });
- return inst;
- };
- Bar.prototype = Object.create(Array.prototype);
- Object.setPrototypeOf(Bar, Array);
- defineProperty(Bar, Symbol.species, { value: speciesConstructor });
-
- return Bar;
-};
-
-var testIterator = function (t, iterator, expected) {
- var resultCount = 0;
- var result;
- while (result = iterator.next(), !result.done) { // eslint-disable-line no-sequences
- t.deepEqual(result, { done: false, value: expected[resultCount] }, 'result ' + resultCount);
- resultCount += 1;
- }
- t.equal(resultCount, expected.length, 'expected ' + expected.length + ', got ' + resultCount);
-};
-
-var hasSpecies = v.hasSymbols && Symbol.species;
-
-var hasLastIndex = 'lastIndex' in (/a/).exec('a'); // IE 8
-var hasGroups = 'groups' in (/a/).exec('a'); // modern engines
-var kludgeMatch = function kludgeMatch(R, matchObject) {
- if (hasGroups) {
- assign(matchObject, { groups: matchObject.groups });
- }
- if (hasLastIndex) {
- assign(matchObject, { lastIndex: R.lastIndex });
- }
- return matchObject;
-};
-
-var testEnumerableOwnNames = function (t, enumerableOwnNames) {
- forEach(v.primitives, function (nonObject) {
- t['throws'](
- function () { enumerableOwnNames(nonObject); },
- debug(nonObject) + ' is not an Object'
- );
- });
-
- var Child = function Child() {
- this.own = {};
- };
- Child.prototype = {
- inherited: {}
- };
-
- var obj = new Child();
-
- t.equal('own' in obj, true, 'has "own"');
- t.equal(has(obj, 'own'), true, 'has own "own"');
- t.equal(Object.prototype.propertyIsEnumerable.call(obj, 'own'), true, 'has enumerable "own"');
-
- t.equal('inherited' in obj, true, 'has "inherited"');
- t.equal(has(obj, 'inherited'), false, 'has non-own "inherited"');
- t.equal(has(Child.prototype, 'inherited'), true, 'Child.prototype has own "inherited"');
- t.equal(Child.prototype.inherited, obj.inherited, 'Child.prototype.inherited === obj.inherited');
- t.equal(Object.prototype.propertyIsEnumerable.call(Child.prototype, 'inherited'), true, 'has enumerable "inherited"');
-
- t.equal('toString' in obj, true, 'has "toString"');
- t.equal(has(obj, 'toString'), false, 'has non-own "toString"');
- t.equal(has(Object.prototype, 'toString'), true, 'Object.prototype has own "toString"');
- t.equal(Object.prototype.toString, obj.toString, 'Object.prototype.toString === obj.toString');
- // eslint-disable-next-line no-useless-call
- t.equal(Object.prototype.propertyIsEnumerable.call(Object.prototype, 'toString'), false, 'has non-enumerable "toString"');
-
- return obj;
-};
-
-var testToNumber = function (t, ES, ToNumber) {
- t.equal(NaN, ToNumber(undefined), 'undefined coerces to NaN');
- t.equal(ToNumber(null), 0, 'null coerces to +0');
- t.equal(ToNumber(false), 0, 'false coerces to +0');
- t.equal(1, ToNumber(true), 'true coerces to 1');
-
- t.test('numbers', function (st) {
- st.equal(NaN, ToNumber(NaN), 'NaN returns itself');
- forEach(v.zeroes.concat(v.infinities, 42), function (num) {
- st.equal(num, ToNumber(num), num + ' returns itself');
- });
- forEach(['foo', '0', '4a', '2.0', 'Infinity', '-Infinity'], function (numString) {
- st.equal(+numString, ToNumber(numString), '"' + numString + '" coerces to ' + Number(numString));
- });
- st.end();
- });
-
- t.test('objects', function (st) {
- forEach(v.objects, function (object) {
- st.equal(ToNumber(object), ToNumber(ES.ToPrimitive(object)), 'object ' + object + ' coerces to same as ToPrimitive of object does');
- });
- st['throws'](function () { return ToNumber(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
- st.end();
- });
-
- // TODO: check if this applies to ES5
- t.test('binary literals', function (st) {
- st.equal(ToNumber('0b10'), 2, '0b10 is 2');
- st.equal(ToNumber({ toString: function () { return '0b11'; } }), 3, 'Object that toStrings to 0b11 is 3');
-
- st.equal(ToNumber('0b12'), NaN, '0b12 is NaN');
- st.equal(ToNumber({ toString: function () { return '0b112'; } }), NaN, 'Object that toStrings to 0b112 is NaN');
- st.end();
- });
-
- // TODO: check if this applies to ES5
- t.test('octal literals', function (st) {
- st.equal(ToNumber('0o10'), 8, '0o10 is 8');
- st.equal(ToNumber({ toString: function () { return '0o11'; } }), 9, 'Object that toStrings to 0o11 is 9');
-
- st.equal(ToNumber('0o18'), NaN, '0o18 is NaN');
- st.equal(ToNumber({ toString: function () { return '0o118'; } }), NaN, 'Object that toStrings to 0o118 is NaN');
- st.end();
- });
-
- // TODO: check if this applies to ES5
- t.test('signed hex numbers', function (st) {
- st.equal(ToNumber('-0xF'), NaN, '-0xF is NaN');
- st.equal(ToNumber(' -0xF '), NaN, 'space-padded -0xF is NaN');
- st.equal(ToNumber('+0xF'), NaN, '+0xF is NaN');
- st.equal(ToNumber(' +0xF '), NaN, 'space-padded +0xF is NaN');
-
- st.end();
- });
-
- // TODO: check if this applies to ES5
- t.test('trimming of whitespace and non-whitespace characters', function (st) {
- var whitespace = ' \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000';
- st.equal(0, ToNumber(whitespace + 0 + whitespace), 'whitespace is trimmed');
-
- // Zero-width space (zws), next line character (nel), and non-character (bom) are not whitespace.
- var nonWhitespaces = {
- '\\u0085': '\u0085',
- '\\u200b': '\u200b',
- '\\ufffe': '\ufffe'
- };
-
- forEach(nonWhitespaces, function (desc, nonWS) {
- st.equal(ToNumber(nonWS + 0 + nonWS), NaN, 'non-whitespace ' + desc + ' not trimmed');
- });
-
- st.end();
- });
-
- // TODO: skip for ES5
- forEach(v.symbols, function (symbol) {
- t['throws'](
- function () { ToNumber(symbol); },
- TypeError,
- 'Symbols can’t be converted to a Number: ' + debug(symbol)
- );
-
- var boxed = Object(symbol);
- t['throws'](
- function () { ToNumber(boxed); },
- TypeError,
- 'boxed Symbols can’t be converted to a Number: ' + debug(boxed)
- );
- });
-
- // TODO: check if this applies to ES5
- t.test('dates', function (st) {
- var invalid = new Date(NaN);
- st.equal(ToNumber(invalid), NaN, 'invalid Date coerces to NaN');
- var now = +new Date();
- st.equal(ToNumber(new Date(now)), now, 'Date coerces to timestamp');
- st.end();
- });
-};
-
-var es5 = function ES5(ES, ops, expectedMissing, skips) {
- var test = makeTest(skips);
-
- test('has expected operations', function (t) {
- var diff = diffOps(ES, ops, expectedMissing);
-
- t.deepEqual(diff.extra, [], 'no extra ops');
-
- t.deepEqual(diff.missing, [], 'no unexpected missing ops');
-
- t.deepEqual(diff.extraMissing, [], 'no unexpected "expected missing" ops');
-
- t.end();
- });
-
- test('ToPrimitive', function (t) {
- t.test('primitives', function (st) {
- var testPrimitive = function (primitive) {
- st.equal(ES.ToPrimitive(primitive), primitive, debug(primitive) + ' is returned correctly');
- };
- forEach(v.primitives, testPrimitive);
- st.end();
- });
-
- t.test('objects', function (st) {
- st.equal(ES.ToPrimitive(v.coercibleObject), 3, 'coercibleObject with no hint coerces to valueOf');
- st.equal(ES.ToPrimitive({}), '[object Object]', '{} with no hint coerces to Object#toString');
- st.equal(ES.ToPrimitive(v.coercibleObject, Number), 3, 'coercibleObject with hint Number coerces to valueOf');
- st.equal(ES.ToPrimitive({}, Number), '[object Object]', '{} with hint Number coerces to NaN');
- st.equal(ES.ToPrimitive(v.coercibleObject, String), 42, 'coercibleObject with hint String coerces to nonstringified toString');
- st.equal(ES.ToPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString');
- st.equal(ES.ToPrimitive(v.coercibleFnObject), v.coercibleFnObject.toString(), 'coercibleFnObject coerces to toString');
- st.equal(ES.ToPrimitive(v.toStringOnlyObject), 7, 'toStringOnlyObject returns non-stringified toString');
- st.equal(ES.ToPrimitive(v.valueOfOnlyObject), 4, 'valueOfOnlyObject returns valueOf');
- st['throws'](function () { return ES.ToPrimitive(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws a TypeError');
- st['throws'](function () { return ES.ToPrimitive(v.uncoercibleFnObject); }, TypeError, 'uncoercibleFnObject throws a TypeError');
- st.end();
- });
-
- t.test('dates', function (st) {
- var invalid = new Date(NaN);
- st.equal(ES.ToPrimitive(invalid), Date.prototype.toString.call(invalid), 'invalid Date coerces to Date#toString');
- var now = new Date();
- st.equal(ES.ToPrimitive(now), Date.prototype.toString.call(now), 'Date coerces to Date#toString');
- st.end();
- });
-
- t.end();
- });
-
- test('ToBoolean', function (t) {
- t.equal(false, ES.ToBoolean(undefined), 'undefined coerces to false');
- t.equal(false, ES.ToBoolean(null), 'null coerces to false');
- t.equal(false, ES.ToBoolean(false), 'false returns false');
- t.equal(true, ES.ToBoolean(true), 'true returns true');
-
- t.test('numbers', function (st) {
- forEach(v.zeroes.concat(NaN), function (falsyNumber) {
- st.equal(false, ES.ToBoolean(falsyNumber), 'falsy number ' + falsyNumber + ' coerces to false');
- });
- forEach(v.infinities.concat([42, 1]), function (truthyNumber) {
- st.equal(true, ES.ToBoolean(truthyNumber), 'truthy number ' + truthyNumber + ' coerces to true');
- });
-
- st.end();
- });
-
- t.equal(false, ES.ToBoolean(''), 'empty string coerces to false');
- t.equal(true, ES.ToBoolean('foo'), 'nonempty string coerces to true');
-
- t.test('objects', function (st) {
- forEach(v.objects, function (obj) {
- st.equal(true, ES.ToBoolean(obj), 'object coerces to true');
- });
- st.equal(true, ES.ToBoolean(v.uncoercibleObject), 'uncoercibleObject coerces to true');
-
- st.end();
- });
-
- t.end();
- });
-
- test('ToNumber', function (t) {
- t.equal(NaN, ES.ToNumber(undefined), 'undefined coerces to NaN');
- t.equal(ES.ToNumber(null), 0, 'null coerces to +0');
- t.equal(ES.ToNumber(false), 0, 'false coerces to +0');
- t.equal(1, ES.ToNumber(true), 'true coerces to 1');
-
- t.test('numbers', function (st) {
- st.equal(NaN, ES.ToNumber(NaN), 'NaN returns itself');
- forEach(v.zeroes.concat(v.infinities, 42), function (num) {
- st.equal(num, ES.ToNumber(num), num + ' returns itself');
- });
- forEach(['foo', '0', '4a', '2.0', 'Infinity', '-Infinity'], function (numString) {
- st.equal(+numString, ES.ToNumber(numString), '"' + numString + '" coerces to ' + Number(numString));
- });
- st.end();
- });
-
- t.test('objects', function (st) {
- forEach(v.objects, function (object) {
- st.equal(ES.ToNumber(object), ES.ToNumber(ES.ToPrimitive(object)), 'object ' + object + ' coerces to same as ToPrimitive of object does');
- });
- st['throws'](function () { return ES.ToNumber(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
- st.end();
- });
-
- t.test('binary literals', function (st) {
- st.equal(ES.ToNumber('0b10'), NaN, '0b10 is NaN');
- st.equal(ES.ToNumber({ toString: function () { return '0b11'; } }), NaN, 'Object that toStrings to 0b11 is NaN');
-
- st.equal(ES.ToNumber('0b12'), NaN, '0b12 is NaN');
- st.equal(ES.ToNumber({ toString: function () { return '0b112'; } }), NaN, 'Object that toStrings to 0b112 is NaN');
- st.end();
- });
-
- t.test('octal literals', function (st) {
- st.equal(ES.ToNumber('0o10'), NaN, '0o10 is NaN');
- st.equal(ES.ToNumber({ toString: function () { return '0o11'; } }), NaN, 'Object that toStrings to 0o11 is NaN');
-
- st.equal(ES.ToNumber('0o18'), NaN, '0o18 is NaN');
- st.equal(ES.ToNumber({ toString: function () { return '0o118'; } }), NaN, 'Object that toStrings to 0o118 is NaN');
- st.end();
- });
-
- t.test('signed hex numbers', function (st) {
- st.equal(ES.ToNumber('-0xF'), NaN, '-0xF is NaN');
- st.equal(ES.ToNumber(' -0xF '), NaN, 'space-padded -0xF is NaN');
- st.equal(ES.ToNumber('+0xF'), NaN, '+0xF is NaN');
- st.equal(ES.ToNumber(' +0xF '), NaN, 'space-padded +0xF is NaN');
-
- st.end();
- });
-
- // TODO: check if this applies to ES5
- t.test('trimming of whitespace and non-whitespace characters', function (st) {
- var whitespace = ' \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u0085';
- st.equal(ES.ToNumber(whitespace + 0 + whitespace), 0, 'whitespace is trimmed');
-
- // Zero-width space (zws), next line character (nel), and non-character (bom) are not whitespace.
- var nonWhitespaces = {
- '\\u200b': '\u200b',
- '\\ufffe': '\ufffe'
- };
-
- forEach(nonWhitespaces, function (desc, nonWS) {
- st.equal(ES.ToNumber(nonWS + 0 + nonWS), NaN, 'non-whitespace ' + desc + ' not trimmed');
- });
-
- st.end();
- });
-
- t.test('dates', function (st) {
- var invalid = new Date(NaN);
- st.equal(ES.ToNumber(invalid), NaN, 'invalid Date coerces to NaN');
- var now = +new Date();
- st.equal(ES.ToNumber(new Date(now)), now, 'Date coerces to timestamp');
- st.end();
- });
-
- t.end();
- });
-
- test('ToInteger', function (t) {
- forEach([NaN], function (num) {
- t.equal(0, ES.ToInteger(num), debug(num) + ' returns +0');
- });
- forEach(v.zeroes.concat(v.infinities, 42), function (num) {
- t.equal(num, ES.ToInteger(num), debug(num) + ' returns itself');
- t.equal(-num, ES.ToInteger(-num), '-' + debug(num) + ' returns itself');
- });
- t.equal(3, ES.ToInteger(Math.PI), 'pi returns 3');
- t['throws'](function () { return ES.ToInteger(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
- t.end();
- });
-
- test('ToInt32', function (t) {
- t.equal(ES.ToInt32(NaN), 0, 'NaN coerces to +0');
- forEach(v.zeroes.concat(v.infinities), function (num) {
- t.equal(ES.ToInt32(num), 0, num + ' returns +0');
- t.equal(ES.ToInt32(-num), 0, '-' + num + ' returns +0');
- });
- t['throws'](function () { return ES.ToInt32(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
- t.equal(ES.ToInt32(0x100000000), 0, '2^32 returns +0');
- t.equal(ES.ToInt32(0x100000000 - 1), -1, '2^32 - 1 returns -1');
- t.equal(ES.ToInt32(0x80000000), -0x80000000, '2^31 returns -2^31');
- t.equal(ES.ToInt32(0x80000000 - 1), 0x80000000 - 1, '2^31 - 1 returns 2^31 - 1');
- forEach([0, Infinity, NaN, 0x100000000, 0x80000000, 0x10000, 0x42], function (num) {
- t.equal(ES.ToInt32(num), ES.ToInt32(ES.ToUint32(num)), 'ToInt32(x) === ToInt32(ToUint32(x)) for 0x' + num.toString(16));
- t.equal(ES.ToInt32(-num), ES.ToInt32(ES.ToUint32(-num)), 'ToInt32(x) === ToInt32(ToUint32(x)) for -0x' + num.toString(16));
- });
- t.end();
- });
-
- test('ToUint32', function (t) {
- t.equal(0, ES.ToUint32(NaN), 'NaN coerces to +0');
- forEach([0, Infinity], function (num) {
- t.equal(0, ES.ToUint32(num), num + ' returns +0');
- t.equal(0, ES.ToUint32(-num), '-' + num + ' returns +0');
- });
- t['throws'](function () { return ES.ToUint32(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
- t.equal(ES.ToUint32(0x100000000), 0, '2^32 returns +0');
- t.equal(ES.ToUint32(0x100000000 - 1), 0x100000000 - 1, '2^32 - 1 returns 2^32 - 1');
- t.equal(ES.ToUint32(0x80000000), 0x80000000, '2^31 returns 2^31');
- t.equal(ES.ToUint32(0x80000000 - 1), 0x80000000 - 1, '2^31 - 1 returns 2^31 - 1');
- forEach([0, Infinity, NaN, 0x100000000, 0x80000000, 0x10000, 0x42], function (num) {
- t.equal(ES.ToUint32(num), ES.ToUint32(ES.ToInt32(num)), 'ToUint32(x) === ToUint32(ToInt32(x)) for 0x' + num.toString(16));
- t.equal(ES.ToUint32(-num), ES.ToUint32(ES.ToInt32(-num)), 'ToUint32(x) === ToUint32(ToInt32(x)) for -0x' + num.toString(16));
- });
- t.end();
- });
-
- test('ToUint16', function (t) {
- t.equal(0, ES.ToUint16(NaN), 'NaN coerces to +0');
- forEach([0, Infinity], function (num) {
- t.equal(0, ES.ToUint16(num), num + ' returns +0');
- t.equal(0, ES.ToUint16(-num), '-' + num + ' returns +0');
- });
- t['throws'](function () { return ES.ToUint16(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
- t.equal(ES.ToUint16(0x100000000), 0, '2^32 returns +0');
- t.equal(ES.ToUint16(0x100000000 - 1), 0x10000 - 1, '2^32 - 1 returns 2^16 - 1');
- t.equal(ES.ToUint16(0x80000000), 0, '2^31 returns +0');
- t.equal(ES.ToUint16(0x80000000 - 1), 0x10000 - 1, '2^31 - 1 returns 2^16 - 1');
- t.equal(ES.ToUint16(0x10000), 0, '2^16 returns +0');
- t.equal(ES.ToUint16(0x10000 - 1), 0x10000 - 1, '2^16 - 1 returns 2^16 - 1');
- t.end();
- });
-
- test('ToString', function (t) {
- forEach(v.objects.concat(v.nonSymbolPrimitives), function (item) {
- t.equal(ES.ToString(item), String(item), 'ES.ToString(' + debug(item) + ') ToStrings to String(' + debug(item) + ')');
- });
-
- t['throws'](function () { return ES.ToString(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
-
- t.end();
- });
-
- test('ToObject', function (t) {
- t['throws'](function () { return ES.ToObject(undefined); }, TypeError, 'undefined throws');
- t['throws'](function () { return ES.ToObject(null); }, TypeError, 'null throws');
- forEach(v.numbers, function (number) {
- var obj = ES.ToObject(number);
- t.equal(typeof obj, 'object', 'number ' + number + ' coerces to object');
- t.equal(true, obj instanceof Number, 'object of ' + number + ' is Number object');
- t.equal(obj.valueOf(), number, 'object of ' + number + ' coerces to ' + number);
- });
- t.end();
- });
-
- test('CheckObjectCoercible', function (t) {
- t['throws'](function () { return ES.CheckObjectCoercible(undefined); }, TypeError, 'undefined throws');
- t['throws'](function () { return ES.CheckObjectCoercible(null); }, TypeError, 'null throws');
- var checkCoercible = function (value) {
- t.doesNotThrow(function () { return ES.CheckObjectCoercible(value); }, debug(value) + ' does not throw');
- };
- forEach(v.objects.concat(v.nonNullPrimitives), checkCoercible);
- t.end();
- });
-
- test('IsCallable', function (t) {
- t.equal(true, ES.IsCallable(function () {}), 'function is callable');
- var nonCallables = [/a/g, {}, Object.prototype, NaN].concat(v.nonFunctions);
- forEach(nonCallables, function (nonCallable) {
- t.equal(false, ES.IsCallable(nonCallable), debug(nonCallable) + ' is not callable');
- });
- t.end();
- });
-
- test('SameValue', function (t) {
- t.equal(true, ES.SameValue(NaN, NaN), 'NaN is SameValue as NaN');
- t.equal(false, ES.SameValue(0, -0), '+0 is not SameValue as -0');
- forEach(v.objects.concat(v.primitives), function (val) {
- t.equal(val === val, ES.SameValue(val, val), debug(val) + ' is SameValue to itself');
- });
- t.end();
- });
-
- test('Type', function (t) {
- t.equal(ES.Type(), 'Undefined', 'Type() is Undefined');
- t.equal(ES.Type(undefined), 'Undefined', 'Type(undefined) is Undefined');
- t.equal(ES.Type(null), 'Null', 'Type(null) is Null');
- t.equal(ES.Type(true), 'Boolean', 'Type(true) is Boolean');
- t.equal(ES.Type(false), 'Boolean', 'Type(false) is Boolean');
- t.equal(ES.Type(0), 'Number', 'Type(0) is Number');
- t.equal(ES.Type(NaN), 'Number', 'Type(NaN) is Number');
- t.equal(ES.Type('abc'), 'String', 'Type("abc") is String');
- t.equal(ES.Type(function () {}), 'Object', 'Type(function () {}) is Object');
- t.equal(ES.Type({}), 'Object', 'Type({}) is Object');
-
- t.end();
- });
-
- assertRecordTests(ES, test);
-
- test('IsAccessorDescriptor', function (t) {
- forEach(v.nonUndefinedPrimitives, function (primitive) {
- t['throws'](
- function () { ES.IsAccessorDescriptor(primitive); },
- TypeError,
- debug(primitive) + ' is not a Property Descriptor'
- );
- });
-
- t.equal(ES.IsAccessorDescriptor(), false, 'no value is not an Accessor Descriptor');
- t.equal(ES.IsAccessorDescriptor(undefined), false, 'undefined value is not an Accessor Descriptor');
-
- t.equal(ES.IsAccessorDescriptor(v.accessorDescriptor()), true, 'accessor descriptor is an Accessor Descriptor');
- t.equal(ES.IsAccessorDescriptor(v.mutatorDescriptor()), true, 'mutator descriptor is an Accessor Descriptor');
- t.equal(ES.IsAccessorDescriptor(v.dataDescriptor()), false, 'data descriptor is not an Accessor Descriptor');
- t.equal(ES.IsAccessorDescriptor(v.genericDescriptor()), false, 'generic descriptor is not an Accessor Descriptor');
-
- t.end();
- });
-
- test('IsDataDescriptor', function (t) {
- forEach(v.nonUndefinedPrimitives, function (primitive) {
- t['throws'](
- function () { ES.IsDataDescriptor(primitive); },
- TypeError,
- debug(primitive) + ' is not a Property Descriptor'
- );
- });
-
- t.equal(ES.IsDataDescriptor(), false, 'no value is not a Data Descriptor');
- t.equal(ES.IsDataDescriptor(undefined), false, 'undefined value is not a Data Descriptor');
-
- t.equal(ES.IsDataDescriptor(v.accessorDescriptor()), false, 'accessor descriptor is not a Data Descriptor');
- t.equal(ES.IsDataDescriptor(v.mutatorDescriptor()), false, 'mutator descriptor is not a Data Descriptor');
- t.equal(ES.IsDataDescriptor(v.dataDescriptor()), true, 'data descriptor is a Data Descriptor');
- t.equal(ES.IsDataDescriptor(v.genericDescriptor()), false, 'generic descriptor is not a Data Descriptor');
-
- t.end();
- });
-
- test('IsGenericDescriptor', function (t) {
- forEach(v.nonUndefinedPrimitives, function (primitive) {
- t['throws'](
- function () { ES.IsGenericDescriptor(primitive); },
- TypeError,
- debug(primitive) + ' is not a Property Descriptor'
- );
- });
-
- t.equal(ES.IsGenericDescriptor(), false, 'no value is not a Data Descriptor');
- t.equal(ES.IsGenericDescriptor(undefined), false, 'undefined value is not a Data Descriptor');
-
- t.equal(ES.IsGenericDescriptor(v.accessorDescriptor()), false, 'accessor descriptor is not a generic Descriptor');
- t.equal(ES.IsGenericDescriptor(v.mutatorDescriptor()), false, 'mutator descriptor is not a generic Descriptor');
- t.equal(ES.IsGenericDescriptor(v.dataDescriptor()), false, 'data descriptor is not a generic Descriptor');
-
- t.equal(ES.IsGenericDescriptor(v.genericDescriptor()), true, 'generic descriptor is a generic Descriptor');
-
- t.end();
- });
-
- test('FromPropertyDescriptor', function (t) {
- t.equal(ES.FromPropertyDescriptor(), undefined, 'no value begets undefined');
- t.equal(ES.FromPropertyDescriptor(undefined), undefined, 'undefined value begets undefined');
-
- forEach(v.nonNullPrimitives.concat(null), function (primitive) {
- t['throws'](
- function () { ES.FromPropertyDescriptor(primitive); },
- TypeError,
- debug(primitive) + ' is not a Property Descriptor'
- );
- });
-
- var accessor = v.accessorDescriptor();
- t.deepEqual(ES.FromPropertyDescriptor(accessor), {
- get: accessor['[[Get]]'],
- set: accessor['[[Set]]'],
- enumerable: !!accessor['[[Enumerable]]'],
- configurable: !!accessor['[[Configurable]]']
- });
-
- var mutator = v.mutatorDescriptor();
- t.deepEqual(ES.FromPropertyDescriptor(mutator), {
- get: mutator['[[Get]]'],
- set: mutator['[[Set]]'],
- enumerable: !!mutator['[[Enumerable]]'],
- configurable: !!mutator['[[Configurable]]']
- });
- var data = v.dataDescriptor();
- t.deepEqual(ES.FromPropertyDescriptor(data), {
- value: data['[[Value]]'],
- writable: data['[[Writable]]'],
- enumerable: !!data['[[Enumerable]]'],
- configurable: !!data['[[Configurable]]']
- });
-
- t['throws'](
- function () { ES.FromPropertyDescriptor(v.genericDescriptor()); },
- TypeError,
- 'a complete Property Descriptor is required'
- );
-
- t.end();
- });
-
- test('ToPropertyDescriptor', function (t) {
- forEach(v.nonUndefinedPrimitives, function (primitive) {
- t['throws'](
- function () { ES.ToPropertyDescriptor(primitive); },
- TypeError,
- debug(primitive) + ' is not an Object'
- );
- });
-
- var accessor = v.accessorDescriptor();
- t.deepEqual(ES.ToPropertyDescriptor({
- get: accessor['[[Get]]'],
- enumerable: !!accessor['[[Enumerable]]'],
- configurable: !!accessor['[[Configurable]]']
- }), accessor);
-
- var mutator = v.mutatorDescriptor();
- t.deepEqual(ES.ToPropertyDescriptor({
- set: mutator['[[Set]]'],
- enumerable: !!mutator['[[Enumerable]]'],
- configurable: !!mutator['[[Configurable]]']
- }), mutator);
-
- var data = v.descriptors.nonConfigurable(v.dataDescriptor());
- t.deepEqual(ES.ToPropertyDescriptor({
- value: data['[[Value]]'],
- writable: data['[[Writable]]'],
- configurable: !!data['[[Configurable]]']
- }), data);
-
- var both = v.bothDescriptor();
- t['throws'](
- function () {
- ES.ToPropertyDescriptor({ get: both['[[Get]]'], value: both['[[Value]]'] });
- },
- TypeError,
- 'data and accessor descriptors are mutually exclusive'
- );
-
- t['throws'](
- function () { ES.ToPropertyDescriptor({ get: 'not callable' }); },
- TypeError,
- '"get" must be undefined or callable'
- );
-
- t['throws'](
- function () { ES.ToPropertyDescriptor({ set: 'not callable' }); },
- TypeError,
- '"set" must be undefined or callable'
- );
-
- forEach(v.nonFunctions, function (nonFunction) {
- if (typeof nonFunction !== 'undefined') {
- t['throws'](
- function () { ES.ToPropertyDescriptor({ get: nonFunction }); },
- TypeError,
- '`.get` has ' + debug(nonFunction) + ', which is not a Function'
- );
- t['throws'](
- function () { ES.ToPropertyDescriptor({ set: nonFunction }); },
- TypeError,
- '`.set` has ' + debug(nonFunction) + ', which is not a Function'
- );
- }
- });
-
- forEach(['get', 'set'], function (accessorName) {
- forEach(['value', 'writable'], function (dataName) {
- var o = {};
- o[accessorName] = undefined;
- o[dataName] = undefined;
-
- t['throws'](
- function () { ES.ToPropertyDescriptor(o); },
- TypeError,
- accessorName + ' + ' + dataName + ' is invalid'
- );
- });
- });
-
- t.end();
- });
-
- test('Abstract Equality Comparison', function (t) {
- t.test('same types use ===', function (st) {
- forEach(v.primitives.concat(v.objects), function (value) {
- st.equal(ES['Abstract Equality Comparison'](value, value), value === value, debug(value) + ' is abstractly equal to itself');
- });
- st.end();
- });
-
- t.test('different types coerce', function (st) {
- var pairs = [
- [null, undefined],
- [3, '3'],
- [true, '3'],
- [true, 3],
- [false, 0],
- [false, '0'],
- [3, [3]],
- ['3', [3]],
- [true, [1]],
- [false, [0]],
- [String(v.coercibleObject), v.coercibleObject],
- [Number(String(v.coercibleObject)), v.coercibleObject],
- [Number(v.coercibleObject), v.coercibleObject],
- [String(Number(v.coercibleObject)), v.coercibleObject]
- ];
- forEach(pairs, function (pair) {
- var a = pair[0];
- var b = pair[1];
- // eslint-disable-next-line eqeqeq
- st.equal(ES['Abstract Equality Comparison'](a, b), a == b, debug(a) + ' == ' + debug(b));
- // eslint-disable-next-line eqeqeq
- st.equal(ES['Abstract Equality Comparison'](b, a), b == a, debug(b) + ' == ' + debug(a));
- });
- st.end();
- });
-
- t.end();
- });
-
- test('Strict Equality Comparison', function (t) {
- t.test('same types use ===', function (st) {
- forEach(v.primitives.concat(v.objects), function (value) {
- st.equal(ES['Strict Equality Comparison'](value, value), value === value, debug(value) + ' is strictly equal to itself');
- });
- st.end();
- });
-
- t.test('different types are not ===', function (st) {
- var pairs = [
- [null, undefined],
- [3, '3'],
- [true, '3'],
- [true, 3],
- [false, 0],
- [false, '0'],
- [3, [3]],
- ['3', [3]],
- [true, [1]],
- [false, [0]],
- [String(v.coercibleObject), v.coercibleObject],
- [Number(String(v.coercibleObject)), v.coercibleObject],
- [Number(v.coercibleObject), v.coercibleObject],
- [String(Number(v.coercibleObject)), v.coercibleObject]
- ];
- forEach(pairs, function (pair) {
- var a = pair[0];
- var b = pair[1];
- st.equal(ES['Strict Equality Comparison'](a, b), a === b, debug(a) + ' === ' + debug(b));
- st.equal(ES['Strict Equality Comparison'](b, a), b === a, debug(b) + ' === ' + debug(a));
- });
- st.end();
- });
-
- t.end();
- });
-
- test('Abstract Relational Comparison', function (t) {
- t.test('at least one operand is NaN', function (st) {
- st.equal(ES['Abstract Relational Comparison'](NaN, {}, true), undefined, 'LeftFirst: first is NaN, returns undefined');
- st.equal(ES['Abstract Relational Comparison']({}, NaN, true), undefined, 'LeftFirst: second is NaN, returns undefined');
- st.equal(ES['Abstract Relational Comparison'](NaN, {}, false), undefined, '!LeftFirst: first is NaN, returns undefined');
- st.equal(ES['Abstract Relational Comparison']({}, NaN, false), undefined, '!LeftFirst: second is NaN, returns undefined');
- st.end();
- });
-
- forEach(v.nonBooleans, function (nonBoolean) {
- t['throws'](
- function () { ES['Abstract Relational Comparison'](3, 4, nonBoolean); },
- TypeError,
- debug(nonBoolean) + ' is not a Boolean'
- );
- });
-
- forEach(v.zeroes, function (zero) {
- t.equal(ES['Abstract Relational Comparison'](zero, 1, true), true, 'LeftFirst: ' + debug(zero) + ' is less than 1');
- t.equal(ES['Abstract Relational Comparison'](zero, 1, false), true, '!LeftFirst: ' + debug(zero) + ' is less than 1');
- t.equal(ES['Abstract Relational Comparison'](1, zero, true), false, 'LeftFirst: 1 is not less than ' + debug(zero));
- t.equal(ES['Abstract Relational Comparison'](1, zero, false), false, '!LeftFirst: 1 is not less than ' + debug(zero));
-
- t.equal(ES['Abstract Relational Comparison'](zero, zero, true), false, 'LeftFirst: ' + debug(zero) + ' is not less than ' + debug(zero));
- t.equal(ES['Abstract Relational Comparison'](zero, zero, false), false, '!LeftFirst: ' + debug(zero) + ' is not less than ' + debug(zero));
- });
-
- t.equal(ES['Abstract Relational Comparison'](Infinity, -Infinity, true), false, 'LeftFirst: ∞ is not less than -∞');
- t.equal(ES['Abstract Relational Comparison'](Infinity, -Infinity, false), false, '!LeftFirst: ∞ is not less than -∞');
- t.equal(ES['Abstract Relational Comparison'](-Infinity, Infinity, true), true, 'LeftFirst: -∞ is less than ∞');
- t.equal(ES['Abstract Relational Comparison'](-Infinity, Infinity, false), true, '!LeftFirst: -∞ is less than ∞');
- t.equal(ES['Abstract Relational Comparison'](-Infinity, 0, true), true, 'LeftFirst: -∞ is less than +0');
- t.equal(ES['Abstract Relational Comparison'](-Infinity, 0, false), true, '!LeftFirst: -∞ is less than +0');
- t.equal(ES['Abstract Relational Comparison'](0, -Infinity, true), false, 'LeftFirst: +0 is not less than -∞');
- t.equal(ES['Abstract Relational Comparison'](0, -Infinity, false), false, '!LeftFirst: +0 is not less than -∞');
-
- t.equal(ES['Abstract Relational Comparison'](3, 4, true), true, 'LeftFirst: 3 is less than 4');
- t.equal(ES['Abstract Relational Comparison'](4, 3, true), false, 'LeftFirst: 3 is not less than 4');
- t.equal(ES['Abstract Relational Comparison'](3, 4, false), true, '!LeftFirst: 3 is less than 4');
- t.equal(ES['Abstract Relational Comparison'](4, 3, false), false, '!LeftFirst: 3 is not less than 4');
-
- t.equal(ES['Abstract Relational Comparison']('3', '4', true), true, 'LeftFirst: "3" is less than "4"');
- t.equal(ES['Abstract Relational Comparison']('4', '3', true), false, 'LeftFirst: "3" is not less than "4"');
- t.equal(ES['Abstract Relational Comparison']('3', '4', false), true, '!LeftFirst: "3" is less than "4"');
- t.equal(ES['Abstract Relational Comparison']('4', '3', false), false, '!LeftFirst: "3" is not less than "4"');
-
- t.equal(ES['Abstract Relational Comparison']('a', 'abc', true), true, 'LeftFirst: "a" is less than "abc"');
- t.equal(ES['Abstract Relational Comparison']('abc', 'a', true), false, 'LeftFirst: "abc" is not less than "a"');
- t.equal(ES['Abstract Relational Comparison']('a', 'abc', false), true, '!LeftFirst: "a" is less than "abc"');
- t.equal(ES['Abstract Relational Comparison']('abc', 'a', false), false, '!LeftFirst: "abc" is not less than "a"');
-
- t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, 42, true), true, 'LeftFirst: coercible object is less than 42');
- t.equal(ES['Abstract Relational Comparison'](42, v.coercibleObject, true), false, 'LeftFirst: 42 is not less than coercible object');
- t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, 42, false), true, '!LeftFirst: coercible object is less than 42');
- t.equal(ES['Abstract Relational Comparison'](42, v.coercibleObject, false), false, '!LeftFirst: 42 is not less than coercible object');
-
- t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, '3', true), false, 'LeftFirst: coercible object is not less than "3"');
- t.equal(ES['Abstract Relational Comparison']('3', v.coercibleObject, true), false, 'LeftFirst: "3" is not less than coercible object');
- t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, '3', false), false, '!LeftFirst: coercible object is not less than "3"');
- t.equal(ES['Abstract Relational Comparison']('3', v.coercibleObject, false), false, '!LeftFirst: "3" is not less than coercible object');
-
- t.end();
- });
-
- test('SecFromTime', function (t) {
- var now = new Date();
- t.equal(ES.SecFromTime(now.getTime()), now.getUTCSeconds(), 'second from Date timestamp matches getUTCSeconds');
- t.end();
- });
-
- test('MinFromTime', function (t) {
- var now = new Date();
- t.equal(ES.MinFromTime(now.getTime()), now.getUTCMinutes(), 'minute from Date timestamp matches getUTCMinutes');
- t.end();
- });
-
- test('HourFromTime', function (t) {
- var now = new Date();
- t.equal(ES.HourFromTime(now.getTime()), now.getUTCHours(), 'hour from Date timestamp matches getUTCHours');
- t.end();
- });
-
- test('msFromTime', function (t) {
- var now = new Date();
- t.equal(ES.msFromTime(now.getTime()), now.getUTCMilliseconds(), 'ms from Date timestamp matches getUTCMilliseconds');
- t.end();
- });
-
- var msPerSecond = 1e3;
- var msPerMinute = 60 * msPerSecond;
- var msPerHour = 60 * msPerMinute;
- var msPerDay = 24 * msPerHour;
-
- test('Day', function (t) {
- var time = Date.UTC(2019, 8, 10, 2, 3, 4, 5);
- var add = 2.5;
- var later = new Date(time + (add * msPerDay));
-
- t.equal(ES.Day(later.getTime()), ES.Day(time) + Math.floor(add), 'adding 2.5 days worth of ms, gives a Day delta of 2');
- t.end();
- });
-
- test('DayFromYear', function (t) {
- t.equal(ES.DayFromYear(2021) - ES.DayFromYear(2020), 366, '2021 is a leap year, has 366 days');
- t.equal(ES.DayFromYear(2020) - ES.DayFromYear(2019), 365, '2020 is not a leap year, has 365 days');
- t.equal(ES.DayFromYear(2019) - ES.DayFromYear(2018), 365, '2019 is not a leap year, has 365 days');
- t.equal(ES.DayFromYear(2018) - ES.DayFromYear(2017), 365, '2018 is not a leap year, has 365 days');
- t.equal(ES.DayFromYear(2017) - ES.DayFromYear(2016), 366, '2017 is a leap year, has 366 days');
-
- t.end();
- });
-
- test('TimeWithinDay', function (t) {
- var time = Date.UTC(2019, 8, 10, 2, 3, 4, 5);
- var add = 2.5;
- var later = new Date(time + (add * msPerDay));
-
- t.equal(ES.TimeWithinDay(later.getTime()), ES.TimeWithinDay(time) + (0.5 * msPerDay), 'adding 2.5 days worth of ms, gives a TimeWithinDay delta of +0.5');
- t.end();
- });
-
- test('TimeFromYear', function (t) {
- for (var i = 1900; i < 2100; i += 1) {
- t.equal(ES.TimeFromYear(i), Date.UTC(i, 0, 1), 'TimeFromYear matches a Date object’s year: ' + i);
- }
- t.end();
- });
-
- test('YearFromTime', function (t) {
- for (var i = 1900; i < 2100; i += 1) {
- t.equal(ES.YearFromTime(Date.UTC(i, 0, 1)), i, 'YearFromTime matches a Date object’s year on 1/1: ' + i);
- t.equal(ES.YearFromTime(Date.UTC(i, 10, 1)), i, 'YearFromTime matches a Date object’s year on 10/1: ' + i);
- }
- t.end();
- });
-
- test('WeekDay', function (t) {
- var now = new Date();
- var today = now.getUTCDay();
- for (var i = 0; i < 7; i += 1) {
- var weekDay = ES.WeekDay(now.getTime() + (i * msPerDay));
- t.equal(weekDay, (today + i) % 7, i + ' days after today (' + today + '), WeekDay is ' + weekDay);
- }
- t.end();
- });
-
- test('DaysInYear', function (t) {
- t.equal(ES.DaysInYear(2021), 365, '2021 is not a leap year');
- t.equal(ES.DaysInYear(2020), 366, '2020 is a leap year');
- t.equal(ES.DaysInYear(2019), 365, '2019 is not a leap year');
- t.equal(ES.DaysInYear(2018), 365, '2018 is not a leap year');
- t.equal(ES.DaysInYear(2017), 365, '2017 is not a leap year');
- t.equal(ES.DaysInYear(2016), 366, '2016 is a leap year');
- t.equal(ES.DaysInYear(2000), 366, '2000 is a leap year');
- t.equal(ES.DaysInYear(1900), 365, '1900 is not a leap year');
-
- t.end();
- });
-
- test('InLeapYear', function (t) {
- t.equal(ES.InLeapYear(Date.UTC(2021, 0, 1)), 0, '2021 is not a leap year');
- t.equal(ES.InLeapYear(Date.UTC(2020, 0, 1)), 1, '2020 is a leap year');
- t.equal(ES.InLeapYear(Date.UTC(2019, 0, 1)), 0, '2019 is not a leap year');
- t.equal(ES.InLeapYear(Date.UTC(2018, 0, 1)), 0, '2018 is not a leap year');
- t.equal(ES.InLeapYear(Date.UTC(2017, 0, 1)), 0, '2017 is not a leap year');
- t.equal(ES.InLeapYear(Date.UTC(2016, 0, 1)), 1, '2016 is a leap year');
-
- t.end();
- });
-
- test('DayWithinYear', function (t) {
- t.equal(ES.DayWithinYear(Date.UTC(2019, 0, 1)), 0, '1/1 is the 1st day');
- t.equal(ES.DayWithinYear(Date.UTC(2019, 11, 31)), 364, '12/31 is the 365th day in a non leap year');
- t.equal(ES.DayWithinYear(Date.UTC(2016, 11, 31)), 365, '12/31 is the 366th day in a leap year');
-
- t.end();
- });
-
- test('MonthFromTime', function (t) {
- t.equal(ES.MonthFromTime(Date.UTC(2019, 0, 1)), 0, 'non-leap: 1/1 gives January');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 0, 31)), 0, 'non-leap: 1/31 gives January');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 1)), 1, 'non-leap: 2/1 gives February');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 28)), 1, 'non-leap: 2/28 gives February');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 29)), 2, 'non-leap: 2/29 gives March');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 2, 1)), 2, 'non-leap: 3/1 gives March');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 2, 31)), 2, 'non-leap: 3/31 gives March');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 3, 1)), 3, 'non-leap: 4/1 gives April');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 3, 30)), 3, 'non-leap: 4/30 gives April');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 4, 1)), 4, 'non-leap: 5/1 gives May');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 4, 31)), 4, 'non-leap: 5/31 gives May');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 5, 1)), 5, 'non-leap: 6/1 gives June');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 5, 30)), 5, 'non-leap: 6/30 gives June');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 6, 1)), 6, 'non-leap: 7/1 gives July');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 6, 31)), 6, 'non-leap: 7/31 gives July');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 7, 1)), 7, 'non-leap: 8/1 gives August');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 7, 30)), 7, 'non-leap: 8/30 gives August');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 8, 1)), 8, 'non-leap: 9/1 gives September');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 8, 30)), 8, 'non-leap: 9/30 gives September');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 9, 1)), 9, 'non-leap: 10/1 gives October');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 9, 31)), 9, 'non-leap: 10/31 gives October');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 10, 1)), 10, 'non-leap: 11/1 gives November');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 10, 30)), 10, 'non-leap: 11/30 gives November');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 11, 1)), 11, 'non-leap: 12/1 gives December');
- t.equal(ES.MonthFromTime(Date.UTC(2019, 11, 31)), 11, 'non-leap: 12/31 gives December');
-
- t.equal(ES.MonthFromTime(Date.UTC(2016, 0, 1)), 0, 'leap: 1/1 gives January');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 0, 31)), 0, 'leap: 1/31 gives January');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 1)), 1, 'leap: 2/1 gives February');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 28)), 1, 'leap: 2/28 gives February');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 29)), 1, 'leap: 2/29 gives February');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 2, 1)), 2, 'leap: 3/1 gives March');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 2, 31)), 2, 'leap: 3/31 gives March');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 3, 1)), 3, 'leap: 4/1 gives April');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 3, 30)), 3, 'leap: 4/30 gives April');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 4, 1)), 4, 'leap: 5/1 gives May');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 4, 31)), 4, 'leap: 5/31 gives May');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 5, 1)), 5, 'leap: 6/1 gives June');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 5, 30)), 5, 'leap: 6/30 gives June');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 6, 1)), 6, 'leap: 7/1 gives July');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 6, 31)), 6, 'leap: 7/31 gives July');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 7, 1)), 7, 'leap: 8/1 gives August');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 7, 30)), 7, 'leap: 8/30 gives August');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 8, 1)), 8, 'leap: 9/1 gives September');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 8, 30)), 8, 'leap: 9/30 gives September');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 9, 1)), 9, 'leap: 10/1 gives October');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 9, 31)), 9, 'leap: 10/31 gives October');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 10, 1)), 10, 'leap: 11/1 gives November');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 10, 30)), 10, 'leap: 11/30 gives November');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 11, 1)), 11, 'leap: 12/1 gives December');
- t.equal(ES.MonthFromTime(Date.UTC(2016, 11, 31)), 11, 'leap: 12/31 gives December');
- t.end();
- });
-
- test('DateFromTime', function (t) {
- var i;
- for (i = 1; i <= 28; i += 1) {
- t.equal(ES.DateFromTime(Date.UTC(2019, 1, i)), i, '2019.02.' + i + ' is date ' + i);
- }
- for (i = 1; i <= 29; i += 1) {
- t.equal(ES.DateFromTime(Date.UTC(2016, 1, i)), i, '2016.02.' + i + ' is date ' + i);
- }
- for (i = 1; i <= 30; i += 1) {
- t.equal(ES.DateFromTime(Date.UTC(2019, 2, i)), i, '2019.03.' + i + ' is date ' + i);
- t.equal(ES.DateFromTime(Date.UTC(2019, 3, i)), i, '2019.04.' + i + ' is date ' + i);
- t.equal(ES.DateFromTime(Date.UTC(2019, 5, i)), i, '2019.06.' + i + ' is date ' + i);
- t.equal(ES.DateFromTime(Date.UTC(2019, 7, i)), i, '2019.08.' + i + ' is date ' + i);
- t.equal(ES.DateFromTime(Date.UTC(2019, 8, i)), i, '2019.09.' + i + ' is date ' + i);
- t.equal(ES.DateFromTime(Date.UTC(2019, 10, i)), i, '2019.11.' + i + ' is date ' + i);
- }
- for (i = 1; i <= 31; i += 1) {
- t.equal(ES.DateFromTime(Date.UTC(2019, 0, i)), i, '2019.01.' + i + ' is date ' + i);
- t.equal(ES.DateFromTime(Date.UTC(2019, 4, i)), i, '2019.05.' + i + ' is date ' + i);
- t.equal(ES.DateFromTime(Date.UTC(2019, 6, i)), i, '2019.07.' + i + ' is date ' + i);
- t.equal(ES.DateFromTime(Date.UTC(2019, 9, i)), i, '2019.10.' + i + ' is date ' + i);
- t.equal(ES.DateFromTime(Date.UTC(2019, 11, i)), i, '2019.12.' + i + ' is date ' + i);
- }
- t.end();
- });
-
- test('MakeDay', function (t) {
- forEach([NaN, Infinity, -Infinity], function (nonFiniteNumber) {
- t.equal(ES.MakeDay(nonFiniteNumber, 0, 0), NaN, 'year: ' + debug(nonFiniteNumber) + ' is not finite');
- t.equal(ES.MakeDay(0, nonFiniteNumber, 0), NaN, 'month: ' + debug(nonFiniteNumber) + ' is not finite');
- t.equal(ES.MakeDay(0, 0, nonFiniteNumber), NaN, 'date: ' + debug(nonFiniteNumber) + ' is not finite');
- });
-
- var day2015 = 16687;
- t.equal(ES.MakeDay(2015, 8, 9), day2015, '2015.09.09 is day 16687');
- var day2016 = day2015 + 366; // 2016 is a leap year
- t.equal(ES.MakeDay(2016, 8, 9), day2016, '2015.09.09 is day 17053');
- var day2017 = day2016 + 365;
- t.equal(ES.MakeDay(2017, 8, 9), day2017, '2017.09.09 is day 17418');
- var day2018 = day2017 + 365;
- t.equal(ES.MakeDay(2018, 8, 9), day2018, '2018.09.09 is day 17783');
- var day2019 = day2018 + 365;
- t.equal(ES.MakeDay(2019, 8, 9), day2019, '2019.09.09 is day 18148');
-
- t.end();
- });
-
- test('MakeDate', function (t) {
- forEach(v.infinities.concat(NaN), function (nonFiniteNumber) {
- t.equal(ES.MakeDate(nonFiniteNumber, 0), NaN, debug(nonFiniteNumber) + ' is not a finite `day`');
- t.equal(ES.MakeDate(0, nonFiniteNumber), NaN, debug(nonFiniteNumber) + ' is not a finite `time`');
- });
- t.equal(ES.MakeDate(0, 0), 0, 'zero day and zero time is zero date');
- t.equal(ES.MakeDate(0, 123), 123, 'zero day and nonzero time is a date of the "time"');
- t.equal(ES.MakeDate(1, 0), msPerDay, 'day of 1 and zero time is a date of "ms per day"');
- t.equal(ES.MakeDate(3, 0), 3 * msPerDay, 'day of 3 and zero time is a date of thrice "ms per day"');
- t.equal(ES.MakeDate(1, 123), msPerDay + 123, 'day of 1 and nonzero time is a date of "ms per day" plus the "time"');
- t.equal(ES.MakeDate(3, 123), (3 * msPerDay) + 123, 'day of 3 and nonzero time is a date of thrice "ms per day" plus the "time"');
-
- t.end();
- });
-
- test('MakeTime', function (t) {
- forEach(v.infinities.concat(NaN), function (nonFiniteNumber) {
- t.equal(ES.MakeTime(nonFiniteNumber, 0, 0, 0), NaN, debug(nonFiniteNumber) + ' is not a finite `hour`');
- t.equal(ES.MakeTime(0, nonFiniteNumber, 0, 0), NaN, debug(nonFiniteNumber) + ' is not a finite `min`');
- t.equal(ES.MakeTime(0, 0, nonFiniteNumber, 0), NaN, debug(nonFiniteNumber) + ' is not a finite `sec`');
- t.equal(ES.MakeTime(0, 0, 0, nonFiniteNumber), NaN, debug(nonFiniteNumber) + ' is not a finite `ms`');
- });
-
- t.equal(
- ES.MakeTime(1.2, 2.3, 3.4, 4.5),
- (1 * msPerHour) + (2 * msPerMinute) + (3 * msPerSecond) + 4,
- 'all numbers are converted to integer, multiplied by the right number of ms, and summed'
- );
-
- t.end();
- });
-
- test('TimeClip', function (t) {
- forEach(v.infinities.concat(NaN), function (nonFiniteNumber) {
- t.equal(ES.TimeClip(nonFiniteNumber), NaN, debug(nonFiniteNumber) + ' is not a finite `time`');
- });
- t.equal(ES.TimeClip(8.64e15 + 1), NaN, '8.64e15 is the largest magnitude considered "finite"');
- t.equal(ES.TimeClip(-8.64e15 - 1), NaN, '-8.64e15 is the largest magnitude considered "finite"');
-
- forEach(v.zeroes.concat([-10, 10, +new Date()]), function (time) {
- t.looseEqual(ES.TimeClip(time), time, debug(time) + ' is a time of ' + debug(time));
- });
-
- t.end();
- });
-
- test('modulo', function (t) {
- t.equal(3 % 2, 1, '+3 % 2 is +1');
- t.equal(ES.modulo(3, 2), 1, '+3 mod 2 is +1');
-
- t.equal(-3 % 2, -1, '-3 % 2 is -1');
- t.equal(ES.modulo(-3, 2), 1, '-3 mod 2 is +1');
- t.end();
- });
-};
-
-var es2015 = function ES2015(ES, ops, expectedMissing, skips) {
- es5(ES, ops, expectedMissing, assign(assign({}, skips), {
- CheckObjectCoercible: true,
- FromPropertyDescriptor: true,
- ToNumber: true,
- ToString: true,
- Type: true
- }));
- var test = makeTest(skips);
-
- var getNamelessFunction = function () {
- var f = Object(function () {});
- try {
- delete f.name;
- } catch (e) { /**/ }
- return f;
- };
-
- test('AdvanceStringIndex', function (t) {
- forEach(v.nonStrings, function (nonString) {
- t['throws'](
- function () { ES.AdvanceStringIndex(nonString); },
- TypeError,
- '"S" argument must be a String; ' + debug(nonString) + ' is not'
- );
- });
-
- var notInts = v.nonNumbers.concat(
- v.nonIntegerNumbers,
- v.infinities,
- [NaN, [], new Date(), Math.pow(2, 53), -1]
- );
- forEach(notInts, function (nonInt) {
- t['throws'](
- function () { ES.AdvanceStringIndex('abc', nonInt); },
- TypeError,
- '"index" argument must be an integer, ' + debug(nonInt) + ' is not.'
- );
- });
-
- forEach(v.nonBooleans, function (nonBoolean) {
- t['throws'](
- function () { ES.AdvanceStringIndex('abc', 0, nonBoolean); },
- TypeError,
- debug(nonBoolean) + ' is not a Boolean'
- );
- });
-
- var str = 'a' + wholePoo + 'c';
-
- t.test('non-unicode mode', function (st) {
- for (var i = 0; i < str.length + 2; i += 1) {
- st.equal(ES.AdvanceStringIndex(str, i, false), i + 1, i + ' advances to ' + (i + 1));
- }
-
- st.end();
- });
-
- t.test('unicode mode', function (st) {
- st.equal(ES.AdvanceStringIndex(str, 0, true), 1, '0 advances to 1');
- st.equal(ES.AdvanceStringIndex(str, 1, true), 3, '1 advances to 3');
- st.equal(ES.AdvanceStringIndex(str, 2, true), 3, '2 advances to 3');
- st.equal(ES.AdvanceStringIndex(str, 3, true), 4, '3 advances to 4');
- st.equal(ES.AdvanceStringIndex(str, 4, true), 5, '4 advances to 5');
-
- st.end();
- });
-
- t.test('lone surrogates', function (st) {
- var halfPoo = 'a' + leadingPoo + 'c';
-
- st.equal(ES.AdvanceStringIndex(halfPoo, 0, true), 1, '0 advances to 1');
- st.equal(ES.AdvanceStringIndex(halfPoo, 1, true), 2, '1 advances to 2');
- st.equal(ES.AdvanceStringIndex(halfPoo, 2, true), 3, '2 advances to 3');
- st.equal(ES.AdvanceStringIndex(halfPoo, 3, true), 4, '3 advances to 4');
-
- st.end();
- });
-
- t.test('surrogate pairs', function (st) {
- var lowestPair = String.fromCharCode('0xD800') + String.fromCharCode('0xDC00');
- var highestPair = String.fromCharCode('0xDBFF') + String.fromCharCode('0xDFFF');
-
- st.equal(ES.AdvanceStringIndex(lowestPair, 0, true), 2, 'lowest surrogate pair, 0 -> 2');
- st.equal(ES.AdvanceStringIndex(highestPair, 0, true), 2, 'highest surrogate pair, 0 -> 2');
- st.equal(ES.AdvanceStringIndex(wholePoo, 0, true), 2, 'poop, 0 -> 2');
-
- st.end();
- });
-
- t.end();
- });
-
- test('ArrayCreate', function (t) {
- forEach(v.nonIntegerNumbers.concat([-1]), function (nonIntegerNumber) {
- t['throws'](
- function () { ES.ArrayCreate(nonIntegerNumber); },
- TypeError,
- 'length must be an integer number >= 0'
- );
- });
-
- t['throws'](
- function () { ES.ArrayCreate(Math.pow(2, 32)); },
- RangeError,
- 'length must be < 2**32'
- );
-
- t.deepEqual(ES.ArrayCreate(-0), [], 'length of -0 creates an empty array');
- t.deepEqual(ES.ArrayCreate(0), [], 'length of +0 creates an empty array');
- // eslint-disable-next-line no-sparse-arrays, comma-spacing
- t.deepEqual(ES.ArrayCreate(1), [,], 'length of 1 creates a sparse array of length 1');
- // eslint-disable-next-line no-sparse-arrays, comma-spacing
- t.deepEqual(ES.ArrayCreate(2), [,,], 'length of 2 creates a sparse array of length 2');
-
- t.test('proto argument', { skip: !$setProto }, function (st) {
- var fakeProto = {
- push: { toString: function () { return 'not array push'; } }
- };
- st.equal(ES.ArrayCreate(0, fakeProto).push, fakeProto.push, 'passing the proto argument works');
- st.end();
- });
-
- t.end();
- });
-
- test('ArraySetLength', function (t) {
- forEach(v.primitives.concat(v.objects), function (nonArray) {
- t['throws'](
- function () { ES.ArraySetLength(nonArray, { '[[Value]]': 0 }); },
- TypeError,
- 'A: ' + debug(nonArray) + ' is not an Array'
- );
- });
-
- forEach(v.nonUndefinedPrimitives, function (primitive) {
- t['throws'](
- function () { ES.ArraySetLength([], primitive); },
- TypeError,
- 'Desc: ' + debug(primitive) + ' is not a Property Descriptor'
- );
- });
-
- t.test('making length nonwritable', { skip: !getOwnPropertyDescriptor }, function (st) {
- var a = [];
- ES.ArraySetLength(a, { '[[Writable]]': false });
- st.deepEqual(
- getOwnPropertyDescriptor(a, 'length'),
- {
- configurable: false,
- enumerable: false,
- value: 0,
- writable: false
- },
- 'without a value, length becomes nonwritable'
- );
- st.end();
- });
-
- forEach([-1, Math.pow(2, 32)].concat(v.nonIntegerNumbers), function (nonLength) {
- t['throws'](
- function () { ES.ArraySetLength([], { '[[Value]]': nonLength }); },
- RangeError,
- 'a non-integer, negative, or > (2**31 - 1) is not a valid length: ' + debug(nonLength)
- );
- });
-
- var arr = [];
- ES.ArraySetLength(arr, { '[[Value]]': 7 });
- t.equal(arr.length, 7, 'array now has a length of 7');
-
- t.end();
- });
-
- test('ArraySpeciesCreate', function (t) {
- t.test('errors', function (st) {
- var testNonNumber = function (nonNumber) {
- st['throws'](
- function () { ES.ArraySpeciesCreate([], nonNumber); },
- TypeError,
- debug(nonNumber) + ' is not a number'
- );
- };
- forEach(v.nonNumbers, testNonNumber);
-
- st['throws'](
- function () { ES.ArraySpeciesCreate([], -1); },
- TypeError,
- '-1 is not >= 0'
- );
- st['throws'](
- function () { ES.ArraySpeciesCreate([], -Infinity); },
- TypeError,
- '-Infinity is not >= 0'
- );
-
- var testNonIntegers = function (nonInteger) {
- st['throws'](
- function () { ES.ArraySpeciesCreate([], nonInteger); },
- TypeError,
- debug(nonInteger) + ' is not an integer'
- );
- };
- forEach(v.nonIntegerNumbers, testNonIntegers);
-
- st.end();
- });
-
- t.test('works with a non-array', function (st) {
- forEach(v.objects.concat(v.primitives), function (nonArray) {
- var arr = ES.ArraySpeciesCreate(nonArray, 0);
- st.ok(ES.IsArray(arr), 'is an array');
- st.equal(arr.length, 0, 'length is correct');
- st.equal(arr.constructor, Array, 'constructor is correct');
- });
-
- st.end();
- });
-
- t.test('works with a normal array', function (st) {
- var len = 2;
- var orig = [1, 2, 3];
- var arr = ES.ArraySpeciesCreate(orig, len);
-
- st.ok(ES.IsArray(arr), 'is an array');
- st.equal(arr.length, len, 'length is correct');
- st.equal(arr.constructor, orig.constructor, 'constructor is correct');
-
- st.end();
- });
-
- t.test('-0 length produces +0 length', function (st) {
- var len = -0;
- st.equal(len, -0, '-0 is negative zero');
- st.notEqual(len, 0, '-0 is not positive zero');
-
- var orig = [1, 2, 3];
- var arr = ES.ArraySpeciesCreate(orig, len);
-
- st.equal(ES.IsArray(arr), true);
- st.equal(arr.length, 0);
- st.equal(arr.constructor, orig.constructor);
-
- st.end();
- });
-
- t.test('works with species construtor', { skip: !hasSpecies }, function (st) {
- var sentinel = {};
- var Foo = function Foo(len) {
- this.length = len;
- this.sentinel = sentinel;
- };
- var Bar = getArraySubclassWithSpeciesConstructor(Foo);
- var bar = new Bar();
-
- st.equal(ES.IsArray(bar), true, 'Bar instance is an array');
-
- var arr = ES.ArraySpeciesCreate(bar, 3);
- st.equal(arr.constructor, Foo, 'result used species constructor');
- st.equal(arr.length, 3, 'length property is correct');
- st.equal(arr.sentinel, sentinel, 'Foo constructor was exercised');
-
- st.end();
- });
-
- t.test('works with null species constructor', { skip: !hasSpecies }, function (st) {
- var Bar = getArraySubclassWithSpeciesConstructor(null);
- var bar = new Bar();
-
- st.equal(ES.IsArray(bar), true, 'Bar instance is an array');
-
- var arr = ES.ArraySpeciesCreate(bar, 3);
- st.equal(arr.constructor, Array, 'result used default constructor');
- st.equal(arr.length, 3, 'length property is correct');
-
- st.end();
- });
-
- t.test('works with undefined species constructor', { skip: !hasSpecies }, function (st) {
- var Bar = getArraySubclassWithSpeciesConstructor();
- var bar = new Bar();
-
- st.equal(ES.IsArray(bar), true, 'Bar instance is an array');
-
- var arr = ES.ArraySpeciesCreate(bar, 3);
- st.equal(arr.constructor, Array, 'result used default constructor');
- st.equal(arr.length, 3, 'length property is correct');
-
- st.end();
- });
-
- t.test('throws with object non-construtor species constructor', { skip: !hasSpecies }, function (st) {
- forEach(v.objects, function (obj) {
- var Bar = getArraySubclassWithSpeciesConstructor(obj);
- var bar = new Bar();
-
- st.equal(ES.IsArray(bar), true, 'Bar instance is an array');
-
- st['throws'](
- function () { ES.ArraySpeciesCreate(bar, 3); },
- TypeError,
- debug(obj) + ' is not a constructor'
- );
- });
-
- st.end();
- });
-
- t.end();
- });
-
- test('Call', function (t) {
- var receiver = {};
- var notFuncs = v.nonFunctions.concat([/a/g, new RegExp('a', 'g')]);
- t.plan(notFuncs.length + v.nonArrays.length + 5);
-
- forEach(notFuncs, function (notFunc) {
- t['throws'](
- function () { return ES.Call(notFunc, receiver); },
- TypeError,
- debug(notFunc) + ' (' + typeof notFunc + ') is not callable'
- );
- });
-
- forEach(v.nonArrays, function (nonArray) {
- t['throws'](
- function () { ES.Call(Function.prototype, null, nonArray); },
- TypeError,
- debug(nonArray) + ' is not an array'
- );
- });
-
- ES.Call(
- function (a, b) {
- t.equal(this, receiver, 'context matches expected');
- t.deepEqual([a, b], [1, 2], 'named args are correct');
- t.equal(arguments.length, 3, 'extra argument was passed');
- t.equal(arguments[2], 3, 'extra argument was correct');
- },
- receiver,
- [1, 2, 3]
- );
-
- t.test('Call doesn’t use func.apply', function (st) {
- st.plan(4);
-
- var bad = function (a, b) {
- st.equal(this, receiver, 'context matches expected');
- st.deepEqual([a, b], [1, 2], 'named args are correct');
- st.equal(arguments.length, 3, 'extra argument was passed');
- st.equal(arguments[2], 3, 'extra argument was correct');
- };
-
- defineProperty(bad, 'apply', {
- value: function () {
- st.fail('bad.apply shouldn’t get called');
- }
- });
-
- ES.Call(bad, receiver, [1, 2, 3]);
- st.end();
- });
-
- t.end();
- });
-
- test('CanonicalNumericIndexString', function (t) {
- var throwsOnNonString = function (notString) {
- t['throws'](
- function () { return ES.CanonicalNumericIndexString(notString); },
- TypeError,
- debug(notString) + ' is not a string'
- );
- };
- forEach(v.objects.concat(v.numbers), throwsOnNonString);
- t.equal(ES.CanonicalNumericIndexString('-0'), -0, '"-0" returns -0');
- for (var i = -50; i < 50; i += 10) {
- t.equal(i, ES.CanonicalNumericIndexString(String(i)), '"' + i + '" returns ' + i);
- t.equal(undefined, ES.CanonicalNumericIndexString(String(i) + 'a'), '"' + i + 'a" returns undefined');
- }
- t.end();
- });
-
- test('CompletePropertyDescriptor', function (t) {
- forEach(v.nonUndefinedPrimitives, function (primitive) {
- t['throws'](
- function () { ES.CompletePropertyDescriptor(primitive); },
- TypeError,
- debug(primitive) + ' is not a Property Descriptor'
- );
- });
-
- var generic = v.genericDescriptor();
- t.deepEqual(
- ES.CompletePropertyDescriptor(generic),
- {
- '[[Configurable]]': !!generic['[[Configurable]]'],
- '[[Enumerable]]': !!generic['[[Enumerable]]'],
- '[[Value]]': undefined,
- '[[Writable]]': false
- },
- 'completes a Generic Descriptor'
- );
-
- var data = v.dataDescriptor();
- t.deepEqual(
- ES.CompletePropertyDescriptor(data),
- {
- '[[Configurable]]': !!data['[[Configurable]]'],
- '[[Enumerable]]': false,
- '[[Value]]': data['[[Value]]'],
- '[[Writable]]': !!data['[[Writable]]']
- },
- 'completes a Data Descriptor'
- );
-
- var accessor = v.accessorDescriptor();
- t.deepEqual(
- ES.CompletePropertyDescriptor(accessor),
- {
- '[[Get]]': accessor['[[Get]]'],
- '[[Enumerable]]': !!accessor['[[Enumerable]]'],
- '[[Configurable]]': !!accessor['[[Configurable]]'],
- '[[Set]]': undefined
- },
- 'completes an Accessor Descriptor'
- );
-
- var mutator = v.mutatorDescriptor();
- t.deepEqual(
- ES.CompletePropertyDescriptor(mutator),
- {
- '[[Set]]': mutator['[[Set]]'],
- '[[Enumerable]]': !!mutator['[[Enumerable]]'],
- '[[Configurable]]': !!mutator['[[Configurable]]'],
- '[[Get]]': undefined
- },
- 'completes a mutator Descriptor'
- );
-
- t['throws'](
- function () { ES.CompletePropertyDescriptor(v.bothDescriptor()); },
- TypeError,
- 'data and accessor descriptors are mutually exclusive'
- );
-
- t.end();
- });
-
- test('CreateDataProperty', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.CreateDataProperty(primitive); },
- TypeError,
- debug(primitive) + ' is not an object'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- t['throws'](
- function () { ES.CreateDataProperty({}, nonPropertyKey); },
- TypeError,
- debug(nonPropertyKey) + ' is not a property key'
- );
- });
-
- var sentinel = { id: 'sentinel' };
- var secondSentinel = { id: 'second sentinel' };
- forEach(v.propertyKeys, function (propertyKey) {
- var obj = {};
- var status = ES.CreateDataProperty(obj, propertyKey, sentinel);
- t.equal(status, true, 'status is true');
- t.equal(
- obj[propertyKey],
- sentinel,
- debug(sentinel) + ' is installed on "' + debug(propertyKey) + '" on the object'
- );
- var secondStatus = ES.CreateDataProperty(obj, propertyKey, secondSentinel);
- t.equal(secondStatus, true, 'second status is true');
- t.equal(
- obj[propertyKey],
- secondSentinel,
- debug(secondSentinel) + ' is installed on "' + debug(propertyKey) + '" on the object'
- );
-
- t.test('with defineProperty', { skip: !defineProperty.oDP }, function (st) {
- var nonWritable = defineProperty({}, propertyKey, { configurable: true, writable: false });
-
- var nonWritableStatus = ES.CreateDataProperty(nonWritable, propertyKey, sentinel);
- st.equal(nonWritableStatus, false, 'create data property failed');
- st.notEqual(
- nonWritable[propertyKey],
- sentinel,
- debug(sentinel) + ' is not installed on "' + debug(propertyKey) + '" on the object when key is nonwritable'
- );
-
- var nonConfigurable = defineProperty({}, propertyKey, { configurable: false, writable: true });
-
- var nonConfigurableStatus = ES.CreateDataProperty(nonConfigurable, propertyKey, sentinel);
- st.equal(nonConfigurableStatus, false, 'create data property failed');
- st.notEqual(
- nonConfigurable[propertyKey],
- sentinel,
- debug(sentinel) + ' is not installed on "' + debug(propertyKey) + '" on the object when key is nonconfigurable'
- );
- st.end();
- });
- });
-
- t.end();
- });
-
- test('CreateDataPropertyOrThrow', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.CreateDataPropertyOrThrow(primitive); },
- TypeError,
- debug(primitive) + ' is not an object'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- t['throws'](
- function () { ES.CreateDataPropertyOrThrow({}, nonPropertyKey); },
- TypeError,
- debug(nonPropertyKey) + ' is not a property key'
- );
- });
-
- var sentinel = {};
- forEach(v.propertyKeys, function (propertyKey) {
- var obj = {};
- var status = ES.CreateDataPropertyOrThrow(obj, propertyKey, sentinel);
- t.equal(status, true, 'status is true');
- t.equal(
- obj[propertyKey],
- sentinel,
- debug(sentinel) + ' is installed on "' + debug(propertyKey) + '" on the object'
- );
-
- if (typeof Object.preventExtensions === 'function') {
- var notExtensible = {};
- Object.preventExtensions(notExtensible);
-
- t['throws'](
- function () { ES.CreateDataPropertyOrThrow(notExtensible, propertyKey, sentinel); },
- TypeError,
- 'can not install ' + debug(propertyKey) + ' on non-extensible object'
- );
- t.notEqual(
- notExtensible[propertyKey],
- sentinel,
- debug(sentinel) + ' is not installed on "' + debug(propertyKey) + '" on the object'
- );
- }
- });
-
- t.end();
- });
-
- test('CreateListFromArrayLike', function (t) {
- forEach(v.primitives, function (nonObject) {
- t['throws'](
- function () { ES.CreateListFromArrayLike(nonObject); },
- TypeError,
- debug(nonObject) + ' is not an Object'
- );
- });
- forEach(v.nonArrays, function (nonArray) {
- t['throws'](
- function () { ES.CreateListFromArrayLike({}, nonArray); },
- TypeError,
- debug(nonArray) + ' is not an Array'
- );
- });
-
- t.deepEqual(
- ES.CreateListFromArrayLike({ length: 2, 0: 'a', 1: 'b', 2: 'c' }),
- ['a', 'b'],
- 'arraylike stops at the length'
- );
-
- t.end();
- });
-
- test('CreateHTML', function (t) {
- forEach(v.nonStrings, function (nonString) {
- t['throws'](
- function () { ES.CreateHTML('', nonString, '', ''); },
- TypeError,
- 'tag: ' + debug(nonString) + ' is not a String'
- );
- t['throws'](
- function () { ES.CreateHTML('', '', nonString, ''); },
- TypeError,
- 'attribute: ' + debug(nonString) + ' is not a String'
- );
- });
-
- t.equal(
- ES.CreateHTML(
- { toString: function () { return 'the string'; } },
- 'some HTML tag!',
- ''
- ),
- 'the string',
- 'works with an empty string attribute value'
- );
-
- t.equal(
- ES.CreateHTML(
- { toString: function () { return 'the string'; } },
- 'some HTML tag!',
- 'attr',
- 'value "with quotes"'
- ),
- 'the string',
- 'works with an attribute, and a value with quotes'
- );
-
- t.end();
- });
-
- test('CreateMethodProperty', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.CreateMethodProperty(primitive, 'key'); },
- TypeError,
- 'O must be an Object'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- t['throws'](
- function () { ES.CreateMethodProperty({}, nonPropertyKey); },
- TypeError,
- debug(nonPropertyKey) + ' is not a Property Key'
- );
- });
-
- t.test('defines correctly', function (st) {
- var obj = {};
- var key = 'the key';
- var value = { foo: 'bar' };
-
- st.equal(ES.CreateMethodProperty(obj, key, value), true, 'defines property successfully');
- st.test('property descriptor', { skip: !getOwnPropertyDescriptor }, function (s2t) {
- s2t.deepEqual(
- getOwnPropertyDescriptor(obj, key),
- {
- configurable: true,
- enumerable: false,
- value: value,
- writable: true
- },
- 'sets the correct property descriptor'
- );
-
- s2t.end();
- });
- st.equal(obj[key], value, 'sets the correct value');
-
- st.end();
- });
-
- t.test('fails as expected on a frozen object', { skip: !Object.freeze }, function (st) {
- var obj = Object.freeze({ foo: 'bar' });
- st['throws'](
- function () { ES.CreateMethodProperty(obj, 'foo', { value: 'baz' }); },
- TypeError,
- 'nonconfigurable key can not be defined'
- );
-
- st.end();
- });
-
- t.test('fails as expected on a function with a nonconfigurable name', { skip: !functionsHaveNames || functionsHaveConfigurableNames }, function (st) {
- st['throws'](
- function () { ES.CreateMethodProperty(function () {}, 'name', { value: 'baz' }); },
- TypeError,
- 'nonconfigurable function name can not be defined'
- );
- st.end();
- });
-
- t.end();
- });
-
- test('CreateIterResultObject', function (t) {
- forEach(v.nonBooleans, function (nonBoolean) {
- t['throws'](
- function () { ES.CreateIterResultObject({}, nonBoolean); },
- TypeError,
- '"done" argument must be a boolean; ' + debug(nonBoolean) + ' is not'
- );
- });
-
- var value = {};
- t.deepEqual(
- ES.CreateIterResultObject(value, true),
- { value: value, done: true },
- 'creates a "done" iteration result'
- );
- t.deepEqual(
- ES.CreateIterResultObject(value, false),
- { value: value, done: false },
- 'creates a "not done" iteration result'
- );
-
- t.end();
- });
-
- test('DefinePropertyOrThrow', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.DefinePropertyOrThrow(primitive, 'key', {}); },
- TypeError,
- 'O must be an Object'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- t['throws'](
- function () { ES.DefinePropertyOrThrow({}, nonPropertyKey, {}); },
- TypeError,
- debug(nonPropertyKey) + ' is not a Property Key'
- );
- });
-
- t.test('defines correctly', function (st) {
- var obj = {};
- var key = 'the key';
- var descriptor = {
- configurable: true,
- enumerable: false,
- value: { foo: 'bar' },
- writable: true
- };
-
- st.equal(ES.DefinePropertyOrThrow(obj, key, descriptor), true, 'defines property successfully');
- st.test('property descriptor', { skip: !getOwnPropertyDescriptor }, function (s2t) {
- s2t.deepEqual(
- getOwnPropertyDescriptor(obj, key),
- descriptor,
- 'sets the correct property descriptor'
- );
-
- s2t.end();
- });
- st.deepEqual(obj[key], descriptor.value, 'sets the correct value');
-
- st.end();
- });
-
- t.test('fails as expected on a frozen object', { skip: !Object.freeze }, function (st) {
- var obj = Object.freeze({ foo: 'bar' });
- st['throws'](
- function () {
- ES.DefinePropertyOrThrow(obj, 'foo', { configurable: true, value: 'baz' });
- },
- TypeError,
- 'nonconfigurable key can not be defined'
- );
-
- st.end();
- });
-
- t.test('fails as expected on a function with a nonconfigurable name', { skip: !functionsHaveNames || functionsHaveConfigurableNames }, function (st) {
- st['throws'](
- function () {
- ES.DefinePropertyOrThrow(function () {}, 'name', { configurable: true, value: 'baz' });
- },
- TypeError,
- 'nonconfigurable function name can not be defined'
- );
- st.end();
- });
-
- t.end();
- });
-
- test('DeletePropertyOrThrow', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.DeletePropertyOrThrow(primitive, 'key', {}); },
- TypeError,
- 'O must be an Object'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- t['throws'](
- function () { ES.DeletePropertyOrThrow({}, nonPropertyKey, {}); },
- TypeError,
- debug(nonPropertyKey) + ' is not a Property Key'
- );
- });
-
- t.test('defines correctly', function (st) {
- var obj = { 'the key': 42 };
- var key = 'the key';
-
- st.equal(ES.DeletePropertyOrThrow(obj, key), true, 'deletes property successfully');
- st.equal(key in obj, false, 'key is no longer in the object');
-
- st.end();
- });
-
- t.test('fails as expected on a frozen object', { skip: !Object.freeze }, function (st) {
- var obj = Object.freeze({ foo: 'bar' });
- st['throws'](
- function () { ES.DeletePropertyOrThrow(obj, 'foo'); },
- TypeError,
- 'nonconfigurable key can not be deleted'
- );
-
- st.end();
- });
-
- t.test('fails as expected on a function with a nonconfigurable name', { skip: !functionsHaveNames || functionsHaveConfigurableNames }, function (st) {
- st['throws'](
- function () { ES.DeletePropertyOrThrow(function () {}, 'name'); },
- TypeError,
- 'nonconfigurable function name can not be deleted'
- );
- st.end();
- });
-
- t.end();
- });
-
- test('EnumerableOwnNames', function (t) {
- var obj = testEnumerableOwnNames(t, function (O) { return ES.EnumerableOwnNames(O); });
-
- t.deepEqual(
- ES.EnumerableOwnNames(obj),
- ['own'],
- 'returns enumerable own names'
- );
-
- t.end();
- });
-
- test('FromPropertyDescriptor', function (t) {
- t.equal(ES.FromPropertyDescriptor(), undefined, 'no value begets undefined');
- t.equal(ES.FromPropertyDescriptor(undefined), undefined, 'undefined value begets undefined');
-
- forEach(v.nonUndefinedPrimitives, function (primitive) {
- t['throws'](
- function () { ES.FromPropertyDescriptor(primitive); },
- TypeError,
- debug(primitive) + ' is not a Property Descriptor'
- );
- });
-
- var accessor = v.accessorDescriptor();
- t.deepEqual(ES.FromPropertyDescriptor(accessor), {
- get: accessor['[[Get]]'],
- enumerable: !!accessor['[[Enumerable]]'],
- configurable: !!accessor['[[Configurable]]']
- });
-
- var mutator = v.mutatorDescriptor();
- t.deepEqual(ES.FromPropertyDescriptor(mutator), {
- set: mutator['[[Set]]'],
- enumerable: !!mutator['[[Enumerable]]'],
- configurable: !!mutator['[[Configurable]]']
- });
- var data = v.dataDescriptor();
- t.deepEqual(ES.FromPropertyDescriptor(data), {
- value: data['[[Value]]'],
- writable: data['[[Writable]]']
- });
-
- t.deepEqual(ES.FromPropertyDescriptor(v.genericDescriptor()), {
- enumerable: false,
- configurable: true
- });
-
- var both = v.bothDescriptor();
- t['throws'](
- function () {
- ES.FromPropertyDescriptor({ get: both['[[Get]]'], value: both['[[Value]]'] });
- },
- TypeError,
- 'data and accessor descriptors are mutually exclusive'
- );
-
- t.end();
- });
-
- test('Get', function (t) {
- t['throws'](function () { return ES.Get('a', 'a'); }, TypeError, 'Throws a TypeError if `O` is not an Object');
- t['throws'](function () { return ES.Get({ 7: 7 }, 7); }, TypeError, 'Throws a TypeError if `P` is not a property key');
-
- var value = {};
- t.test('Symbols', { skip: !v.hasSymbols }, function (st) {
- var sym = Symbol('sym');
- var obj = {};
- obj[sym] = value;
- st.equal(ES.Get(obj, sym), value, 'returns property `P` if it exists on object `O`');
- st.end();
- });
- t.equal(ES.Get({ a: value }, 'a'), value, 'returns property `P` if it exists on object `O`');
- t.end();
- });
-
- test('GetIterator', function (t) {
- var arr = [1, 2];
- testIterator(t, ES.GetIterator(arr), arr);
-
- testIterator(t, ES.GetIterator('abc'), 'abc'.split(''));
-
- var sentinel = {};
- forEach(v.primitives, function (nonObject) {
- var method = function () {
- return nonObject;
- };
- t['throws'](
- function () { ES.GetIterator(sentinel, method); },
- TypeError,
- debug(nonObject) + ' is not an Object; iterator method must return an Object'
- );
- });
-
- var i = 0;
- var manualMethod = function () {
- t.equal(this, sentinel, 'receiver is expected object');
- return {
- next: function () {
- var value = arr[i];
- i += 1;
- return {
- done: i > arr.length,
- value: value
- };
- }
- };
- };
- testIterator(t, ES.GetIterator(sentinel, manualMethod), arr);
-
- t.test('Symbol.iterator', { skip: !v.hasSymbols }, function (st) {
- var m = new Map();
- m.set(1, 'a');
- m.set(2, 'b');
-
- testIterator(st, ES.GetIterator(m), [[1, 'a'], [2, 'b']]);
-
- forEach(v.primitives, function (nonObject) {
- var badIterable = {};
- badIterable[Symbol.iterator] = function () {
- return nonObject;
- };
- st['throws'](
- function () { return ES.GetIterator(badIterable); },
- TypeError,
- debug(nonObject) + ' is not an Object; iterator method must return an Object'
- );
- });
-
- st.end();
- });
-
- t.end();
- });
-
- test('GetMethod', function (t) {
- t['throws'](function () { return ES.GetMethod({ 7: 7 }, 7); }, TypeError, 'Throws a TypeError if `P` is not a property key');
- t.equal(ES.GetMethod({}, 'a'), undefined, 'returns undefined in property is undefined');
- t.equal(ES.GetMethod({ a: null }, 'a'), undefined, 'returns undefined if property is null');
- t.equal(ES.GetMethod({ a: undefined }, 'a'), undefined, 'returns undefined if property is undefined');
- var obj = { a: function () {} };
- t['throws'](function () { ES.GetMethod({ a: 'b' }, 'a'); }, TypeError, 'throws TypeError if property exists and is not callable');
- t.equal(ES.GetMethod(obj, 'a'), obj.a, 'returns property if it is callable');
- t.end();
- });
-
- test('GetOwnPropertyKeys', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.GetOwnPropertyKeys(primitive, 'String'); },
- TypeError,
- 'O: ' + debug(primitive) + ' is not an Object'
- );
- });
-
- t['throws'](
- function () { ES.GetOwnPropertyKeys({}, 'not string or symbol'); },
- TypeError,
- 'Type: must be "String" or "Symbol"'
- );
-
- t.test('Symbols', { skip: !v.hasSymbols }, function (st) {
- var O = { a: 1 };
- O[Symbol.iterator] = true;
- var s = Symbol('test');
- defineProperty(O, s, { enumerable: false, value: true });
-
- st.deepEqual(
- ES.GetOwnPropertyKeys(O, 'Symbol'),
- [Symbol.iterator, s],
- 'works with Symbols, enumerable or not'
- );
-
- st.end();
- });
-
- t.test('non-enumerable names', { skip: !defineProperty.oDP }, function (st) {
- var O = { a: 1 };
- defineProperty(O, 'b', { enumerable: false, value: 2 });
- if (v.hasSymbols) {
- O[Symbol.iterator] = true;
- }
-
- st.deepEqual(
- ES.GetOwnPropertyKeys(O, 'String').sort(),
- ['a', 'b'].sort(),
- 'works with Strings, enumerable or not'
- );
-
- st.end();
- });
-
- t.deepEqual(
- ES.GetOwnPropertyKeys({ a: 1, b: 2 }, 'String').sort(),
- ['a', 'b'].sort(),
- 'works with enumerable keys'
- );
-
- t.end();
- });
-
- test('GetPrototypeFromConstructor', function (t) {
- forEach(v.nonFunctions, function (nonFunction) {
- t['throws'](
- function () { ES.GetPrototypeFromConstructor(nonFunction, '%Array%'); },
- TypeError,
- debug(nonFunction) + ' is not a constructor'
- );
- });
-
- forEach(arrowFns, function (arrowFn) {
- t['throws'](
- function () { ES.GetPrototypeFromConstructor(arrowFn, '%Array%'); },
- TypeError,
- debug(arrowFn) + ' is not a constructor'
- );
- });
-
- var f = function () {};
- t.equal(
- ES.GetPrototypeFromConstructor(f, '%Array.prototype%'),
- f.prototype,
- 'function with normal `prototype` property returns it'
- );
- forEach([true, 'foo', 42], function (truthyPrimitive) {
- f.prototype = truthyPrimitive;
- t.equal(
- ES.GetPrototypeFromConstructor(f, '%Array.prototype%'),
- Array.prototype,
- 'function with non-object `prototype` property (' + debug(truthyPrimitive) + ') returns default intrinsic'
- );
- });
-
- t.end();
- });
-
- test('GetSubstitution', function (t) {
- forEach(v.nonStrings, function (nonString) {
- t['throws'](
- function () { ES.GetSubstitution(nonString, '', 0, [], ''); },
- TypeError,
- '`matched`: ' + debug(nonString) + ' is not a String'
- );
-
- t['throws'](
- function () { ES.GetSubstitution('', nonString, 0, [], ''); },
- TypeError,
- '`str`: ' + debug(nonString) + ' is not a String'
- );
-
- t['throws'](
- function () { ES.GetSubstitution('', '', 0, [], nonString); },
- TypeError,
- '`replacement`: ' + debug(nonString) + ' is not a String'
- );
-
- if (canDistinguishSparseFromUndefined || typeof nonString !== 'undefined') {
- t['throws'](
- function () { ES.GetSubstitution('', '', 0, [nonString], ''); },
- TypeError,
- '`captures`: ' + debug([nonString]) + ' is not an Array of strings'
- );
- }
- });
-
- forEach(v.notNonNegativeIntegers, function (nonNonNegativeInteger) {
- t['throws'](
- function () { ES.GetSubstitution('', '', nonNonNegativeInteger, [], ''); },
- TypeError,
- '`position`: ' + debug(nonNonNegativeInteger) + ' is not a non-negative integer'
- );
- });
-
- forEach(v.nonArrays, function (nonArray) {
- t['throws'](
- function () { ES.GetSubstitution('', '', 0, nonArray, ''); },
- TypeError,
- '`captures`: ' + debug(nonArray) + ' is not an Array'
- );
- });
-
- t.equal(
- ES.GetSubstitution('def', 'abcdefghi', 3, [], '123'),
- '123',
- 'returns the substitution'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '$$2$'),
- '$2$',
- 'supports $$, and trailing $'
- );
-
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$&<'),
- '>abcdef<',
- 'supports $&'
- );
-
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$`<'),
- '><',
- 'supports $` at position 0'
- );
- t.equal(
- ES.GetSubstitution('def', 'abcdefghi', 3, [], '>$`<'),
- '>ab<',
- 'supports $` at position > 0'
- );
-
- t.equal(
- ES.GetSubstitution('def', 'abcdefghi', 7, [], ">$'<"),
- '><',
- "supports $' at a position where there's less than `matched.length` chars left"
- );
- t.equal(
- ES.GetSubstitution('def', 'abcdefghi', 3, [], ">$'<"),
- '>ghi<',
- "supports $' at a position where there's more than `matched.length` chars left"
- );
-
- for (var i = 0; i < 100; i += 1) {
- var captures = [];
- captures[i] = 'test';
- if (i > 0) {
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$' + i + '<'),
- '>undefined<',
- 'supports $' + i + ' with no captures'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$' + i),
- '>undefined',
- 'supports $' + i + ' at the end of the replacement, with no captures'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, '>$' + i + '<'),
- '><',
- 'supports $' + i + ' with a capture at that index'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, '>$' + i),
- '>',
- 'supports $' + i + ' at the end of the replacement, with a capture at that index'
- );
- }
- if (i < 10) {
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$0' + i + '<'),
- i === 0 ? '><' : '>undefined<',
- 'supports $0' + i + ' with no captures'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$0' + i),
- i === 0 ? '>' : '>undefined',
- 'supports $0' + i + ' at the end of the replacement, with no captures'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, '>$0' + i + '<'),
- '><',
- 'supports $0' + i + ' with a capture at that index'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, '>$0' + i),
- '>',
- 'supports $0' + i + ' at the end of the replacement, with a capture at that index'
- );
- }
- }
-
- t.end();
- });
-
- test('GetV', function (t) {
- t['throws'](function () { return ES.GetV({ 7: 7 }, 7); }, TypeError, 'Throws a TypeError if `P` is not a property key');
- var obj = { a: function () {} };
- t.equal(ES.GetV(obj, 'a'), obj.a, 'returns property if it exists');
- t.equal(ES.GetV(obj, 'b'), undefined, 'returns undefiend if property does not exist');
- t.end();
- });
-
- test('HasOwnProperty', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.HasOwnProperty(primitive, 'key'); },
- TypeError,
- debug(primitive) + ' is not an Object'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonKey) {
- t['throws'](
- function () { ES.HasOwnProperty({}, nonKey); },
- TypeError,
- debug(nonKey) + ' is not a Property Key'
- );
- });
-
- t.equal(ES.HasOwnProperty({}, 'toString'), false, 'inherited properties are not own');
- t.equal(
- ES.HasOwnProperty({ toString: 1 }, 'toString'),
- true,
- 'shadowed inherited own properties are own'
- );
- t.equal(ES.HasOwnProperty({ a: 1 }, 'a'), true, 'own properties are own');
-
- t.end();
- });
-
- test('HasProperty', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.HasProperty(primitive, 'key'); },
- TypeError,
- debug(primitive) + ' is not an Object'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonKey) {
- t['throws'](
- function () { ES.HasProperty({}, nonKey); },
- TypeError,
- debug(nonKey) + ' is not a Property Key'
- );
- });
-
- t.equal(ES.HasProperty({}, 'nope'), false, 'object does not have nonexistent properties');
- t.equal(ES.HasProperty({}, 'toString'), true, 'object has inherited properties');
- t.equal(
- ES.HasProperty({ toString: 1 }, 'toString'),
- true,
- 'object has shadowed inherited own properties'
- );
- t.equal(ES.HasProperty({ a: 1 }, 'a'), true, 'object has own properties');
-
- t.end();
- });
-
- test('InstanceofOperator', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.InstanceofOperator(primitive, function () {}); },
- TypeError,
- debug(primitive) + ' is not an object'
- );
- });
-
- forEach(v.nonFunctions, function (nonFunction) {
- t['throws'](
- function () { ES.InstanceofOperator({}, nonFunction); },
- TypeError,
- debug(nonFunction) + ' is not callable'
- );
- });
-
- var C = function C() {};
- var D = function D() {};
-
- t.equal(ES.InstanceofOperator(new C(), C), true, 'constructor function has an instance of itself');
- t.equal(ES.InstanceofOperator(new D(), C), false, 'constructor/instance mismatch is false');
- t.equal(ES.InstanceofOperator(new C(), D), false, 'instance/constructor mismatch is false');
- t.equal(ES.InstanceofOperator({}, C), false, 'plain object is not an instance of a constructor');
- t.equal(ES.InstanceofOperator({}, Object), true, 'plain object is an instance of Object');
-
- t.test('Symbol.hasInstance', { skip: !v.hasSymbols || !Symbol.hasInstance }, function (st) {
- st.plan(5);
-
- var O = {};
- var C2 = function () {};
- st.equal(ES.InstanceofOperator(O, C2), false, 'O is not an instance of C2');
-
- defineProperty(C2, Symbol.hasInstance, {
- configurable: true,
- value: function (obj) {
- st.equal(this, C2, 'hasInstance receiver is C2');
- st.equal(obj, O, 'hasInstance argument is O');
-
- return {}; // testing coercion to boolean
- }
- });
-
- st.equal(ES.InstanceofOperator(O, C2), true, 'O is now an instance of C2');
-
- defineProperty(C2, Symbol.hasInstance, {
- configurable: true,
- value: undefined
- });
-
- st.equal(ES.InstanceofOperator(O, C2), false, 'O is no longer an instance of C2');
-
- st.end();
- });
-
- t.end();
- });
-
- test('Invoke', function (t) {
- forEach(v.nonPropertyKeys, function (nonKey) {
- t['throws'](
- function () { ES.Invoke({}, nonKey); },
- TypeError,
- debug(nonKey) + ' is not a Property Key'
- );
- });
-
- t['throws'](
- function () { ES.Invoke({ o: false }, 'o'); },
- TypeError,
- 'fails on a non-function'
- );
-
- forEach(v.nonArrays, function (nonArray) {
- t['throws'](
- function () { ES.Invoke({}, '', nonArray); },
- TypeError,
- debug(nonArray) + ' is not an Array'
- );
- });
-
- t.test('invoked callback', function (st) {
- var aValue = {};
- var bValue = {};
- var obj = {
- f: function (a) {
- st.equal(arguments.length, 2, '2 args passed');
- st.equal(a, aValue, 'first arg is correct');
- st.equal(arguments[1], bValue, 'second arg is correct');
- }
- };
- st.plan(3);
- ES.Invoke(obj, 'f', [aValue, bValue]);
- });
-
- t.end();
- });
-
- test('IsArray', function (t) {
- t.equal(true, ES.IsArray([]), '[] is array');
- t.equal(false, ES.IsArray({}), '{} is not array');
- t.equal(false, ES.IsArray({ length: 1, 0: true }), 'arraylike object is not array');
- forEach(v.objects.concat(v.primitives), function (value) {
- t.equal(false, ES.IsArray(value), debug(value) + ' is not array');
- });
- t.end();
- });
-
- test('IsConcatSpreadable', function (t) {
- forEach(v.primitives, function (primitive) {
- t.equal(ES.IsConcatSpreadable(primitive), false, debug(primitive) + ' is not an Object');
- });
-
- var hasSymbolConcatSpreadable = v.hasSymbols && Symbol.isConcatSpreadable;
- t.test('Symbol.isConcatSpreadable', { skip: !hasSymbolConcatSpreadable }, function (st) {
- forEach(v.falsies, function (falsy) {
- var obj = {};
- obj[Symbol.isConcatSpreadable] = falsy;
- st.equal(
- ES.IsConcatSpreadable(obj),
- false,
- 'an object with ' + debug(falsy) + ' as Symbol.isConcatSpreadable is not concat spreadable'
- );
- });
-
- forEach(v.truthies, function (truthy) {
- var obj = {};
- obj[Symbol.isConcatSpreadable] = truthy;
- st.equal(
- ES.IsConcatSpreadable(obj),
- true,
- 'an object with ' + debug(truthy) + ' as Symbol.isConcatSpreadable is concat spreadable'
- );
- });
-
- st.end();
- });
-
- forEach(v.objects, function (object) {
- t.equal(
- ES.IsConcatSpreadable(object),
- false,
- 'non-array without Symbol.isConcatSpreadable is not concat spreadable'
- );
- });
-
- t.equal(ES.IsConcatSpreadable([]), true, 'arrays are concat spreadable');
-
- t.end();
- });
-
- test('IsConstructor', function (t) {
- t.equal(true, ES.IsConstructor(function () {}), 'function is constructor');
- t.equal(false, ES.IsConstructor(/a/g), 'regex is not constructor');
- forEach(v.objects, function (object) {
- t.equal(false, ES.IsConstructor(object), object + ' object is not constructor');
- });
-
- try {
- var arrow = Function('return () => {}')(); // eslint-disable-line no-new-func
- t.equal(ES.IsConstructor(arrow), false, 'arrow function is not constructor');
- } catch (e) {
- t.comment('SKIP: arrow function syntax not supported.');
- }
-
- try {
- var foo = Function('return class Foo {}')(); // eslint-disable-line no-new-func
- t.equal(ES.IsConstructor(foo), true, 'class is constructor');
- } catch (e) {
- t.comment('SKIP: class syntax not supported.');
- }
-
- if (typeof Reflect !== 'object' || typeof Proxy !== 'function' || has(Proxy, 'prototype')) {
- t.comment('SKIP: Proxy is constructor');
- } else {
- t.equal(ES.IsConstructor(Proxy), true, 'Proxy is constructor');
- }
-
- t.end();
- });
-
- test('IsExtensible', function (t) {
- forEach(v.objects, function (object) {
- t.equal(true, ES.IsExtensible(object), debug(object) + ' object is extensible');
- });
- forEach(v.primitives, function (primitive) {
- t.equal(false, ES.IsExtensible(primitive), debug(primitive) + ' is not extensible');
- });
- if (Object.preventExtensions) {
- t.equal(false, ES.IsExtensible(Object.preventExtensions({})), 'object with extensions prevented is not extensible');
- }
- t.end();
- });
-
- test('IsPromise', { skip: typeof Promise !== 'function' }, function (t) {
- forEach(v.objects.concat(v.primitives), function (nonPromise) {
- t.equal(ES.IsPromise(nonPromise), false, debug(nonPromise) + ' is not a Promise');
- });
-
- var thenable = { then: Promise.prototype.then };
- t.equal(ES.IsPromise(thenable), false, 'generic thenable is not a Promise');
-
- t.equal(ES.IsPromise(Promise.resolve()), true, 'Promise is a Promise');
-
- t.end();
- });
-
- test('IsPropertyDescriptor', function (t) {
- forEach(v.primitives, function (primitive) {
- t.equal(
- ES.IsPropertyDescriptor(primitive),
- false,
- debug(primitive) + ' is not a Property Descriptor'
- );
- });
-
- t.equal(ES.IsPropertyDescriptor({ invalid: true }), false, 'invalid keys not allowed on a Property Descriptor');
-
- t.equal(ES.IsPropertyDescriptor({}), true, 'empty object is an incomplete Property Descriptor');
-
- t.equal(ES.IsPropertyDescriptor(v.accessorDescriptor()), true, 'accessor descriptor is a Property Descriptor');
- t.equal(ES.IsPropertyDescriptor(v.mutatorDescriptor()), true, 'mutator descriptor is a Property Descriptor');
- t.equal(ES.IsPropertyDescriptor(v.dataDescriptor()), true, 'data descriptor is a Property Descriptor');
- t.equal(ES.IsPropertyDescriptor(v.genericDescriptor()), true, 'generic descriptor is a Property Descriptor');
-
- t['throws'](
- function () { ES.IsPropertyDescriptor(v.bothDescriptor()); },
- TypeError,
- 'a Property Descriptor can not be both a Data and an Accessor Descriptor'
- );
-
- t['throws'](
- function () { ES.IsPropertyDescriptor(v.bothDescriptorWritable()); },
- TypeError,
- 'a Property Descriptor can not be both a Data and an Accessor Descriptor'
- );
-
- t.end();
- });
-
- test('IsPropertyKey', function (t) {
- forEach(v.numbers.concat(v.objects), function (notKey) {
- t.equal(false, ES.IsPropertyKey(notKey), debug(notKey) + ' is not property key');
- });
-
- t.equal(true, ES.IsPropertyKey('foo'), 'string is property key');
-
- forEach(v.symbols, function (symbol) {
- t.equal(true, ES.IsPropertyKey(symbol), debug(symbol) + ' is property key');
- });
- t.end();
- });
-
- test('IsRegExp', function (t) {
- forEach([/a/g, new RegExp('a', 'g')], function (regex) {
- t.equal(true, ES.IsRegExp(regex), regex + ' is regex');
- });
-
- forEach(v.objects.concat(v.primitives), function (nonRegex) {
- t.equal(false, ES.IsRegExp(nonRegex), debug(nonRegex) + ' is not regex');
- });
-
- t.test('Symbol.match', { skip: !v.hasSymbols || !Symbol.match }, function (st) {
- var obj = {};
- obj[Symbol.match] = true;
- st.equal(true, ES.IsRegExp(obj), 'object with truthy Symbol.match is regex');
-
- var regex = /a/;
- defineProperty(regex, Symbol.match, { value: false });
- st.equal(false, ES.IsRegExp(regex), 'regex with falsy Symbol.match is not regex');
-
- st.end();
- });
-
- t.end();
- });
-
- test('IsInteger', function (t) {
- for (var i = -100; i < 100; i += 10) {
- t.equal(true, ES.IsInteger(i), i + ' is integer');
- t.equal(false, ES.IsInteger(i + 0.2), (i + 0.2) + ' is not integer');
- }
- t.equal(true, ES.IsInteger(-0), '-0 is integer');
- var notInts = v.nonNumbers.concat(v.nonIntegerNumbers, v.infinities, [NaN, [], new Date()]);
- forEach(notInts, function (notInt) {
- t.equal(false, ES.IsInteger(notInt), debug(notInt) + ' is not integer');
- });
- t.equal(false, ES.IsInteger(v.uncoercibleObject), 'uncoercibleObject is not integer');
- t.end();
- });
-
- test('IteratorNext', function (t) {
- forEach(v.primitives, function (nonObject) {
- t['throws'](
- function () { ES.IteratorNext(nonObject); },
- TypeError,
- debug(nonObject) + ' is not an Object'
- );
-
- t['throws'](
- function () { ES.IteratorNext({ next: function () { return nonObject; } }); },
- TypeError,
- '`next()` returns ' + debug(nonObject) + ', which is not an Object'
- );
- });
-
- var iterator = {
- next: function (value) {
- return [arguments.length, value];
- }
- };
- t.deepEqual(
- ES.IteratorNext(iterator),
- [0, undefined],
- 'returns expected value from `.next()`; `next` receives expected 0 arguments'
- );
- t.deepEqual(
- ES.IteratorNext(iterator, iterator),
- [1, iterator],
- 'returns expected value from `.next()`; `next` receives expected 1 argument'
- );
-
- t.end();
- });
-
- test('IteratorComplete', function (t) {
- forEach(v.primitives, function (nonObject) {
- t['throws'](
- function () { ES.IteratorComplete(nonObject); },
- TypeError,
- debug(nonObject) + ' is not an Object'
- );
- });
-
- forEach(v.truthies, function (truthy) {
- t.equal(ES.IteratorComplete({ done: truthy }), true, '{ done: ' + debug(truthy) + ' } is true');
- });
-
- forEach(v.falsies, function (falsy) {
- t.equal(ES.IteratorComplete({ done: falsy }), false, '{ done: ' + debug(falsy) + ' } is false');
- });
-
- t.end();
- });
-
- test('IteratorValue', function (t) {
- forEach(v.primitives, function (nonObject) {
- t['throws'](
- function () { ES.IteratorValue(nonObject); },
- TypeError,
- debug(nonObject) + ' is not an Object'
- );
- });
-
- var sentinel = {};
- t.equal(ES.IteratorValue({ value: sentinel }), sentinel, 'Gets `.value` off the object');
-
- t.end();
- });
-
- test('IteratorStep', function (t) {
- t.deepEqual(
- ES.IteratorStep({
- next: function () {
- return {
- done: false,
- value: [1, arguments.length]
- };
- }
- }),
- { done: false, value: [1, 0] },
- 'not-done iterator result yields iterator result'
- );
- t.deepEqual(
- ES.IteratorStep({
- next: function () {
- return {
- done: true,
- value: [2, arguments.length]
- };
- }
- }),
- false,
- 'done iterator result yields false'
- );
-
- t.end();
- });
-
- test('IteratorClose', function (t) {
- forEach(v.primitives, function (nonObject) {
- t['throws'](
- function () { ES.IteratorClose(nonObject); },
- TypeError,
- debug(nonObject) + ' is not an Object'
- );
-
- t['throws'](
- function () { ES.IteratorClose({ 'return': function () { return nonObject; } }, function () {}); },
- TypeError,
- '`.return` returns ' + debug(nonObject) + ', which is not an Object'
- );
- });
-
- forEach(v.nonFunctions, function (nonFunction) {
- t['throws'](
- function () { ES.IteratorClose({}, nonFunction); },
- TypeError,
- debug(nonFunction) + ' is not a thunk for a Completion Record'
- );
-
- if (nonFunction != null) {
- t['throws'](
- function () { ES.IteratorClose({ 'return': nonFunction }, function () {}); },
- TypeError,
- '`.return` of ' + debug(nonFunction) + ' is not a Function'
- );
- }
- });
-
- var sentinel = {};
- t.equal(
- ES.IteratorClose({ 'return': undefined }, function () { return sentinel; }),
- sentinel,
- 'when `.return` is `undefined`, invokes and returns the completion thunk'
- );
-
- /* eslint no-throw-literal: 0 */
- t['throws'](
- function () { ES.IteratorClose({ 'return': function () { throw sentinel; } }, function () {}); },
- sentinel,
- '`.return` that throws, when completionThunk does not, throws exception from `.return`'
- );
- t['throws'](
- function () { ES.IteratorClose({ 'return': function () { throw sentinel; } }, function () { throw -1; }); },
- -1,
- '`.return` that throws, when completionThunk does too, throws exception from completionThunk'
- );
- t['throws'](
- function () { ES.IteratorClose({ 'return': function () { } }, function () { throw -1; }); },
- -1,
- '`.return` that does not throw, when completionThunk does, throws exception from completionThunk'
- );
-
- t.equal(
- ES.IteratorClose({ 'return': function () { return sentinel; } }, function () { return 42; }),
- 42,
- 'when `.return` and completionThunk do not throw, and `.return` returns an Object, returns completionThunk'
- );
-
- t.end();
- });
-
- test('ObjectCreate', function (t) {
- forEach(v.nonNullPrimitives, function (value) {
- t['throws'](
- function () { ES.ObjectCreate(value); },
- TypeError,
- debug(value) + ' is not null, or an object'
- );
- });
-
- t.test('proto arg', function (st) {
- var Parent = function Parent() {};
- Parent.prototype.foo = {};
- var child = ES.ObjectCreate(Parent.prototype);
- st.equal(child instanceof Parent, true, 'child is instanceof Parent');
- st.equal(child.foo, Parent.prototype.foo, 'child inherits properties from Parent.prototype');
-
- st.end();
- });
-
- t.test('internal slots arg', function (st) {
- st.doesNotThrow(function () { ES.ObjectCreate({}, []); }, 'an empty slot list is valid');
-
- st['throws'](
- function () { ES.ObjectCreate({}, ['a']); },
- SyntaxError,
- 'internal slots are not supported'
- );
-
- st.end();
- });
-
- t.test('null proto', { skip: !Object.create && !$setProto }, function (st) {
- st.equal('toString' in {}, true, 'normal objects have toString');
- st.equal('toString' in ES.ObjectCreate(null), false, 'makes a null object');
-
- st.end();
- });
-
- t.test('null proto when no native Object.create', { skip: Object.create || $setProto }, function (st) {
- st['throws'](
- function () { ES.ObjectCreate(null); },
- SyntaxError,
- 'without a native Object.create, can not create null objects'
- );
-
- st.end();
- });
-
- t.end();
- });
-
- test('OrdinaryCreateFromConstructor', function (t) {
- forEach(v.nonFunctions, function (nonFunction) {
- t['throws'](
- function () { ES.OrdinaryCreateFromConstructor(nonFunction, '%Array.prototype%'); },
- TypeError,
- debug(nonFunction) + ' is not a constructor'
- );
- });
-
- forEach(arrowFns, function (arrowFn) {
- t['throws'](
- function () { ES.OrdinaryCreateFromConstructor(arrowFn, '%Array.prototype%'); },
- TypeError,
- debug(arrowFn) + ' is not a constructor'
- );
- });
-
- t.test('proto arg', function (st) {
- var Parent = function Parent() {};
- Parent.prototype.foo = {};
- var child = ES.OrdinaryCreateFromConstructor(Parent, '%Array.prototype%');
- st.equal(child instanceof Parent, true, 'child is instanceof Parent');
- st.equal(child instanceof Array, false, 'child is not instanceof Array');
- st.equal(child.foo, Parent.prototype.foo, 'child inherits properties from Parent.prototype');
-
- st.end();
- });
-
- t.test('internal slots arg', function (st) {
- st.doesNotThrow(
- function () { ES.OrdinaryCreateFromConstructor(function () {}, '%Array.prototype%', []); },
- 'an empty slot list is valid'
- );
-
- st['throws'](
- function () { ES.OrdinaryCreateFromConstructor(function () {}, '%Array.prototype%', ['a']); },
- SyntaxError,
- 'internal slots are not supported'
- );
-
- st.end();
- });
-
- t.end();
- });
-
- test('OrdinaryGetOwnProperty', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.OrdinaryGetOwnProperty(primitive, ''); },
- TypeError,
- 'O: ' + debug(primitive) + ' is not an Object'
- );
- });
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- t['throws'](
- function () { ES.OrdinaryGetOwnProperty({}, nonPropertyKey); },
- TypeError,
- 'P: ' + debug(nonPropertyKey) + ' is not a Property Key'
- );
- });
-
- t.equal(ES.OrdinaryGetOwnProperty({}, 'not in the object'), undefined, 'missing property yields undefined');
- t.equal(ES.OrdinaryGetOwnProperty({}, 'toString'), undefined, 'inherited non-own property yields undefined');
-
- t.deepEqual(
- ES.OrdinaryGetOwnProperty({ a: 1 }, 'a'),
- ES.ToPropertyDescriptor({
- configurable: true,
- enumerable: true,
- value: 1,
- writable: true
- }),
- 'own assigned data property yields expected descriptor'
- );
-
- t.deepEqual(
- ES.OrdinaryGetOwnProperty(/a/, 'lastIndex'),
- ES.ToPropertyDescriptor({
- configurable: false,
- enumerable: false,
- value: 0,
- writable: true
- }),
- 'regex lastIndex yields expected descriptor'
- );
-
- t.deepEqual(
- ES.OrdinaryGetOwnProperty([], 'length'),
- ES.ToPropertyDescriptor({
- configurable: false,
- enumerable: false,
- value: 0,
- writable: true
- }),
- 'array length yields expected descriptor'
- );
-
- if (!Object.isFrozen || !Object.isFrozen(Object.prototype)) {
- t.deepEqual(
- ES.OrdinaryGetOwnProperty(Object.prototype, 'toString'),
- ES.ToPropertyDescriptor({
- configurable: true,
- enumerable: false,
- value: Object.prototype.toString,
- writable: true
- }),
- 'own non-enumerable data property yields expected descriptor'
- );
- }
-
- t.test('ES5+', { skip: !defineProperty.oDP }, function (st) {
- var O = {};
- defineProperty(O, 'foo', {
- configurable: false,
- enumerable: false,
- value: O,
- writable: true
- });
-
- st.deepEqual(
- ES.OrdinaryGetOwnProperty(O, 'foo'),
- ES.ToPropertyDescriptor({
- configurable: false,
- enumerable: false,
- value: O,
- writable: true
- }),
- 'defined own property yields expected descriptor'
- );
-
- st.end();
- });
-
- t.end();
- });
-
- test('OrdinaryDefineOwnProperty', { skip: !getOwnPropertyDescriptor }, function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.OrdinaryDefineOwnProperty(primitive, {}, []); },
- TypeError,
- 'O: ' + debug(primitive) + ' is not an Object'
- );
- });
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- t['throws'](
- function () { ES.OrdinaryDefineOwnProperty({}, nonPropertyKey, v.genericDescriptor()); },
- TypeError,
- 'P: ' + debug(nonPropertyKey) + ' is not a Property Key'
- );
- });
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.OrdinaryDefineOwnProperty(primitive, '', v.genericDescriptor()); },
- TypeError,
- 'Desc: ' + debug(primitive) + ' is not a Property Descriptor'
- );
- });
-
- var O = {};
- var P = 'property key';
- var Desc = v.accessorDescriptor();
- t.equal(
- ES.OrdinaryDefineOwnProperty(O, P, Desc),
- true,
- 'operation is successful'
- );
- t.deepEqual(
- getOwnPropertyDescriptor(O, P),
- ES.FromPropertyDescriptor(ES.CompletePropertyDescriptor(Desc)),
- 'expected property descriptor is defined'
- );
-
- t.end();
- });
-
- test('OrdinaryHasInstance', function (t) {
- forEach(v.nonFunctions, function (nonFunction) {
- t.equal(ES.OrdinaryHasInstance(nonFunction, {}), false, debug(nonFunction) + ' is not callable');
- });
-
- forEach(v.primitives, function (primitive) {
- t.equal(ES.OrdinaryHasInstance(function () {}, primitive), false, debug(primitive) + ' is not an object');
- });
-
- var C = function C() {};
- var D = function D() {};
- t.equal(ES.OrdinaryHasInstance(C, new C()), true, 'constructor function has an instance of itself');
- t.equal(ES.OrdinaryHasInstance(C, new D()), false, 'constructor/instance mismatch is false');
- t.equal(ES.OrdinaryHasInstance(D, new C()), false, 'instance/constructor mismatch is false');
- t.equal(ES.OrdinaryHasInstance(C, {}), false, 'plain object is not an instance of a constructor');
- t.equal(ES.OrdinaryHasInstance(Object, {}), true, 'plain object is an instance of Object');
-
- t.end();
- });
-
- test('OrdinaryHasProperty', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.OrdinaryHasProperty(primitive, ''); },
- TypeError,
- debug(primitive) + ' is not an object'
- );
- });
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- t['throws'](
- function () { ES.OrdinaryHasProperty({}, nonPropertyKey); },
- TypeError,
- 'P: ' + debug(nonPropertyKey) + ' is not a Property Key'
- );
- });
-
- t.equal(ES.OrdinaryHasProperty({ a: 1 }, 'a'), true, 'own property is true');
- t.equal(ES.OrdinaryHasProperty({}, 'toString'), true, 'inherited property is true');
- t.equal(ES.OrdinaryHasProperty({}, 'nope'), false, 'absent property is false');
-
- t.end();
- });
-
- test('QuoteJSONString', function (t) {
- forEach(v.nonStrings, function (nonString) {
- t['throws'](
- function () { ES.QuoteJSONString(nonString); },
- TypeError,
- debug(nonString) + ' is not a String'
- );
- });
-
- t.equal(ES.QuoteJSONString(''), '""', '"" gets properly JSON-quoted');
- t.equal(ES.QuoteJSONString('a'), '"a"', '"a" gets properly JSON-quoted');
- t.equal(ES.QuoteJSONString('"'), '"\\""', '"\\"" gets properly JSON-quoted');
- t.equal(ES.QuoteJSONString('\b'), '"\\b"', '"\\b" gets properly JSON-quoted');
- t.equal(ES.QuoteJSONString('\t'), '"\\t"', '"\\t" gets properly JSON-quoted');
- t.equal(ES.QuoteJSONString('\n'), '"\\n"', '"\\n" gets properly JSON-quoted');
- t.equal(ES.QuoteJSONString('\f'), '"\\f"', '"\\f" gets properly JSON-quoted');
- t.equal(ES.QuoteJSONString('\r'), '"\\r"', '"\\r" gets properly JSON-quoted');
- t.equal(ES.QuoteJSONString('\\'), '"\\\\"', '"\\\\" gets properly JSON-quoted');
- t.equal(ES.QuoteJSONString('\\'), '"\\\\"', '"\\\\" gets properly JSON-quoted');
- t.equal(ES.QuoteJSONString('\u0019'), '"\\u0019"', '"\\u0019" gets properly JSON-quoted');
-
- t.end();
- });
-
- test('RegExpCreate', function (t) {
- forEach(v.nonStrings, function (nonString) {
- if (typeof nonString !== 'symbol') {
- var p = typeof nonString === 'undefined' ? '' : nonString;
- t.equal(
- String(ES.RegExpCreate(p, 'g')),
- '/' + (String(p) || '(?:)') + '/g',
- debug(nonString) + ' becomes `/' + String(p) + '/g`'
- );
- }
- });
-
- t.deepEqual(ES.RegExpCreate(), new RegExp(), 'undefined pattern and flags yields empty regex');
-
- t.end();
- });
-
- test('RegExpExec', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.RegExpExec(primitive); },
- TypeError,
- '"R" argument must be an object; ' + debug(primitive) + ' is not'
- );
- });
-
- forEach(v.nonStrings, function (nonString) {
- t['throws'](
- function () { ES.RegExpExec({}, nonString); },
- TypeError,
- '"S" argument must be a String; ' + debug(nonString) + ' is not'
- );
- });
-
- t.test('gets and calls a callable "exec"', function (st) {
- var str = '123';
- var o = {
- exec: function (S) {
- st.equal(this, o, '"exec" receiver is R');
- st.equal(S, str, '"exec" argument is S');
-
- return null;
- }
- };
- st.plan(2);
- ES.RegExpExec(o, str);
- st.end();
- });
-
- t.test('throws if a callable "exec" returns a non-null non-object', function (st) {
- var str = '123';
- st.plan(v.nonNullPrimitives.length);
- forEach(v.nonNullPrimitives, function (nonNullPrimitive) {
- st['throws'](
- function () { ES.RegExpExec({ exec: function () { return nonNullPrimitive; } }, str); },
- TypeError,
- '"exec" method must return `null` or an Object; ' + debug(nonNullPrimitive) + ' is not'
- );
- });
- st.end();
- });
-
- t.test('actual regex that should match against a string', function (st) {
- var S = 'aabc';
- var R = /a/g;
- var match1 = ES.RegExpExec(R, S);
- var expected1 = assign(['a'], kludgeMatch(R, { index: 0, input: S }));
- var match2 = ES.RegExpExec(R, S);
- var expected2 = assign(['a'], kludgeMatch(R, { index: 1, input: S }));
- var match3 = ES.RegExpExec(R, S);
- st.deepEqual(match1, expected1, 'match object 1 is as expected');
- st.deepEqual(match2, expected2, 'match object 2 is as expected');
- st.equal(match3, null, 'match 3 is null as expected');
- st.end();
- });
-
- t.test('actual regex that should match against a string, with shadowed "exec"', function (st) {
- var S = 'aabc';
- var R = /a/g;
- defineProperty(R, 'exec', { value: undefined });
- var match1 = ES.RegExpExec(R, S);
- var expected1 = assign(['a'], kludgeMatch(R, { index: 0, input: S }));
- var match2 = ES.RegExpExec(R, S);
- var expected2 = assign(['a'], kludgeMatch(R, { index: 1, input: S }));
- var match3 = ES.RegExpExec(R, S);
- st.deepEqual(match1, expected1, 'match object 1 is as expected');
- st.deepEqual(match2, expected2, 'match object 2 is as expected');
- st.equal(match3, null, 'match 3 is null as expected');
- st.end();
- });
- t.end();
- });
-
- test('RequireObjectCoercible', function (t) {
- t.equal(false, 'CheckObjectCoercible' in ES, 'CheckObjectCoercible -> RequireObjectCoercible in ES6');
- t['throws'](function () { return ES.RequireObjectCoercible(undefined); }, TypeError, 'undefined throws');
- t['throws'](function () { return ES.RequireObjectCoercible(null); }, TypeError, 'null throws');
- var isCoercible = function (value) {
- t.doesNotThrow(function () { return ES.RequireObjectCoercible(value); }, debug(value) + ' does not throw');
- };
- forEach(v.objects.concat(v.nonNullPrimitives), isCoercible);
- t.end();
- });
-
- test('SameValueZero', function (t) {
- t.equal(true, ES.SameValueZero(NaN, NaN), 'NaN is SameValueZero as NaN');
- t.equal(true, ES.SameValueZero(0, -0), '+0 is SameValueZero as -0');
- forEach(v.objects.concat(v.primitives), function (val) {
- t.equal(val === val, ES.SameValueZero(val, val), debug(val) + ' is SameValueZero to itself');
- });
- t.end();
- });
-
- test('Set', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.Set(primitive, '', null, false); },
- TypeError,
- debug(primitive) + ' is not an Object'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonKey) {
- t['throws'](
- function () { ES.Set({}, nonKey, null, false); },
- TypeError,
- debug(nonKey) + ' is not a Property Key'
- );
- });
-
- forEach(v.nonBooleans, function (nonBoolean) {
- t['throws'](
- function () { ES.Set({}, '', null, nonBoolean); },
- TypeError,
- debug(nonBoolean) + ' is not a Boolean'
- );
- });
-
- var o = {};
- var value = {};
- ES.Set(o, 'key', value, true);
- t.deepEqual(o, { key: value }, 'key is set');
-
- t.test('nonwritable', { skip: !defineProperty.oDP }, function (st) {
- var obj = { a: value };
- defineProperty(obj, 'a', { writable: false });
-
- st['throws'](
- function () { ES.Set(obj, 'a', {}, true); },
- TypeError,
- 'can not Set nonwritable property'
- );
-
- st.doesNotThrow(
- function () {
- st.equal(ES.Set(obj, 'a', {}, false), false, 'unsuccessful Set returns false');
- },
- 'setting Throw to false prevents an exception'
- );
-
- st.end();
- });
-
- t.test('nonconfigurable', { skip: !defineProperty.oDP }, function (st) {
- var obj = { a: value };
- defineProperty(obj, 'a', { configurable: false });
-
- st.equal(ES.Set(obj, 'a', value, true), true, 'successful Set returns true');
- st.deepEqual(obj, { a: value }, 'key is set');
-
- st.end();
- });
-
- t.test('doesn’t call [[Get]] in conforming strict mode environments', { skip: noThrowOnStrictViolation }, function (st) {
- var getterCalled = false;
- var setterCalls = 0;
- var obj = {};
- defineProperty(obj, 'a', {
- get: function () {
- getterCalled = true;
- },
- set: function () {
- setterCalls += 1;
- }
- });
-
- st.equal(ES.Set(obj, 'a', value, false), true, 'successful Set returns true');
- st.equal(setterCalls, 1, 'setter was called once');
- st.equal(getterCalled, false, 'getter was not called');
-
- st.end();
- });
-
- t.end();
- });
-
- test('SetFunctionName', function (t) {
- forEach(v.nonFunctions, function (nonFunction) {
- t['throws'](
- function () { ES.SetFunctionName(nonFunction, ''); },
- TypeError,
- debug(nonFunction) + ' is not a Function'
- );
- });
-
- t.test('non-extensible function', { skip: !Object.preventExtensions }, function (st) {
- var f = getNamelessFunction();
- Object.preventExtensions(f);
- st['throws'](
- function () { ES.SetFunctionName(f, ''); },
- TypeError,
- 'throws on a non-extensible function'
- );
- st.end();
- });
-
- t.test('has an own name property', { skip: !functionsHaveNames }, function (st) {
- st['throws'](
- function () { ES.SetFunctionName(function g() {}, ''); },
- TypeError,
- 'throws if function has an own `name` property'
- );
- st.end();
- });
-
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- t['throws'](
- function () { ES.SetFunctionName(getNamelessFunction(), nonPropertyKey); },
- TypeError,
- debug(nonPropertyKey) + ' is not a Symbol or String'
- );
- });
-
- t.test('symbols', { skip: !v.hasSymbols || has(getNamelessFunction(), 'name') }, function (st) {
- var pairs = [
- [Symbol(), ''],
- [Symbol(undefined), ''],
- [Symbol(null), '[null]'],
- [Symbol(''), getInferredName ? '[]' : ''],
- [Symbol.iterator, '[Symbol.iterator]'],
- [Symbol('foo'), '[foo]']
- ];
- forEach(pairs, function (pair) {
- var sym = pair[0];
- var desc = pair[1];
- var f = getNamelessFunction();
- ES.SetFunctionName(f, sym);
- st.equal(f.name, desc, debug(sym) + ' yields a name of ' + debug(desc));
- });
-
- st.end();
- });
-
- var f = getNamelessFunction();
- t.test('when names are configurable', { skip: !functionsHaveConfigurableNames || has(f, 'name') }, function (st) {
- // without prefix
- st.notEqual(f.name, 'foo', 'precondition');
- ES.SetFunctionName(f, 'foo');
- st.equal(f.name, 'foo', 'function name is set without a prefix');
-
- // with prefix
- var g = getNamelessFunction();
- st.notEqual(g.name, 'pre- foo', 'precondition');
- ES.SetFunctionName(g, 'foo', 'pre-');
- st.equal(g.name, 'pre- foo', 'function name is set with a prefix');
-
- st.end();
- });
-
- t.end();
- });
-
- test('SetIntegrityLevel', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.SetIntegrityLevel(primitive); },
- TypeError,
- debug(primitive) + ' is not an Object'
- );
- });
-
- t['throws'](
- function () { ES.SetIntegrityLevel({}); },
- /^TypeError: Assertion failed: `level` must be `"sealed"` or `"frozen"`$/,
- '`level` must be `"sealed"` or `"frozen"`'
- );
-
- var O = { a: 1 };
- t.test('sealed', { skip: !Object.preventExtensions || noThrowOnStrictViolation }, function (st) {
- st.equal(ES.SetIntegrityLevel(O, 'sealed'), true);
- st['throws'](
- function () { O.b = 2; },
- /^TypeError: (Cannot|Can't) add property b, object is not extensible$/,
- 'sealing prevent new properties from being added'
- );
- O.a = 2;
- st.equal(O.a, 2, 'pre-frozen, existing properties are mutable');
- st.end();
- });
-
- t.test('frozen', { skip: !Object.freeze || noThrowOnStrictViolation }, function (st) {
- st.equal(ES.SetIntegrityLevel(O, 'frozen'), true);
- st['throws'](
- function () { O.a = 3; },
- /^TypeError: Cannot assign to read only property 'a' of /,
- 'freezing prevents existing properties from being mutated'
- );
- st.end();
- });
-
- t.end();
- });
-
- test('SpeciesConstructor', function (t) {
- t['throws'](function () { ES.SpeciesConstructor(null); }, TypeError);
- t['throws'](function () { ES.SpeciesConstructor(undefined); }, TypeError);
-
- var defaultConstructor = function Foo() {};
-
- t.equal(
- ES.SpeciesConstructor({ constructor: undefined }, defaultConstructor),
- defaultConstructor,
- 'undefined constructor returns defaultConstructor'
- );
-
- t['throws'](
- function () { return ES.SpeciesConstructor({ constructor: null }, defaultConstructor); },
- TypeError,
- 'non-undefined non-object constructor throws'
- );
-
- t.test('with Symbol.species', { skip: !hasSpecies }, function (st) {
- var Bar = function Bar() {};
- Bar[Symbol.species] = null;
-
- st.equal(
- ES.SpeciesConstructor(new Bar(), defaultConstructor),
- defaultConstructor,
- 'undefined/null Symbol.species returns default constructor'
- );
-
- var Baz = function Baz() {};
- Baz[Symbol.species] = Bar;
- st.equal(
- ES.SpeciesConstructor(new Baz(), defaultConstructor),
- Bar,
- 'returns Symbol.species constructor value'
- );
-
- Baz[Symbol.species] = {};
- st['throws'](
- function () { ES.SpeciesConstructor(new Baz(), defaultConstructor); },
- TypeError,
- 'throws when non-constructor non-null non-undefined species value found'
- );
-
- st.end();
- });
-
- t.end();
- });
-
- test('SplitMatch', function (t) {
- forEach(v.nonStrings, function (nonString) {
- t['throws'](
- function () { ES.SplitMatch(nonString, 0, ''); },
- TypeError,
- 'S: ' + debug(nonString) + ' is not a String'
- );
- t['throws'](
- function () { ES.SplitMatch('', 0, nonString); },
- TypeError,
- 'R: ' + debug(nonString) + ' is not a String'
- );
- });
-
- forEach(v.nonNumbers.concat(v.nonIntegerNumbers), function (nonIntegerNumber) {
- t['throws'](
- function () { ES.SplitMatch('', nonIntegerNumber, ''); },
- TypeError,
- 'q: ' + debug(nonIntegerNumber) + ' is not an integer'
- );
- });
-
- t.equal(ES.SplitMatch('abc', 0, 'a'), 1, '"a" is found at index 0, before index 1, in "abc"');
- t.equal(ES.SplitMatch('abc', 1, 'a'), false, '"a" is not found at index 1 in "abc"');
- t.equal(ES.SplitMatch('abc', 2, 'a'), false, '"a" is not found at index 2 in "abc"');
-
- t.equal(ES.SplitMatch('abc', 0, 'b'), false, '"a" is not found at index 0 in "abc"');
- t.equal(ES.SplitMatch('abc', 1, 'b'), 2, '"b" is found at index 1, before index 2, in "abc"');
- t.equal(ES.SplitMatch('abc', 2, 'b'), false, '"a" is not found at index 2 in "abc"');
-
- t.equal(ES.SplitMatch('abc', 0, 'c'), false, '"a" is not found at index 0 in "abc"');
- t.equal(ES.SplitMatch('abc', 1, 'c'), false, '"a" is not found at index 1 in "abc"');
- t.equal(ES.SplitMatch('abc', 2, 'c'), 3, '"c" is found at index 2, before index 3, in "abc"');
-
- t.equal(ES.SplitMatch('a', 0, 'ab'), false, 'R longer than S yields false');
-
- var s = 'a' + wholePoo + 'c';
- t.equal(ES.SplitMatch(s, 1, wholePoo), 3, debug(wholePoo) + ' is found at index 1, before index 3, in ' + debug(s));
-
- t.end();
- });
-
- test('StringCreate', function (t) {
- forEach(v.nonStrings, function (nonString) {
- t['throws'](
- function () { ES.StringCreate(nonString); },
- TypeError,
- debug(nonString) + ' is not a String'
- );
- });
-
- t.deepEqual(ES.StringCreate('foo', String.prototype), Object('foo'), '"foo" with `String.prototype` makes `Object("foo")');
-
- if ($setProto) {
- var proto = {};
- t.equal($getProto(ES.StringCreate('', proto)), proto, '[[Prototype]] is set as expected');
- } else {
- t['throws'](
- function () { ES.StringCreate('', proto); },
- SyntaxError,
- 'setting [[Prototype]] is not supported in this env'
- );
- }
-
- t.equal(ES.StringCreate('a', String.prototype).length, 'a'.length, 'length is preserved');
-
- t.end();
- });
-
- test('StringGetIndexProperty', function (t) {
- forEach(v.nonStrings.concat(v.strings), function (nonStringObjects) {
- t['throws'](
- function () { ES.StringGetIndexProperty(nonStringObjects); },
- TypeError,
- debug(nonStringObjects) + ' is not a boxed String Object'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- t['throws'](
- function () { ES.StringGetIndexProperty('', nonPropertyKey); },
- TypeError,
- debug(nonPropertyKey) + ' is not a Property Key'
- );
- });
-
- forEach(v.symbols, function (symbol) {
- t.equal(
- ES.StringGetIndexProperty(Object('a'), symbol),
- undefined,
- debug(symbol) + ' is a Property Key, but not a String'
- );
- });
-
- // a string where CanonicalNumericIndexString returns undefined, a non-integer, or -0
- forEach(['-1', '-0', 'undefined'].concat(v.nonIntegerNumbers), function (nonIndex) {
- var S = Object('abc');
- t.equal(
- ES.StringGetIndexProperty(S, String(nonIndex)),
- undefined,
- debug(nonIndex) + ' is not an index inside ' + debug(S)
- );
- });
-
- forEach(v.strings, function (str) {
- var S = Object(str);
- for (var i = 0; i < str.length; i += 1) {
- var desc = {
- '[[Configurable]]': false,
- '[[Enumerable]]': true,
- '[[Value]]': str.charAt(i),
- '[[Writable]]': false
- };
- t.deepEqual(
- ES.StringGetIndexProperty(S, String(i)),
- desc,
- 'boxed String ' + debug(S) + ' at index ' + debug(i) + ' is ' + debug(desc)
- );
- }
- t.equal(
- ES.StringGetIndexProperty(S, String(str.length)),
- undefined,
- 'boxed String ' + debug(S) + ' at OOB index ' + debug(str.length) + ' is `undefined'
- );
- });
-
- t.end();
- });
-
- test('SymbolDescriptiveString', function (t) {
- forEach(v.nonSymbolPrimitives.concat(v.objects), function (nonSymbol) {
- t['throws'](
- function () { ES.SymbolDescriptiveString(nonSymbol); },
- TypeError,
- debug(nonSymbol) + ' is not a Symbol'
- );
- });
-
- t.test('Symbols', { skip: !v.hasSymbols }, function (st) {
- st.equal(ES.SymbolDescriptiveString(Symbol()), 'Symbol()', 'undefined description');
- st.equal(ES.SymbolDescriptiveString(Symbol('')), 'Symbol()', 'empty string description');
- st.equal(ES.SymbolDescriptiveString(Symbol.iterator), 'Symbol(Symbol.iterator)', 'well-known symbol');
- st.equal(ES.SymbolDescriptiveString(Symbol('foo')), 'Symbol(foo)', 'string description');
-
- st.end();
- });
-
- t.end();
- });
-
- test('TestIntegrityLevel', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.TestIntegrityLevel(primitive); },
- TypeError,
- debug(primitive) + ' is not an Object'
- );
- });
-
- t['throws'](
- function () { ES.TestIntegrityLevel({ a: 1 }); },
- /^TypeError: Assertion failed: `level` must be `"sealed"` or `"frozen"`$/,
- '`level` must be `"sealed"` or `"frozen"`'
- );
-
- t.equal(ES.TestIntegrityLevel({ a: 1 }, 'sealed'), false, 'basic object is not sealed');
- t.equal(ES.TestIntegrityLevel({ a: 1 }, 'frozen'), false, 'basic object is not frozen');
-
- t.test('preventExtensions', { skip: !Object.preventExtensions }, function (st) {
- var o = Object.preventExtensions({ a: 1 });
- st.equal(ES.TestIntegrityLevel(o, 'sealed'), false, 'nonextensible object is not sealed');
- st.equal(ES.TestIntegrityLevel(o, 'frozen'), false, 'nonextensible object is not frozen');
-
- var empty = Object.preventExtensions({});
- st.equal(ES.TestIntegrityLevel(empty, 'sealed'), true, 'empty nonextensible object is sealed');
- st.equal(ES.TestIntegrityLevel(empty, 'frozen'), true, 'empty nonextensible object is frozen');
- st.end();
- });
-
- t.test('seal', { skip: !Object.seal }, function (st) {
- var o = Object.seal({ a: 1 });
- st.equal(ES.TestIntegrityLevel(o, 'sealed'), true, 'sealed object is sealed');
- st.equal(ES.TestIntegrityLevel(o, 'frozen'), false, 'sealed object is not frozen');
-
- var empty = Object.seal({});
- st.equal(ES.TestIntegrityLevel(empty, 'sealed'), true, 'empty sealed object is sealed');
- st.equal(ES.TestIntegrityLevel(empty, 'frozen'), true, 'empty sealed object is frozen');
-
- st.end();
- });
-
- t.test('freeze', { skip: !Object.freeze }, function (st) {
- var o = Object.freeze({ a: 1 });
- st.equal(ES.TestIntegrityLevel(o, 'sealed'), true, 'frozen object is sealed');
- st.equal(ES.TestIntegrityLevel(o, 'frozen'), true, 'frozen object is frozen');
-
- var empty = Object.freeze({});
- st.equal(ES.TestIntegrityLevel(empty, 'sealed'), true, 'empty frozen object is sealed');
- st.equal(ES.TestIntegrityLevel(empty, 'frozen'), true, 'empty frozen object is frozen');
-
- st.end();
- });
-
- t.end();
- });
-
- test('thisNumberValue', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.thisNumberValue(nonNumber); },
- TypeError,
- debug(nonNumber) + ' is not a Number'
- );
- });
-
- forEach(v.numbers, function (number) {
- t.equal(ES.thisNumberValue(number), number, debug(number) + ' is its own thisNumberValue');
- var obj = Object(number);
- t.equal(ES.thisNumberValue(obj), number, debug(obj) + ' is the boxed thisNumberValue');
- });
-
- t.end();
- });
-
- test('thisBooleanValue', function (t) {
- forEach(v.nonBooleans, function (nonBoolean) {
- t['throws'](
- function () { ES.thisBooleanValue(nonBoolean); },
- TypeError,
- debug(nonBoolean) + ' is not a Boolean'
- );
- });
-
- forEach(v.booleans, function (boolean) {
- t.equal(ES.thisBooleanValue(boolean), boolean, debug(boolean) + ' is its own thisBooleanValue');
- var obj = Object(boolean);
- t.equal(ES.thisBooleanValue(obj), boolean, debug(obj) + ' is the boxed thisBooleanValue');
- });
-
- t.end();
- });
-
- test('thisStringValue', function (t) {
- forEach(v.nonStrings, function (nonString) {
- t['throws'](
- function () { ES.thisStringValue(nonString); },
- TypeError,
- debug(nonString) + ' is not a String'
- );
- });
-
- forEach(v.strings, function (string) {
- t.equal(ES.thisStringValue(string), string, debug(string) + ' is its own thisStringValue');
- var obj = Object(string);
- t.equal(ES.thisStringValue(obj), string, debug(obj) + ' is the boxed thisStringValue');
- });
-
- t.end();
- });
-
- test('thisTimeValue', function (t) {
- forEach(v.primitives.concat(v.objects), function (nonDate) {
- t['throws'](
- function () { ES.thisTimeValue(nonDate); },
- TypeError,
- debug(nonDate) + ' is not a Date'
- );
- });
-
- forEach(v.timestamps, function (timestamp) {
- var date = new Date(timestamp);
-
- t.equal(ES.thisTimeValue(date), timestamp, debug(date) + ' is its own thisTimeValue');
- });
-
- t.end();
- });
-
- test('ToDateString', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.ToDateString(nonNumber); },
- TypeError,
- debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.ToDateString(NaN), 'Invalid Date', 'NaN becomes "Invalid Date"');
- var now = +new Date();
- t.equal(ES.ToDateString(now), Date(now), 'any timestamp becomes `Date(timestamp)`');
- t.end();
- });
-
- test('ToInt16', function (t) {
- t.equal(0, ES.ToInt16(NaN), 'NaN coerces to +0');
- forEach([0, Infinity], function (num) {
- t.equal(0, ES.ToInt16(num), num + ' returns +0');
- t.equal(0, ES.ToInt16(-num), '-' + num + ' returns +0');
- });
- t['throws'](function () { return ES.ToInt16(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
- t.equal(ES.ToInt16(0x100000000), 0, '2^32 returns +0');
- t.equal(ES.ToInt16(0x100000000 - 1), -1, '2^32 - 1 returns -1');
- t.equal(ES.ToInt16(0x80000000), 0, '2^31 returns +0');
- t.equal(ES.ToInt16(0x80000000 - 1), -1, '2^31 - 1 returns -1');
- t.equal(ES.ToInt16(0x10000), 0, '2^16 returns +0');
- t.equal(ES.ToInt16(0x10000 - 1), -1, '2^16 - 1 returns -1');
- t.end();
- });
-
- test('ToInt8', function (t) {
- t.equal(0, ES.ToInt8(NaN), 'NaN coerces to +0');
- forEach([0, Infinity], function (num) {
- t.equal(0, ES.ToInt8(num), num + ' returns +0');
- t.equal(0, ES.ToInt8(-num), '-' + num + ' returns +0');
- });
- t['throws'](function () { return ES.ToInt8(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
- t.equal(ES.ToInt8(0x100000000), 0, '2^32 returns +0');
- t.equal(ES.ToInt8(0x100000000 - 1), -1, '2^32 - 1 returns -1');
- t.equal(ES.ToInt8(0x80000000), 0, '2^31 returns +0');
- t.equal(ES.ToInt8(0x80000000 - 1), -1, '2^31 - 1 returns -1');
- t.equal(ES.ToInt8(0x10000), 0, '2^16 returns +0');
- t.equal(ES.ToInt8(0x10000 - 1), -1, '2^16 - 1 returns -1');
- t.equal(ES.ToInt8(0x100), 0, '2^8 returns +0');
- t.equal(ES.ToInt8(0x100 - 1), -1, '2^8 - 1 returns -1');
- t.equal(ES.ToInt8(0x10), 0x10, '2^4 returns 2^4');
- t.end();
- });
-
- test('ToNumber', function (t) {
- testToNumber(t, ES, ES.ToNumber);
-
- t.end();
- });
-
- test('ToUint8', function (t) {
- t.equal(0, ES.ToUint8(NaN), 'NaN coerces to +0');
- forEach([0, Infinity], function (num) {
- t.equal(0, ES.ToUint8(num), num + ' returns +0');
- t.equal(0, ES.ToUint8(-num), '-' + num + ' returns +0');
- });
- t['throws'](function () { return ES.ToUint8(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
- t.equal(ES.ToUint8(0x100000000), 0, '2^32 returns +0');
- t.equal(ES.ToUint8(0x100000000 - 1), 0x100 - 1, '2^32 - 1 returns 2^8 - 1');
- t.equal(ES.ToUint8(0x80000000), 0, '2^31 returns +0');
- t.equal(ES.ToUint8(0x80000000 - 1), 0x100 - 1, '2^31 - 1 returns 2^8 - 1');
- t.equal(ES.ToUint8(0x10000), 0, '2^16 returns +0');
- t.equal(ES.ToUint8(0x10000 - 1), 0x100 - 1, '2^16 - 1 returns 2^8 - 1');
- t.equal(ES.ToUint8(0x100), 0, '2^8 returns +0');
- t.equal(ES.ToUint8(0x100 - 1), 0x100 - 1, '2^8 - 1 returns 2^16 - 1');
- t.equal(ES.ToUint8(0x10), 0x10, '2^4 returns 2^4');
- t.equal(ES.ToUint8(0x10 - 1), 0x10 - 1, '2^4 - 1 returns 2^4 - 1');
- t.end();
- });
-
- test('ToUint8Clamp', function (t) {
- t.equal(0, ES.ToUint8Clamp(NaN), 'NaN coerces to +0');
- t.equal(0, ES.ToUint8Clamp(0), '+0 returns +0');
- t.equal(0, ES.ToUint8Clamp(-0), '-0 returns +0');
- t.equal(0, ES.ToUint8Clamp(-Infinity), '-Infinity returns +0');
- t['throws'](function () { return ES.ToUint8Clamp(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
- forEach([255, 256, 0x100000, Infinity], function (number) {
- t.equal(255, ES.ToUint8Clamp(number), number + ' coerces to 255');
- });
- t.equal(1, ES.ToUint8Clamp(1.49), '1.49 coerces to 1');
- t.equal(2, ES.ToUint8Clamp(1.5), '1.5 coerces to 2, because 2 is even');
- t.equal(2, ES.ToUint8Clamp(1.51), '1.51 coerces to 2');
-
- t.equal(2, ES.ToUint8Clamp(2.49), '2.49 coerces to 2');
- t.equal(2, ES.ToUint8Clamp(2.5), '2.5 coerces to 2, because 2 is even');
- t.equal(3, ES.ToUint8Clamp(2.51), '2.51 coerces to 3');
- t.end();
- });
-
- test('ToLength', function (t) {
- t['throws'](function () { return ES.ToLength(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws a TypeError');
- t.equal(3, ES.ToLength(v.coercibleObject), 'coercibleObject coerces to 3');
- t.equal(42, ES.ToLength('42.5'), '"42.5" coerces to 42');
- t.equal(7, ES.ToLength(7.3), '7.3 coerces to 7');
- forEach([-0, -1, -42, -Infinity], function (negative) {
- t.equal(0, ES.ToLength(negative), negative + ' coerces to +0');
- });
- t.equal(MAX_SAFE_INTEGER, ES.ToLength(MAX_SAFE_INTEGER + 1), '2^53 coerces to 2^53 - 1');
- t.equal(MAX_SAFE_INTEGER, ES.ToLength(MAX_SAFE_INTEGER + 3), '2^53 + 2 coerces to 2^53 - 1');
- t.end();
- });
-
- test('ToPropertyKey', function (t) {
- forEach(v.objects.concat(v.nonSymbolPrimitives), function (value) {
- t.equal(ES.ToPropertyKey(value), String(value), 'ToPropertyKey(value) === String(value) for non-Symbols');
- });
-
- forEach(v.symbols, function (symbol) {
- t.equal(
- ES.ToPropertyKey(symbol),
- symbol,
- 'ToPropertyKey(' + debug(symbol) + ') === ' + debug(symbol)
- );
- t.equal(
- ES.ToPropertyKey(Object(symbol)),
- symbol,
- 'ToPropertyKey(' + debug(Object(symbol)) + ') === ' + debug(symbol)
- );
- });
-
- t.end();
- });
-
- test('ToString', function (t) {
- forEach(v.objects.concat(v.nonSymbolPrimitives), function (item) {
- t.equal(ES.ToString(item), String(item), 'ES.ToString(' + debug(item) + ') ToStrings to String(' + debug(item) + ')');
- });
-
- t['throws'](function () { return ES.ToString(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
-
- forEach(v.symbols, function (symbol) {
- t['throws'](function () { return ES.ToString(symbol); }, TypeError, debug(symbol) + ' throws');
- });
- t.end();
- });
-
- test('Type', function (t) {
- t.equal(ES.Type(), 'Undefined', 'Type() is Undefined');
- t.equal(ES.Type(undefined), 'Undefined', 'Type(undefined) is Undefined');
- t.equal(ES.Type(null), 'Null', 'Type(null) is Null');
- t.equal(ES.Type(true), 'Boolean', 'Type(true) is Boolean');
- t.equal(ES.Type(false), 'Boolean', 'Type(false) is Boolean');
- t.equal(ES.Type(0), 'Number', 'Type(0) is Number');
- t.equal(ES.Type(NaN), 'Number', 'Type(NaN) is Number');
- t.equal(ES.Type('abc'), 'String', 'Type("abc") is String');
- t.equal(ES.Type(function () {}), 'Object', 'Type(function () {}) is Object');
- t.equal(ES.Type({}), 'Object', 'Type({}) is Object');
-
- t.test('symbols', { skip: !v.hasSymbols }, function (st) {
- st.equal(ES.Type(Symbol.iterator), 'Symbol', 'Type(Symbol.iterator) is Symbol');
- st.end();
- });
-
- t.end();
- });
-
- test('ValidateAndApplyPropertyDescriptor', function (t) {
- forEach(v.nonUndefinedPrimitives, function (nonUndefinedPrimitive) {
- t['throws'](
- function () { ES.ValidateAndApplyPropertyDescriptor(nonUndefinedPrimitive, '', false, v.genericDescriptor(), v.genericDescriptor()); },
- TypeError,
- 'O: ' + debug(nonUndefinedPrimitive) + ' is not undefined or an Object'
- );
- });
-
- forEach(v.nonBooleans, function (nonBoolean) {
- t['throws'](
- function () {
- return ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- null,
- nonBoolean,
- v.genericDescriptor(),
- v.genericDescriptor()
- );
- },
- TypeError,
- 'extensible: ' + debug(nonBoolean) + ' is not a Boolean'
- );
- });
-
- forEach(v.primitives, function (primitive) {
- // Desc must be a Property Descriptor
- t['throws'](
- function () {
- return ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- null,
- false,
- primitive,
- v.genericDescriptor()
- );
- },
- TypeError,
- 'Desc: ' + debug(primitive) + ' is not a Property Descriptor'
- );
- });
-
- forEach(v.nonUndefinedPrimitives, function (primitive) {
- // current must be undefined or a Property Descriptor
- t['throws'](
- function () {
- return ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- null,
- false,
- v.genericDescriptor(),
- primitive
- );
- },
- TypeError,
- 'current: ' + debug(primitive) + ' is not a Property Descriptor or undefined'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- // if O is an object, P must be a property key
- t['throws'](
- function () {
- return ES.ValidateAndApplyPropertyDescriptor(
- {},
- nonPropertyKey,
- false,
- v.genericDescriptor(),
- v.genericDescriptor()
- );
- },
- TypeError,
- 'P: ' + debug(nonPropertyKey) + ' is not a Property Key'
- );
- });
-
- t.test('current is undefined', function (st) {
- var propertyKey = 'howdy';
-
- st.test('generic descriptor', function (s2t) {
- var generic = v.genericDescriptor();
- generic['[[Enumerable]]'] = true;
- var O = {};
- ES.ValidateAndApplyPropertyDescriptor(undefined, propertyKey, true, generic);
- s2t.equal(
- ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, false, generic),
- false,
- 'when extensible is false, nothing happens'
- );
- s2t.deepEqual(O, {}, 'no changes applied when O is undefined or extensible is false');
- s2t.equal(
- ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, true, generic),
- true,
- 'operation is successful'
- );
- var expected = {};
- expected[propertyKey] = undefined;
- s2t.deepEqual(O, expected, 'generic descriptor has been defined as an own data property');
- s2t.end();
- });
-
- st.test('data descriptor', function (s2t) {
- var data = v.dataDescriptor();
- data['[[Enumerable]]'] = true;
-
- var O = {};
- s2t.equal(
- ES.ValidateAndApplyPropertyDescriptor(undefined, propertyKey, true, data),
- true,
- 'noop when O is undefined'
- );
- s2t.equal(
- ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, false, data),
- false,
- 'when extensible is false, nothing happens'
- );
- s2t.deepEqual(O, {}, 'no changes applied when O is undefined or extensible is false');
- s2t.equal(
- ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, true, data),
- true,
- 'operation is successful'
- );
- var expected = {};
- expected[propertyKey] = data['[[Value]]'];
- s2t.deepEqual(O, expected, 'data descriptor has been defined as an own data property');
- s2t.end();
- });
-
- st.test('accessor descriptor', { skip: !defineProperty.oDP }, function (s2t) {
- var count = 0;
- var accessor = v.accessorDescriptor();
- accessor['[[Enumerable]]'] = true;
- accessor['[[Get]]'] = function () {
- count += 1;
- return count;
- };
-
- var O = {};
- ES.ValidateAndApplyPropertyDescriptor(undefined, propertyKey, true, accessor);
- s2t.equal(
- ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, false, accessor),
- false,
- 'when extensible is false, nothing happens'
- );
- s2t.deepEqual(O, {}, 'no changes applied when O is undefined or extensible is false');
- s2t.equal(
- ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, true, accessor),
- true,
- 'operation is successful'
- );
- var expected = {};
- expected[propertyKey] = accessor['[[Get]]']() + 1;
- s2t.deepEqual(O, expected, 'accessor descriptor has been defined as an own accessor property');
- s2t.end();
- });
-
- st.end();
- });
-
- t.test('every field in Desc is absent', { skip: 'it is unclear if having no fields qualifies Desc to be a Property Descriptor' });
-
- forEach([v.dataDescriptor, v.accessorDescriptor, v.mutatorDescriptor], function (getDescriptor) {
- t.equal(
- ES.ValidateAndApplyPropertyDescriptor(undefined, 'property key', true, getDescriptor(), getDescriptor()),
- true,
- 'when Desc and current are the same, early return true'
- );
- });
-
- t.test('current is nonconfigurable', function (st) {
- // note: these must not be generic descriptors, or else the algorithm returns an early true
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- 'property key',
- true,
- v.descriptors.configurable(v.dataDescriptor()),
- v.descriptors.nonConfigurable(v.dataDescriptor())
- ),
- false,
- 'false if Desc is configurable'
- );
-
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- 'property key',
- true,
- v.descriptors.enumerable(v.dataDescriptor()),
- v.descriptors.nonEnumerable(v.dataDescriptor())
- ),
- false,
- 'false if Desc is Enumerable and current is not'
- );
-
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- 'property key',
- true,
- v.descriptors.nonEnumerable(v.dataDescriptor()),
- v.descriptors.enumerable(v.dataDescriptor())
- ),
- false,
- 'false if Desc is not Enumerable and current is'
- );
-
- var descLackingEnumerable = v.accessorDescriptor();
- delete descLackingEnumerable['[[Enumerable]]'];
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- 'property key',
- true,
- descLackingEnumerable,
- v.descriptors.enumerable(v.accessorDescriptor())
- ),
- true,
- 'not false if Desc lacks Enumerable'
- );
-
- st.end();
- });
-
- t.test('Desc and current: one is a data descriptor, one is not', { skip: !defineProperty || !getOwnPropertyDescriptor }, function (st) {
- // note: Desc must be configurable if current is nonconfigurable, to hit this branch
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- 'property key',
- true,
- v.descriptors.configurable(v.accessorDescriptor()),
- v.descriptors.nonConfigurable(v.dataDescriptor())
- ),
- false,
- 'false if current (data) is nonconfigurable'
- );
-
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- 'property key',
- true,
- v.descriptors.configurable(v.dataDescriptor()),
- v.descriptors.nonConfigurable(v.accessorDescriptor())
- ),
- false,
- 'false if current (not data) is nonconfigurable'
- );
-
- // one is data and one is not,
- // // if current is data, convert to accessor
- // // else convert to data
-
- var startsWithData = {
- 'property key': 42
- };
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- startsWithData,
- 'property key',
- true,
- v.descriptors.enumerable(v.descriptors.configurable(v.accessorDescriptor())),
- v.descriptors.enumerable(v.descriptors.configurable(v.dataDescriptor()))
- ),
- true,
- 'operation is successful: current is data, Desc is accessor'
- );
- var shouldBeAccessor = getOwnPropertyDescriptor(startsWithData, 'property key');
- st.equal(typeof shouldBeAccessor.get, 'function', 'has a getter');
-
- var key = 'property key';
- var startsWithAccessor = {};
- defineProperty(startsWithAccessor, key, {
- configurable: true,
- enumerable: true,
- get: function get() { return 42; }
- });
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- startsWithAccessor,
- key,
- true,
- v.descriptors.enumerable(v.descriptors.configurable(v.dataDescriptor())),
- v.descriptors.enumerable(v.descriptors.configurable(v.accessorDescriptor(42)))
- ),
- true,
- 'operation is successful: current is accessor, Desc is data'
- );
- var shouldBeData = getOwnPropertyDescriptor(startsWithAccessor, 'property key');
- st.deepEqual(shouldBeData, { configurable: true, enumerable: true, value: 42, writable: false }, 'is a data property');
-
- st.end();
- });
-
- t.test('Desc and current are both data descriptors', function (st) {
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- 'property key',
- true,
- v.descriptors.writable(v.dataDescriptor()),
- v.descriptors.nonWritable(v.descriptors.nonConfigurable(v.dataDescriptor()))
- ),
- false,
- 'false if frozen current and writable Desc'
- );
-
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- 'property key',
- true,
- v.descriptors.configurable({ '[[Value]]': 42 }),
- v.descriptors.nonWritable({ '[[Value]]': 7 })
- ),
- false,
- 'false if nonwritable current has a different value than Desc'
- );
-
- st.end();
- });
-
- t.test('current is nonconfigurable; Desc and current are both accessor descriptors', function (st) {
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- 'property key',
- true,
- v.mutatorDescriptor(),
- v.descriptors.nonConfigurable(v.mutatorDescriptor())
- ),
- false,
- 'false if both Sets are not equal'
- );
-
- st.equal(
- ES.ValidateAndApplyPropertyDescriptor(
- undefined,
- 'property key',
- true,
- v.accessorDescriptor(),
- v.descriptors.nonConfigurable(v.accessorDescriptor())
- ),
- false,
- 'false if both Gets are not equal'
- );
-
- st.end();
- });
-
- t.end();
- });
-};
-
-var es2016 = function ES2016(ES, ops, expectedMissing, skips) {
- es2015(ES, ops, expectedMissing, assign(assign({}, skips), {
- StringGetIndexProperty: true
- }));
- var test = makeTest(skips);
-
- test('IterableToArrayLike', function (t) {
- t.test('custom iterables', { skip: !v.hasSymbols }, function (st) {
- var O = {};
- O[Symbol.iterator] = function () {
- var i = -1;
- return {
- next: function () {
- i += 1;
- return {
- done: i >= 5,
- value: i
- };
- }
- };
- };
- st.deepEqual(
- ES.IterableToArrayLike(O),
- [0, 1, 2, 3, 4],
- 'Symbol.iterator method is called and values collected'
- );
-
- st.end();
- });
-
- t.deepEqual(ES.IterableToArrayLike('abc'), ['a', 'b', 'c'], 'a string of code units spreads');
- t.deepEqual(ES.IterableToArrayLike('💩'), ['💩'], 'a string of code points spreads');
- t.deepEqual(ES.IterableToArrayLike('a💩c'), ['a', '💩', 'c'], 'a string of code points and units spreads');
-
- var arr = [1, 2, 3];
- t.deepEqual(ES.IterableToArrayLike(arr), arr, 'an array becomes a similar array');
- t.notEqual(ES.IterableToArrayLike(arr), arr, 'an array becomes a different, but similar, array');
-
- var O = {};
- t.equal(ES.IterableToArrayLike(O), O, 'a non-iterable non-array non-string object is returned directly');
-
- t.end();
- });
-
- test('OrdinaryGetPrototypeOf', function (t) {
- t.test('values', { skip: !$getProto }, function (st) {
- st.equal(ES.OrdinaryGetPrototypeOf([]), Array.prototype, 'array [[Prototype]] is Array.prototype');
- st.equal(ES.OrdinaryGetPrototypeOf({}), Object.prototype, 'object [[Prototype]] is Object.prototype');
- st.equal(ES.OrdinaryGetPrototypeOf(/a/g), RegExp.prototype, 'regex [[Prototype]] is RegExp.prototype');
- st.equal(ES.OrdinaryGetPrototypeOf(Object('')), String.prototype, 'boxed string [[Prototype]] is String.prototype');
- st.equal(ES.OrdinaryGetPrototypeOf(Object(42)), Number.prototype, 'boxed number [[Prototype]] is Number.prototype');
- st.equal(ES.OrdinaryGetPrototypeOf(Object(true)), Boolean.prototype, 'boxed boolean [[Prototype]] is Boolean.prototype');
- if (v.hasSymbols) {
- st.equal(ES.OrdinaryGetPrototypeOf(Object(Symbol.iterator)), Symbol.prototype, 'boxed symbol [[Prototype]] is Symbol.prototype');
- }
- st.end();
- });
-
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.OrdinaryGetPrototypeOf(primitive); },
- TypeError,
- debug(primitive) + ' is not an Object'
- );
- });
- t.end();
- });
-
- test('OrdinarySetPrototypeOf', { skip: !$getProto || !$setProto }, function (t) {
- var a = [];
- var proto = {};
-
- t.equal(ES.OrdinaryGetPrototypeOf(a), Array.prototype, 'precondition');
- t.equal(ES.OrdinarySetPrototypeOf(a, proto), true, 'setting prototype is successful');
- t.equal(ES.OrdinaryGetPrototypeOf(a), proto, 'postcondition');
-
- t.end();
- });
-
- test('SameValueNonNumber', function (t) {
- var willThrow = [
- [3, 4],
- [NaN, 4],
- [4, ''],
- ['abc', true],
- [{}, false]
- ];
- forEach(willThrow, function (nums) {
- t['throws'](function () { return ES.SameValueNonNumber.apply(ES, nums); }, TypeError, 'value must be same type and non-number');
- });
-
- forEach(v.objects.concat(v.nonNumberPrimitives), function (val) {
- t.equal(val === val, ES.SameValueNonNumber(val, val), debug(val) + ' is SameValueNonNumber to itself');
- });
-
- t.end();
- });
-
- test('UTF16Encoding', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.UTF16Encoding(nonNumber); },
- TypeError,
- debug(nonNumber) + ' is not a Number'
- );
- });
-
- t['throws'](
- function () { ES.UTF16Encoding(-1); },
- TypeError,
- '-1 is < 0'
- );
-
- t['throws'](
- function () { ES.UTF16Encoding(0x10FFFF + 1); },
- TypeError,
- '0x10FFFF + 1 is > 0x10FFFF'
- );
-
- t.equal(ES.UTF16Encoding(0xD83D), leadingPoo, '0xD83D is the first half of ' + wholePoo);
- t.equal(ES.UTF16Encoding(0xDCA9), trailingPoo, '0xDCA9 is the last half of ' + wholePoo);
- t.equal(ES.UTF16Encoding(0x1F4A9), wholePoo, '0xDCA9 is the last half of ' + wholePoo);
-
- t.end();
- });
-
- test('UTF16Decode', function (t) {
- t['throws'](
- function () { ES.UTF16Decode('a'.charCodeAt(0), trailingPoo.charCodeAt(0)); },
- TypeError,
- '"a" is not a leading surrogate'
- );
- t['throws'](
- function () { ES.UTF16Decode(leadingPoo.charCodeAt(0), 'b'.charCodeAt(0)); },
- TypeError,
- '"b" is not a trailing surrogate'
- );
-
- t.equal(ES.UTF16Decode(leadingPoo.charCodeAt(0), trailingPoo.charCodeAt(0)), wholePoo);
-
- t.end();
- });
-};
-
-var es2017 = function ES2017(ES, ops, expectedMissing, skips) {
- es2016(ES, ops, expectedMissing, assign({}, skips, {
- EnumerableOwnNames: true,
- IterableToArrayLike: true
- }));
- var test = makeTest(skips);
-
- test('EnumerableOwnProperties', function (t) {
- var obj = testEnumerableOwnNames(t, function (O) {
- return ES.EnumerableOwnProperties(O, 'key');
- });
-
- t.deepEqual(
- ES.EnumerableOwnProperties(obj, 'value'),
- [obj.own],
- 'returns enumerable own values'
- );
-
- t.deepEqual(
- ES.EnumerableOwnProperties(obj, 'key+value'),
- [['own', obj.own]],
- 'returns enumerable own entries'
- );
-
- t.end();
- });
-
- test('IterableToList', function (t) {
- var customIterator = function () {
- var i = -1;
- return {
- next: function () {
- i += 1;
- return {
- done: i >= 5,
- value: i
- };
- }
- };
- };
-
- t.deepEqual(
- ES.IterableToList({}, customIterator),
- [0, 1, 2, 3, 4],
- 'iterator method is called and values collected'
- );
-
- t.test('Symbol support', { skip: !v.hasSymbols }, function (st) {
- st.deepEqual(ES.IterableToList('abc', String.prototype[Symbol.iterator]), ['a', 'b', 'c'], 'a string of code units spreads');
- st.deepEqual(ES.IterableToList('☃', String.prototype[Symbol.iterator]), ['☃'], 'a string of code points spreads');
-
- var arr = [1, 2, 3];
- st.deepEqual(ES.IterableToList(arr, arr[Symbol.iterator]), arr, 'an array becomes a similar array');
- st.notEqual(ES.IterableToList(arr, arr[Symbol.iterator]), arr, 'an array becomes a different, but similar, array');
-
- st.end();
- });
-
- t['throws'](
- function () { ES.IterableToList({}, void 0); },
- TypeError,
- 'non-function iterator method'
- );
-
- t.end();
- });
-
- test('StringGetOwnProperty', function (t) {
- forEach(v.nonStrings.concat(v.strings), function (nonBoxedString) {
- t['throws'](
- function () { ES.StringGetOwnProperty(nonBoxedString, '0'); },
- TypeError,
- debug(nonBoxedString) + ' is not a boxed String'
- );
- });
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- t['throws'](
- function () { ES.StringGetOwnProperty(Object(''), nonPropertyKey); },
- TypeError,
- debug(nonPropertyKey) + ' is not a Property Key'
- );
- });
-
- t.equal(ES.StringGetOwnProperty(Object(''), '0'), undefined, 'empty boxed string yields undefined');
-
- forEach(v.strings, function (string) {
- if (string) {
- var S = Object(string);
- for (var i = 0; i < string.length; i += 1) {
- var descriptor = ES.StringGetOwnProperty(S, String(i));
- t.deepEqual(
- descriptor,
- {
- '[[Configurable]]': false,
- '[[Enumerable]]': true,
- '[[Value]]': string.charAt(i),
- '[[Writable]]': false
- },
- debug(string) + ': property ' + debug(String(i)) + ': returns expected descriptor'
- );
- }
- }
- });
-
- t.end();
- });
-
- test('ToIndex', function (t) {
- t.equal(ES.ToIndex(), 0, 'no value gives +0');
- t.equal(ES.ToIndex(undefined), 0, 'undefined value gives +0');
- t.equal(ES.ToIndex(-0), 0, '-0 gives +0');
-
- t['throws'](function () { ES.ToIndex(-1); }, RangeError, 'negative numbers throw');
-
- t['throws'](function () { ES.ToIndex(MAX_SAFE_INTEGER + 1); }, RangeError, 'too large numbers throw');
-
- t.equal(ES.ToIndex(3), 3, 'numbers work');
- t.equal(ES.ToIndex(v.valueOfOnlyObject), 4, 'coercible objects are coerced');
-
- t.end();
- });
-};
-
-var es2018 = function ES2018(ES, ops, expectedMissing, skips) {
- es2017(ES, ops, expectedMissing, assign({}, skips, {
- EnumerableOwnProperties: true,
- GetSubstitution: true,
- IsPropertyDescriptor: true
- }));
- var test = makeTest(skips);
-
- test('CopyDataProperties', function (t) {
- t.test('first argument: target', function (st) {
- forEach(v.primitives, function (primitive) {
- st['throws'](
- function () { ES.CopyDataProperties(primitive, {}, []); },
- TypeError,
- debug(primitive) + ' is not an Object'
- );
- });
- st.end();
- });
-
- t.test('second argument: source', function (st) {
- var frozenTarget = Object.freeze ? Object.freeze({}) : {};
- forEach(v.nullPrimitives, function (nullish) {
- st.equal(
- ES.CopyDataProperties(frozenTarget, nullish, []),
- frozenTarget,
- debug(nullish) + ' "source" yields identical, unmodified target'
- );
- });
-
- forEach(v.nonNullPrimitives, function (objectCoercible) {
- var target = {};
- var result = ES.CopyDataProperties(target, objectCoercible, []);
- st.equal(result, target, 'result === target');
- st.deepEqual(keys(result), keys(Object(objectCoercible)), 'target ends up with keys of ' + debug(objectCoercible));
- });
-
- st.test('enumerable accessor property', { skip: !defineProperty.oDP }, function (s2t) {
- var target = {};
- var source = {};
- defineProperty(source, 'a', {
- enumerable: true,
- get: function () { return 42; }
- });
- var result = ES.CopyDataProperties(target, source, []);
- s2t.equal(result, target, 'result === target');
- s2t.deepEqual(result, { a: 42 }, 'target ends up with enumerable accessor of source');
- s2t.end();
- });
-
- st.end();
- });
-
- t.test('third argument: excludedItems', function (st) {
- forEach(v.objects.concat(v.primitives), function (nonArray) {
- st['throws'](
- function () { ES.CopyDataProperties({}, {}, nonArray); },
- TypeError,
- debug(nonArray) + ' is not an Array'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- st['throws'](
- function () { ES.CopyDataProperties({}, {}, [nonPropertyKey]); },
- TypeError,
- debug(nonPropertyKey) + ' is not a Property Key'
- );
- });
-
- var result = ES.CopyDataProperties({}, { a: 1, b: 2, c: 3 }, ['b']);
- st.deepEqual(keys(result).sort(), ['a', 'c'].sort(), 'excluded string keys are excluded');
-
- st.test('excluding symbols', { skip: !v.hasSymbols }, function (s2t) {
- var source = {};
- forEach(v.symbols, function (symbol) {
- source[symbol] = true;
- });
-
- var includedSymbols = v.symbols.slice(1);
- var excludedSymbols = v.symbols.slice(0, 1);
- var target = ES.CopyDataProperties({}, source, excludedSymbols);
-
- forEach(includedSymbols, function (symbol) {
- s2t.equal(has(target, symbol), true, debug(symbol) + ' is included');
- });
-
- forEach(excludedSymbols, function (symbol) {
- s2t.equal(has(target, symbol), false, debug(symbol) + ' is excluded');
- });
-
- s2t.end();
- });
-
- st.end();
- });
-
- // TODO: CopyDataProperties does not throw when copying fails
-
- t.end();
- });
-
- test('DateString', function (t) {
- forEach(v.nonNumbers.concat(NaN), function (nonNumberOrNaN) {
- t['throws'](
- function () { ES.DateString(nonNumberOrNaN); },
- TypeError,
- debug(nonNumberOrNaN) + ' is not a non-NaN Number'
- );
- });
-
- t.equal(ES.DateString(Date.UTC(2019, 8, 10, 7, 8, 9)), 'Tue Sep 10 2019');
- t.equal(ES.DateString(Date.UTC(2016, 1, 29, 7, 8, 9)), 'Mon Feb 29 2016'); // leap day
- t.end();
- });
-
- test('EnumerableOwnPropertyNames', function (t) {
- var obj = testEnumerableOwnNames(t, function (O) {
- return ES.EnumerableOwnPropertyNames(O, 'key');
- });
-
- t.deepEqual(
- ES.EnumerableOwnPropertyNames(obj, 'value'),
- [obj.own],
- 'returns enumerable own values'
- );
-
- t.deepEqual(
- ES.EnumerableOwnPropertyNames(obj, 'key+value'),
- [['own', obj.own]],
- 'returns enumerable own entries'
- );
-
- t.end();
- });
-
- test('GetSubstitution', function (t) {
- forEach(v.nonStrings, function (nonString) {
- t['throws'](
- function () { ES.GetSubstitution(nonString, '', 0, [], undefined, ''); },
- TypeError,
- '`matched`: ' + debug(nonString) + ' is not a String'
- );
-
- t['throws'](
- function () { ES.GetSubstitution('', nonString, 0, [], undefined, ''); },
- TypeError,
- '`str`: ' + debug(nonString) + ' is not a String'
- );
-
- t['throws'](
- function () { ES.GetSubstitution('', '', 0, [], undefined, nonString); },
- TypeError,
- '`replacement`: ' + debug(nonString) + ' is not a String'
- );
-
- t['throws'](
- function () { ES.GetSubstitution('', '', 0, [nonString], undefined, ''); },
- TypeError,
- '`captures`: ' + debug([nonString]) + ' is not an Array of strings'
- );
- });
-
- forEach(v.notNonNegativeIntegers, function (nonNonNegativeInteger) {
- t['throws'](
- function () { ES.GetSubstitution('', '', nonNonNegativeInteger, [], undefined, ''); },
- TypeError,
- '`position`: ' + debug(nonNonNegativeInteger) + ' is not a non-negative integer'
- );
- });
-
- forEach(v.nonArrays, function (nonArray) {
- t['throws'](
- function () { ES.GetSubstitution('', '', 0, nonArray, undefined, ''); },
- TypeError,
- '`captures`: ' + debug(nonArray) + ' is not an Array'
- );
- });
-
- t.equal(
- ES.GetSubstitution('def', 'abcdefghi', 3, [], undefined, '123'),
- '123',
- 'returns the substitution'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '$$2$'),
- '$2$',
- 'supports $$, and trailing $'
- );
-
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$&<'),
- '>abcdef<',
- 'supports $&'
- );
-
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$`<'),
- '><',
- 'supports $` at position 0'
- );
- t.equal(
- ES.GetSubstitution('def', 'abcdefghi', 3, [], undefined, '>$`<'),
- '>ab<',
- 'supports $` at position > 0'
- );
-
- t.equal(
- ES.GetSubstitution('def', 'abcdefghi', 7, [], undefined, ">$'<"),
- '><',
- "supports $' at a position where there's less than `matched.length` chars left"
- );
- t.equal(
- ES.GetSubstitution('def', 'abcdefghi', 3, [], undefined, ">$'<"),
- '>ghi<',
- "supports $' at a position where there's more than `matched.length` chars left"
- );
-
- for (var i = 0; i < 100; i += 1) {
- var captures = [];
- captures[i] = 'test';
- if (i > 0) {
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$' + i + '<'),
- '>undefined<',
- 'supports $' + i + ' with no captures'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$' + i),
- '>undefined',
- 'supports $' + i + ' at the end of the replacement, with no captures'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, undefined, '>$' + i + '<'),
- '><',
- 'supports $' + i + ' with a capture at that index'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, undefined, '>$' + i),
- '>',
- 'supports $' + i + ' at the end of the replacement, with a capture at that index'
- );
- }
- if (i < 10) {
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$0' + i + '<'),
- i === 0 ? '><' : '>undefined<',
- 'supports $0' + i + ' with no captures'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$0' + i),
- i === 0 ? '>' : '>undefined',
- 'supports $0' + i + ' at the end of the replacement, with no captures'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, undefined, '>$0' + i + '<'),
- '><',
- 'supports $0' + i + ' with a capture at that index'
- );
- t.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, undefined, '>$0' + i),
- '>',
- 'supports $0' + i + ' at the end of the replacement, with a capture at that index'
- );
- }
- }
-
- t.test('named captures', function (st) {
- var namedCaptures = {
- foo: 'foo!'
- };
-
- st.equal(
- ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, namedCaptures, 'a>$foo!> bitsN,
- debug(bigInt32) + ' >> ' + debug(bitsN) + ' is ' + debug(bigInt32 >> bitsN)
- );
- });
- });
-
- t.end();
- });
-
- test('BigInt::subtract', { skip: !hasBigInts }, function (t) {
- forEach(v.nonBigInts, function (nonBigInt) {
- t['throws'](
- function () { ES.BigInt.subtract(nonBigInt, $BigInt(0)); },
- TypeError,
- 'x: ' + debug(nonBigInt) + ' is not a BigInt'
- );
- t['throws'](
- function () { ES.BigInt.subtract($BigInt(0), nonBigInt); },
- TypeError,
- 'y: ' + debug(nonBigInt) + ' is not a BigInt'
- );
- });
-
- t.equal(ES.BigInt.subtract($BigInt(0), $BigInt(0)), $BigInt(0), '0n - 0n is 0n');
-
- forEach(v.bigints, function (bigint) {
- t.equal(ES.BigInt.subtract(bigint, $BigInt(0)), bigint, debug(bigint) + ' - 0n produces ' + bigint);
- t.equal(ES.BigInt.subtract(bigint, $BigInt(1)), bigint - $BigInt(1), debug(bigint) + ' - 1n produces ' + (bigint + $BigInt(1)));
- t.equal(ES.BigInt.subtract(bigint, $BigInt(42)), bigint - $BigInt(42), debug(bigint) + ' - 42n produces ' + (bigint - $BigInt(42)));
- });
-
- t.end();
- });
-
- test('BigInt::toString', function (t) {
- forEach(v.nonBigInts, function (nonBigInt) {
- t['throws'](
- function () { ES.BigInt.toString(nonBigInt); },
- TypeError,
- debug(nonBigInt) + ' is not a BigInt'
- );
- });
-
- forEach(v.bigints, function (bigint) {
- t.equal(ES.BigInt.toString(bigint), String(bigint), debug(bigint) + ' stringifies to ' + bigint);
- });
-
- t.end();
- });
-
- test('BigInt::unaryMinus', function (t) {
- forEach(v.nonBigInts, function (nonBigInt) {
- t['throws'](
- function () { ES.BigInt.unaryMinus(nonBigInt); },
- TypeError,
- debug(nonBigInt) + ' is not a BigInt'
- );
- });
-
- t.test('actual BigInts', { skip: !hasBigInts }, function (st) {
- forEach(v.bigints, function (bigint) {
- st.equal(ES.BigInt.unaryMinus(bigint), -bigint, debug(bigint) + ' produces -' + debug(bigint));
- });
- st.end();
- });
-
- t.end();
- });
-
- test('BigInt::unsignedRightShift', { skip: !hasBigInts }, function (t) {
- forEach(v.nonBigInts, function (nonBigInt) {
- t['throws'](
- function () { ES.BigInt.unsignedRightShift(nonBigInt, $BigInt(0)); },
- TypeError,
- 'x: ' + debug(nonBigInt) + ' is not a BigInt'
- );
- t['throws'](
- function () { ES.BigInt.unsignedRightShift($BigInt(0), nonBigInt); },
- TypeError,
- 'y: ' + debug(nonBigInt) + ' is not a BigInt'
- );
- });
-
- forEach([0].concat(v.int32s), function (int32) {
- var bigInt32 = $BigInt(int32);
- forEach([1, 3, 5, 31, 32, 33], function (bits) {
- var bitsN = $BigInt(bits);
- t['throws'](
- function () { ES.BigInt.unsignedRightShift(bigInt32, bitsN); },
- TypeError,
- debug(bigInt32) + ' >>> ' + debug(bitsN) + ' throws'
- );
- });
- });
-
- t.end();
- });
-
- test('BigIntBitwiseOp', { skip: !hasBigInts }, function (t) {
- t['throws'](
- function () { ES.BigIntBitwiseOp('invalid', BigInt(0), BigInt(0)); },
- TypeError,
- 'throws with an invalid op'
- );
-
- t.equal(ES.BigIntBitwiseOp('&', BigInt(1), BigInt(2)), BigInt(1) & BigInt(2));
- t.equal(ES.BigIntBitwiseOp('|', BigInt(1), BigInt(2)), BigInt(1) | BigInt(2));
- t.equal(ES.BigIntBitwiseOp('^', BigInt(1), BigInt(2)), BigInt(1) ^ BigInt(2));
-
- t.end();
- });
-
- test('BinaryAnd', function (t) {
- t.equal(ES.BinaryAnd(0, 0), 0);
- t.equal(ES.BinaryAnd(0, 1), 0);
- t.equal(ES.BinaryAnd(1, 0), 0);
- t.equal(ES.BinaryAnd(1, 1), 1);
-
- forEach(v.nonIntegerNumbers.concat(v.nonNumberPrimitives, v.objects), function (nonBit) {
- t['throws'](
- function () { ES.BinaryAnd(0, nonBit); },
- TypeError
- );
- t['throws'](
- function () { ES.BinaryAnd(nonBit, 1); },
- TypeError
- );
- });
- t.end();
- });
-
- test('BinaryOr', function (t) {
- t.equal(ES.BinaryOr(0, 0), 0);
- t.equal(ES.BinaryOr(0, 1), 1);
- t.equal(ES.BinaryOr(1, 0), 1);
- t.equal(ES.BinaryOr(1, 1), 1);
-
- forEach(v.nonIntegerNumbers.concat(v.nonNumberPrimitives, v.objects), function (nonBit) {
- t['throws'](
- function () { ES.BinaryOr(0, nonBit); },
- TypeError
- );
- t['throws'](
- function () { ES.BinaryOr(nonBit, 1); },
- TypeError
- );
- });
- t.end();
- });
-
- test('BinaryXor', function (t) {
- t.equal(ES.BinaryXor(0, 0), 0);
- t.equal(ES.BinaryXor(0, 1), 1);
- t.equal(ES.BinaryXor(1, 0), 1);
- t.equal(ES.BinaryXor(1, 1), 0);
-
- forEach(v.nonIntegerNumbers.concat(v.nonNumberPrimitives, v.objects), function (nonBit) {
- t['throws'](
- function () { ES.BinaryXor(0, nonBit); },
- TypeError
- );
- t['throws'](
- function () { ES.BinaryXor(nonBit, 1); },
- TypeError
- );
- });
- t.end();
- });
-
- test('CodePointAt', function (t) {
- t['throws'](
- function () { ES.CodePointAt('abc', -1); },
- TypeError,
- 'requires an index >= 0'
- );
- t['throws'](
- function () { ES.CodePointAt('abc', 3); },
- TypeError,
- 'requires an index < string length'
- );
-
- t.deepEqual(ES.CodePointAt('abc', 0), {
- '[[CodePoint]]': 'a',
- '[[CodeUnitCount]]': 1,
- '[[IsUnpairedSurrogate]]': false
- });
- t.deepEqual(ES.CodePointAt('abc', 1), {
- '[[CodePoint]]': 'b',
- '[[CodeUnitCount]]': 1,
- '[[IsUnpairedSurrogate]]': false
- });
- t.deepEqual(ES.CodePointAt('abc', 2), {
- '[[CodePoint]]': 'c',
- '[[CodeUnitCount]]': 1,
- '[[IsUnpairedSurrogate]]': false
- });
-
- var strWithHalfPoo = 'a' + leadingPoo + 'c';
- var strWithWholePoo = 'a' + wholePoo + 'd';
-
- t.deepEqual(ES.CodePointAt(strWithHalfPoo, 0), {
- '[[CodePoint]]': 'a',
- '[[CodeUnitCount]]': 1,
- '[[IsUnpairedSurrogate]]': false
- });
- t.deepEqual(ES.CodePointAt(strWithHalfPoo, 1), {
- '[[CodePoint]]': leadingPoo,
- '[[CodeUnitCount]]': 1,
- '[[IsUnpairedSurrogate]]': true
- });
- t.deepEqual(ES.CodePointAt(strWithHalfPoo, 2), {
- '[[CodePoint]]': 'c',
- '[[CodeUnitCount]]': 1,
- '[[IsUnpairedSurrogate]]': false
- });
-
- t.deepEqual(ES.CodePointAt(strWithWholePoo, 0), {
- '[[CodePoint]]': 'a',
- '[[CodeUnitCount]]': 1,
- '[[IsUnpairedSurrogate]]': false
- });
- t.deepEqual(ES.CodePointAt(strWithWholePoo, 1), {
- '[[CodePoint]]': wholePoo,
- '[[CodeUnitCount]]': 2,
- '[[IsUnpairedSurrogate]]': false
- });
- t.deepEqual(ES.CodePointAt(strWithWholePoo, 2), {
- '[[CodePoint]]': trailingPoo,
- '[[CodeUnitCount]]': 1,
- '[[IsUnpairedSurrogate]]': true
- });
- t.deepEqual(ES.CodePointAt(strWithWholePoo, 3), {
- '[[CodePoint]]': 'd',
- '[[CodeUnitCount]]': 1,
- '[[IsUnpairedSurrogate]]': false
- });
-
- t.end();
- });
-
- test('CopyDataProperties', function (t) {
- t.test('first argument: target', function (st) {
- forEach(v.primitives, function (primitive) {
- st['throws'](
- function () { ES.CopyDataProperties(primitive, {}, []); },
- TypeError,
- debug(primitive) + ' is not an Object'
- );
- });
- st.end();
- });
-
- t.test('second argument: source', function (st) {
- var frozenTarget = Object.freeze ? Object.freeze({}) : {};
- forEach(v.nullPrimitives, function (nullish) {
- st.equal(
- ES.CopyDataProperties(frozenTarget, nullish, []),
- frozenTarget,
- debug(nullish) + ' "source" yields identical, unmodified target'
- );
- });
-
- forEach(v.nonNullPrimitives, function (objectCoercible) {
- var target = {};
- var result = ES.CopyDataProperties(target, objectCoercible, []);
- st.equal(result, target, 'result === target');
- st.deepEqual(keys(result), keys(Object(objectCoercible)), 'target ends up with keys of ' + debug(objectCoercible));
- });
-
- st.test('enumerable accessor property', { skip: !defineProperty.oDP }, function (s2t) {
- var target = {};
- var source = {};
- defineProperty(source, 'a', {
- enumerable: true,
- get: function () { return 42; }
- });
- var result = ES.CopyDataProperties(target, source, []);
- s2t.equal(result, target, 'result === target');
- s2t.deepEqual(result, { a: 42 }, 'target ends up with enumerable accessor of source');
- s2t.end();
- });
-
- st.end();
- });
-
- t.test('third argument: excludedItems', function (st) {
- forEach(v.objects.concat(v.primitives), function (nonArray) {
- st['throws'](
- function () { ES.CopyDataProperties({}, {}, nonArray); },
- TypeError,
- debug(nonArray) + ' is not an Array'
- );
- });
-
- forEach(v.nonPropertyKeys, function (nonPropertyKey) {
- st['throws'](
- function () { ES.CopyDataProperties({}, {}, [nonPropertyKey]); },
- TypeError,
- debug(nonPropertyKey) + ' is not a Property Key'
- );
- });
-
- var result = ES.CopyDataProperties({}, { a: 1, b: 2, c: 3 }, ['b']);
- st.deepEqual(keys(result).sort(), ['a', 'c'].sort(), 'excluded string keys are excluded');
-
- st.test('excluding symbols', { skip: !v.hasSymbols }, function (s2t) {
- var source = {};
- forEach(v.symbols, function (symbol) {
- source[symbol] = true;
- });
-
- var includedSymbols = v.symbols.slice(1);
- var excludedSymbols = v.symbols.slice(0, 1);
- var target = ES.CopyDataProperties({}, source, excludedSymbols);
-
- forEach(includedSymbols, function (symbol) {
- s2t.equal(has(target, symbol), true, debug(symbol) + ' is included');
- });
-
- forEach(excludedSymbols, function (symbol) {
- s2t.equal(has(target, symbol), false, debug(symbol) + ' is excluded');
- });
-
- s2t.end();
- });
-
- st.end();
- });
-
- // TODO: CopyDataProperties throws when copying fails
-
- t.end();
- });
-
- test('GetIterator', function (t) {
- try {
- ES.GetIterator({}, null);
- } catch (e) {
- t.ok(e.message.indexOf('Assertion failed: `hint` must be one of \'sync\' or \'async\'' >= 0));
- }
-
- var arr = [1, 2];
- testIterator(t, ES.GetIterator(arr), arr);
-
- testIterator(t, ES.GetIterator('abc'), 'abc'.split(''));
-
- t.test('Symbol.iterator', { skip: !v.hasSymbols }, function (st) {
- var m = new Map();
- m.set(1, 'a');
- m.set(2, 'b');
-
- testIterator(st, ES.GetIterator(m), [[1, 'a'], [2, 'b']]);
-
- st.end();
- });
-
- t.test('Symbol.asyncIterator', { skip: !v.hasSymbols || !Symbol.asyncIterator }, function (st) {
- try {
- ES.GetIterator(arr, 'async');
- } catch (e) {
- st.ok(e.message.indexOf("async from sync iterators aren't currently supported") >= 0);
- }
-
- var it = {
- next: function () {
- return Promise.resolve({
- done: true
- });
- }
- };
- var obj = {};
- obj[Symbol.asyncIterator] = function () {
- return it;
- };
-
- st.equal(ES.GetIterator(obj, 'async'), it);
-
- st.end();
- });
-
- t.end();
- });
-
- var unclampedUnsignedIntegerTypes = [
- 'Int8',
- 'Int16',
- 'Int32'
- ];
- var clampedTypes = [
- 'Uint8C'
- ];
- var unclampedSignedIntegerTypes = [
- 'Uint8',
- 'Uint16',
- 'Uint32'
- ];
- var unclampedIntegerTypes = unclampedUnsignedIntegerTypes.concat(unclampedSignedIntegerTypes);
- var floatTypes = [
- 'Float32',
- 'Float64'
- ];
- var integerTypes = unclampedIntegerTypes.concat(clampedTypes, floatTypes);
- var bigIntTypes = [
- 'BigInt64',
- 'BigUint64'
- ];
- var numberTypes = floatTypes.concat(integerTypes);
- var nonIntegerTypes = floatTypes.concat(bigIntTypes);
- var unsignedElementTypes = unclampedSignedIntegerTypes.concat([
- 'BigUint64'
- ]);
- var signedElementTypes = unclampedUnsignedIntegerTypes;
-
- test('IsBigIntElementType', function (t) {
- forEach(bigIntTypes, function (type) {
- t.equal(
- ES.IsBigIntElementType(type),
- true,
- debug(type) + ' is a BigInt element type'
- );
- });
-
- forEach(numberTypes, function (type) {
- t.equal(
- ES.IsBigIntElementType(type),
- false,
- debug(type) + ' is not a BigInt element type'
- );
- });
-
- t.end();
- });
-
- test('IsUnsignedElementType', function (t) {
- forEach(unsignedElementTypes, function (type) {
- t.equal(
- ES.IsUnsignedElementType(type),
- true,
- debug(type) + ' is an unsigned element type'
- );
- });
-
- forEach(signedElementTypes, function (type) {
- t.equal(
- ES.IsUnsignedElementType(type),
- false,
- debug(type) + ' is not an unsigned element type'
- );
- });
-
- t.end();
- });
-
- test('IsUnclampedIntegerElementType', function (t) {
- forEach(unclampedIntegerTypes, function (type) {
- t.equal(
- ES.IsUnclampedIntegerElementType(type),
- true,
- debug(type) + ' is an unclamped integer element type'
- );
- });
-
- forEach(clampedTypes.concat(nonIntegerTypes), function (type) {
- t.equal(
- ES.IsUnclampedIntegerElementType(type),
- false,
- debug(type) + ' is not an unclamped integer element type'
- );
- });
-
- t.end();
- });
-
- test('IsNonNegativeInteger', function (t) {
- forEach(v.notNonNegativeIntegers, function (nonIntegerNumber) {
- t.equal(
- ES.IsNonNegativeInteger(nonIntegerNumber),
- false,
- debug(nonIntegerNumber) + ' is not a non-negative integer'
- );
- });
-
- forEach(v.zeroes.concat(v.integerNumbers), function (nonNegativeInteger) {
- t.equal(
- ES.IsNonNegativeInteger(nonNegativeInteger),
- true,
- debug(nonNegativeInteger) + ' is a non-negative integer'
- );
- });
-
- t.end();
- });
-
- test('IsNoTearConfiguration', function (t) {
- forEach(unclampedIntegerTypes, function (type) {
- t.equal(
- ES.IsNoTearConfiguration(type),
- true,
- debug(type) + ' with any order is a no-tear configuration'
- );
- });
-
- forEach(bigIntTypes, function (type) {
- t.equal(
- ES.IsNoTearConfiguration(type, 'Init'),
- false,
- debug(type) + ' with ' + debug('Init') + ' is not a no-tear configuration'
- );
-
- t.equal(
- ES.IsNoTearConfiguration(type, 'Unordered'),
- false,
- debug(type) + ' with ' + debug('Unordered') + ' is not a no-tear configuration'
- );
-
- t.equal(
- ES.IsNoTearConfiguration(type),
- true,
- debug(type) + ' with any other order is a no-tear configuration'
- );
- });
-
- forEach(clampedTypes, function (type) {
- t.equal(
- ES.IsNoTearConfiguration(type),
- false,
- debug(type) + ' with any order is not a no-tear configuration'
- );
- });
-
- t.end();
- });
-
- test('LengthOfArrayLike', function (t) {
- forEach(v.primitives, function (primitive) {
- t['throws'](
- function () { ES.LengthOfArrayLike(primitive); },
- TypeError,
- debug(primitive) + ' is not an Object'
- );
- });
-
- t.equal(ES.LengthOfArrayLike([]), 0);
- t.equal(ES.LengthOfArrayLike([1]), 1);
- t.equal(ES.LengthOfArrayLike({ length: 42 }), 42);
-
- t.end();
- });
-
- test('Number::add', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.add(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.add(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.Number.add(+Infinity, +Infinity), +Infinity, '+∞ + +∞ is +∞');
- t.equal(ES.Number.add(-Infinity, -Infinity), -Infinity, '-∞ + -∞ is -∞');
- t.equal(ES.Number.add(+Infinity, -Infinity), NaN, '+∞ + -∞ is NaN');
- t.equal(ES.Number.add(-Infinity, +Infinity), NaN, '-∞ + +∞ is NaN');
-
- t.equal(ES.Number.add(+0, +0), +0, '0 + 0 is +0');
- t.equal(ES.Number.add(+0, -0), +0, '0 + -0 is +0');
- t.equal(ES.Number.add(-0, +0), +0, '-0 + 0 is +0');
- t.equal(ES.Number.add(-0, -0), -0, '-0 + -0 is -0');
-
- forEach(v.numbers, function (number) {
- if (number !== 0) {
- t.equal(ES.Number.add(number, 0), number, debug(number) + ' + 0 adds to ' + number);
- }
- t.equal(ES.Number.add(number, 1), number + 1, debug(number) + ' + 1 adds to ' + (number + 1));
- t.equal(ES.Number.add(1, number), number + 1, '1 + ' + debug(number) + ' adds to ' + (number + 1));
- t.equal(ES.Number.add(number, -42), number - 42, debug(number) + ' + -42 adds to ' + (number - 42));
- t.equal(ES.Number.add(-42, number), number - 42, '-42 + ' + debug(number) + ' adds to ' + (number - 42));
- });
-
- t.end();
- });
-
- test('Number::bitwiseAND', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.bitwiseAND(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.bitwiseAND(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.Number.bitwiseAND(1, 2), 1 & 2);
-
- t.end();
- });
-
- test('Number::bitwiseNOT', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.bitwiseNOT(nonNumber); },
- TypeError,
- debug(nonNumber) + ' is not a Number'
- );
- });
-
- forEach(v.int32s, function (int32) {
- t.equal(ES.Number.bitwiseNOT(int32), ~int32, debug(int32) + ' becomes ~' + debug(int32));
- });
-
- t.end();
- });
-
- test('Number::bitwiseOR', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.bitwiseOR(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.bitwiseOR(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.Number.bitwiseOR(1, 2), 1 | 2);
-
- t.end();
- });
-
- test('Number::bitwiseXOR', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.bitwiseXOR(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.bitwiseXOR(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.Number.bitwiseXOR(1, 2), 1 ^ 2);
-
- t.end();
- });
-
- test('Number::divide', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.divide(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.divide(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.Number.divide(Infinity, Infinity), NaN, '∞ / ∞ is NaN');
- t.equal(ES.Number.divide(-Infinity, Infinity), NaN, '-∞ / ∞ is NaN');
- t.equal(ES.Number.divide(Infinity, -Infinity), NaN, '∞ / -∞ is NaN');
- t.equal(ES.Number.divide(-Infinity, -Infinity), NaN, '-∞ / -∞ is NaN');
-
- t.equal(ES.Number.divide(NaN, NaN), NaN, 'NaN / NaN is NaN');
-
- t.equal(ES.Number.divide(+Infinity, +0), +Infinity, '+∞ / +0 is +∞');
- t.equal(ES.Number.divide(-Infinity, -0), +Infinity, '-∞ / -0 is +∞');
- t.equal(ES.Number.divide(+Infinity, -0), -Infinity, '+∞ / -0 is -∞');
- t.equal(ES.Number.divide(-Infinity, +0), -Infinity, '-∞ / +0 is -∞');
-
- t.equal(ES.Number.divide(+0, +Infinity), +0, '+0 / +∞ is +0');
- t.equal(ES.Number.divide(-0, -Infinity), +0, '-0 / -∞ is +0');
- t.equal(ES.Number.divide(-0, +Infinity), -0, '-0 / +∞ is -0');
- t.equal(ES.Number.divide(+0, -Infinity), -0, '+0 / -∞ is -0');
-
- forEach(v.numbers, function (number) {
- if (number !== 0 && isFinite(number)) {
- t.equal(ES.Number.divide(number, number), 1, debug(number) + ' divided by itself is 1');
- t.equal(ES.Number.divide(number, 2), number / 2, debug(number) + ' divided by 2 is half itself');
- }
- });
-
- t.end();
- });
-
- test('Number::equal', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.equal(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.equal(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.Number.equal(Infinity, Infinity), true, '∞ === ∞');
- t.equal(ES.Number.equal(-Infinity, Infinity), false, '-∞ !== ∞');
- t.equal(ES.Number.equal(Infinity, -Infinity), false, '∞ !== -∞');
- t.equal(ES.Number.equal(-Infinity, -Infinity), true, '-∞ === -∞');
-
- t.equal(ES.Number.equal(NaN, NaN), false, 'NaN !== NaN');
-
- t.equal(ES.Number.equal(Infinity, 0), false, '∞ !== 0');
- t.equal(ES.Number.equal(-Infinity, -0), false, '-∞ !== -0');
- t.equal(ES.Number.equal(Infinity, -0), false, '∞ !== -0');
- t.equal(ES.Number.equal(-Infinity, 0), false, '-∞ !== 0');
-
- t.equal(ES.Number.equal(+0, +0), true, '+0 === +0');
- t.equal(ES.Number.equal(+0, -0), true, '+0 === -0');
- t.equal(ES.Number.equal(-0, +0), true, '-0 === +0');
- t.equal(ES.Number.equal(-0, -0), true, '-0 === -0');
-
- forEach(v.numbers, function (number) {
- if (isFinite(number)) {
- t.equal(ES.Number.equal(number, number), true, debug(number) + ' is equal to itself');
- t.equal(ES.Number.equal(number, number + 1), false, debug(number) + ' is not equal to itself plus 1');
- }
- });
-
- t.end();
- });
-
- test('Number::exponentiate', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.exponentiate(nonNumber, 0); },
- TypeError,
- 'base: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.exponentiate(0, nonNumber); },
- TypeError,
- 'exponent: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.Number.exponentiate(0, 42), 0, '+0 ** 42 is +0');
- t.equal(ES.Number.exponentiate(0, -42), Infinity, '+0 ** 42 is +∞');
- t.equal(ES.Number.exponentiate(-0, 42), 0, '-0 ** 42 is +0');
- t.equal(ES.Number.exponentiate(-0, 41), -0, '-0 ** 41 is -0');
- t.equal(ES.Number.exponentiate(-0, -42), Infinity, '-0 ** 42 is +∞');
- t.equal(ES.Number.exponentiate(-0, -41), -Infinity, '-0 ** 41 is -∞');
-
- t.equal(ES.Number.exponentiate(Infinity, 0), 1, '+∞ ** 0 is 1');
- t.equal(ES.Number.exponentiate(Infinity, -0), 1, '+∞ ** -0 is 1');
- t.equal(ES.Number.exponentiate(-Infinity, 0), 1, '-∞ ** 0 is 1');
- t.equal(ES.Number.exponentiate(-Infinity, -0), 1, '-∞ ** -0 is 1');
-
- t.equal(ES.Number.exponentiate(Infinity, 1), Infinity, '+∞ ** 1 is +∞');
- t.equal(ES.Number.exponentiate(Infinity, 2), Infinity, '+∞ ** 2 is +∞');
- t.equal(ES.Number.exponentiate(Infinity, -1), +0, '+∞ ** -1 is +0');
- t.equal(ES.Number.exponentiate(Infinity, -2), +0, '+∞ ** -2 is +0');
-
- t.equal(ES.Number.exponentiate(-Infinity, 1), -Infinity, '-∞ ** 1 is -∞');
- t.equal(ES.Number.exponentiate(-Infinity, 2), Infinity, '-∞ ** 2 is +∞');
- t.equal(ES.Number.exponentiate(-Infinity, -1), -0, '-∞ ** --1 is -0');
- t.equal(ES.Number.exponentiate(-Infinity, -2), +0, '-∞ ** --2 is +0');
-
- t.equal(ES.Number.exponentiate(1.1, Infinity), Infinity, '1.1 ** +∞ is +∞');
- t.equal(ES.Number.exponentiate(1.1, -Infinity), 0, '1.1 ** -∞ is +0');
- t.equal(ES.Number.exponentiate(-1.1, Infinity), Infinity, '-1.1 ** +∞ is +∞');
- t.equal(ES.Number.exponentiate(-1.1, -Infinity), 0, '-1.1 ** -∞ is +0');
-
- t.equal(ES.Number.exponentiate(1, Infinity), NaN, '1 ** +∞ is NaN');
- t.equal(ES.Number.exponentiate(1, -Infinity), NaN, '1 ** -∞ is NaN');
- t.equal(ES.Number.exponentiate(-1, Infinity), NaN, '-1 ** +∞ is NaN');
- t.equal(ES.Number.exponentiate(-1, -Infinity), NaN, '-1 ** -∞ is NaN');
-
- t.equal(ES.Number.exponentiate(0.9, Infinity), 0, '0.9 ** +∞ is +0');
- t.equal(ES.Number.exponentiate(0.9, -Infinity), Infinity, '0.9 ** -∞ is ∞');
- t.equal(ES.Number.exponentiate(-0.9, Infinity), 0, '-0.9 ** +∞ is +0');
- t.equal(ES.Number.exponentiate(-0.9, -Infinity), Infinity, '-0.9 ** -∞ is +∞');
-
- forEach(v.numbers.concat(NaN), function (number) {
- t.equal(ES.Number.exponentiate(number, NaN), NaN, debug(number) + ' ** NaN is NaN');
-
- if (number !== 0) {
- t.equal(ES.Number.exponentiate(number, 0), 1, debug(number) + ' ** +0 is 1');
- t.equal(ES.Number.exponentiate(number, -0), 1, debug(number) + ' ** -0 is 1');
- t.equal(ES.Number.exponentiate(NaN, number), NaN, 'NaN ** ' + debug(number) + ' is NaN');
- }
-
- if (number !== 0 && isFinite(number)) {
- t.equal(ES.Number.equal(number, number), true, debug(number) + ' is equal to itself');
- t.equal(ES.Number.equal(number, number + 1), false, debug(number) + ' is not equal to itself plus 1');
- }
- });
-
- t.end();
- });
-
- test('Number::leftShift', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.leftShift(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.leftShift(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- forEach([0].concat(v.int32s), function (int32) {
- forEach([1, 3, 5, 31, 32, 33], function (bits) {
- t.equal(ES.Number.leftShift(int32, bits), int32 << bits, debug(int32) + ' << ' + bits + ' is ' + debug(int32 << bits));
- });
- });
-
- t.end();
- });
-
- test('Number::lessThan', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.lessThan(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.lessThan(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.Number.lessThan(+0, -0), false, '+0 < -0 is false');
- t.equal(ES.Number.lessThan(+0, +0), false, '+0 < +0 is false');
- t.equal(ES.Number.lessThan(-0, +0), false, '-0 < +0 is false');
- t.equal(ES.Number.lessThan(-0, -0), false, '-0 < -0 is false');
-
- t.equal(ES.Number.lessThan(NaN, NaN), undefined, 'NaN < NaN is undefined');
-
- t.equal(ES.Number.lessThan(+Infinity, +Infinity), false, '+∞ < +∞ is false');
- t.equal(ES.Number.lessThan(+Infinity, -Infinity), false, '+∞ < -∞ is false');
- t.equal(ES.Number.lessThan(-Infinity, +Infinity), true, '-∞ < +∞ is true');
- t.equal(ES.Number.lessThan(-Infinity, -Infinity), false, '-∞ < -∞ is false');
-
- forEach(v.numbers.concat(v.infinities), function (number) {
- t.equal(ES.Number.lessThan(NaN, number), undefined, 'NaN < ' + debug(number) + ' is undefined');
- t.equal(ES.Number.lessThan(number, NaN), undefined, debug(number) + ' < NaN is undefined');
-
- t.equal(ES.Number.lessThan(number, number), false, debug(number) + ' is not less than itself');
-
- if (isFinite(number)) {
- t.equal(ES.Number.lessThan(number, number + 1), true, debug(number) + ' < ' + debug(number + 1) + ' is true');
- t.equal(ES.Number.lessThan(number + 1, number), false, debug(number + 1) + ' < ' + debug(number) + ' is false');
-
- t.equal(ES.Number.lessThan(Infinity, number), false, '+∞ < ' + debug(number) + ' is false');
- t.equal(ES.Number.lessThan(number, Infinity), true, debug(number) + ' < +∞ is true');
- t.equal(ES.Number.lessThan(-Infinity, number), true, '-∞ < ' + debug(number) + ' is true');
- t.equal(ES.Number.lessThan(number, -Infinity), false, debug(number) + ' < -∞ is false');
- }
- });
-
- t.end();
- });
-
- test('Number::multiply', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.multiply(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.multiply(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- forEach([+0, -0, 1, -1], function (x) {
- var expected = x === 0 ? NaN : Infinity;
- t.equal(ES.Number.multiply(Infinity, x), expected, '+∞ * ' + debug(x) + ' is ' + debug(expected));
- t.equal(ES.Number.multiply(x, Infinity), expected, debug(x) + ' * +∞ is ' + debug(expected));
- t.equal(ES.Number.multiply(-Infinity, x), -expected, '-∞ * ' + debug(x) + ' is ' + debug(expected));
- t.equal(ES.Number.multiply(x, -Infinity), -expected, debug(x) + ' * -∞ is ' + debug(expected));
- });
-
- t.equal(ES.Number.multiply(Infinity, Infinity), Infinity, '+∞ * +∞ is +∞');
- t.equal(ES.Number.multiply(Infinity, -Infinity), -Infinity, '+∞ * -∞ is -∞');
- t.equal(ES.Number.multiply(-Infinity, Infinity), -Infinity, '-∞ * +∞ is -∞');
- t.equal(ES.Number.multiply(-Infinity, -Infinity), Infinity, '-∞ * -∞ is +∞');
-
- t.equal(ES.Number.multiply(+0, +0), +0, '0 * 0 is +0');
- t.equal(ES.Number.multiply(+0, -0), -0, '0 * -0 is -0');
- t.equal(ES.Number.multiply(-0, +0), -0, '-0 * 0 is -0');
- t.equal(ES.Number.multiply(-0, -0), +0, '-0 * -0 is +0');
-
- forEach(v.numbers.concat(NaN), function (number) {
- t.equal(ES.Number.multiply(NaN, number), NaN, 'NaN * ' + debug(number) + ' is NaN');
- t.equal(ES.Number.multiply(number, NaN), NaN, debug(number) + ' * NaN is NaN');
-
- if (number !== 0 && isFinite(number)) {
- t.equal(ES.Number.multiply(number, 0), number > 0 ? 0 : -0, debug(number) + ' * +0 produces ' + (number > 0 ? '+0' : '-0'));
- t.equal(ES.Number.multiply(0, number), number > 0 ? 0 : -0, '+0 * ' + debug(number) + ' produces ' + (number > 0 ? '+0' : '-0'));
- t.equal(ES.Number.multiply(number, -0), number > 0 ? -0 : 0, debug(number) + ' * -0 produces ' + (number > 0 ? '-0' : '+0'));
- t.equal(ES.Number.multiply(-0, number), number > 0 ? -0 : 0, '-0 * ' + debug(number) + ' produces ' + (number > 0 ? '-0' : '+0'));
- t.equal(ES.Number.multiply(number, 1), number, debug(number) + ' * 1 produces itself');
- t.equal(ES.Number.multiply(number, -42), number * -42, debug(number) + ' * -42 produces ' + (number - 42));
- }
- });
-
- t.end();
- });
-
- test('Number::remainder', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.remainder(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.remainder(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.Number.remainder(NaN, NaN), NaN, 'NaN % NaN is NaN');
-
- t.equal(ES.Number.remainder(+0, +0), NaN, '+0 % +0 is NaN');
- t.equal(ES.Number.remainder(+0, -0), NaN, '+0 % -0 is NaN');
- t.equal(ES.Number.remainder(-0, +0), NaN, '-0 % +0 is NaN');
- t.equal(ES.Number.remainder(-0, -0), NaN, '-0 % -0 is NaN');
-
- forEach(v.numbers, function (number) {
- t.equal(ES.Number.remainder(number, NaN), NaN, debug(number) + ' % NaN is NaN');
- t.equal(ES.Number.remainder(NaN, number), NaN, 'NaN % ' + debug(number) + ' is NaN');
-
- t.equal(ES.Number.remainder(Infinity, number), NaN, '+∞ % ' + debug(number) + ' is NaN');
- t.equal(ES.Number.remainder(-Infinity, number), NaN, '-∞ % ' + debug(number) + ' is NaN');
- t.equal(ES.Number.remainder(number, 0), NaN, debug(number) + ' % +0 is NaN');
- t.equal(ES.Number.remainder(number, -0), NaN, debug(number) + ' % -0 is NaN');
-
- if (isFinite(number)) {
- t.equal(ES.Number.remainder(number, Infinity), number, debug(number) + ' % +∞ is ' + debug(number));
- t.equal(ES.Number.remainder(number, -Infinity), number, debug(number) + ' % -∞ is ' + debug(number));
- if (number !== 0) {
- t.equal(ES.Number.remainder(0, number), 0, '+0 % ' + debug(number) + ' is ' + debug(number));
- t.equal(ES.Number.remainder(-0, number), -0, '-0 % ' + debug(number) + ' is ' + debug(number));
- t.looseEqual(ES.Number.remainder(number * 2, number), 0, debug(number) + ' % ' + debug(number * 2) + ' is 0');
- }
- }
- });
-
- t.end();
- });
-
- test('Number::sameValue', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.sameValue(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.sameValue(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.ok(ES.Number.sameValue(NaN, NaN), true, 'NaN is the sameValue as NaN');
-
- t.equal(ES.Number.sameValue(+0, +0), true, '+0 is sameValue as +0');
- t.equal(ES.Number.sameValue(+0, -0), false, '+0 is not sameValue as -0');
- t.equal(ES.Number.sameValue(-0, +0), false, '-0 is not sameValue as +0');
- t.equal(ES.Number.sameValue(-0, -0), true, '-0 is sameValue as -0');
-
- forEach(v.numbers, function (number) {
- t.ok(ES.Number.sameValue(number, number), debug(number) + ' is the sameValue as itself');
- });
-
- t.end();
- });
-
- test('Number::sameValueZero', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.sameValueZero(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.sameValueZero(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.ok(ES.Number.sameValueZero(NaN, NaN), true, 'NaN is the sameValueZero as NaN');
-
- t.equal(ES.Number.sameValueZero(+0, +0), true, '+0 is sameValueZero as +0');
- t.equal(ES.Number.sameValueZero(+0, -0), true, '+0 is sameValueZero as -0');
- t.equal(ES.Number.sameValueZero(-0, +0), true, '-0 is sameValueZero as +0');
- t.equal(ES.Number.sameValueZero(-0, -0), true, '-0 is sameValueZero as -0');
-
- forEach(v.numbers, function (number) {
- t.ok(ES.Number.sameValueZero(number, number), debug(number) + ' is the sameValueZero as itself');
- });
-
- t.end();
- });
-
- test('Number::signedRightShift', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.signedRightShift(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.signedRightShift(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- forEach([0].concat(v.int32s), function (int32) {
- forEach([1, 3, 5, 31, 32, 33], function (bits) {
- t.equal(ES.Number.signedRightShift(int32, bits), int32 >> bits, debug(int32) + ' >> ' + bits + ' is ' + debug(int32 >> bits));
- });
- });
-
- t.end();
- });
-
- test('Number::subtract', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.subtract(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.subtract(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.Number.subtract(+0, +0), +0, '0 - 0 is +0');
- t.equal(ES.Number.subtract(+0, -0), +0, '0 - -0 is +0');
- t.equal(ES.Number.subtract(-0, +0), -0, '-0 - 0 is -0');
- t.equal(ES.Number.subtract(-0, -0), +0, '-0 - -0 is +0');
-
- forEach(v.numbers, function (number) {
- if (number !== 0) {
- t.equal(ES.Number.subtract(number, 0), number, debug(number) + ' - 0 produces ' + number);
- }
- t.equal(ES.Number.subtract(number, 1), number - 1, debug(number) + ' - 1 produces ' + (number + 1));
- t.equal(ES.Number.subtract(number, 42), number - 42, debug(number) + ' - 42 produces ' + (number - 42));
- });
-
- t.end();
- });
-
- test('Number::toString', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.toString(nonNumber); },
- TypeError,
- debug(nonNumber) + ' is not a Number'
- );
- });
-
- forEach(v.numbers, function (number) {
- t.equal(ES.Number.toString(number), String(number), debug(number) + ' stringifies to ' + number);
- });
-
- t.end();
- });
-
- test('Number::unaryMinus', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.unaryMinus(nonNumber); },
- TypeError,
- debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.Number.unaryMinus(NaN), NaN, 'NaN produces NaN');
-
- forEach(v.numbers, function (number) {
- t.equal(ES.Number.unaryMinus(number), -number, debug(number) + ' produces -' + debug(number));
- });
-
- t.end();
- });
-
- test('Number::unsignedRightShift', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.Number.unsignedRightShift(nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.Number.unsignedRightShift(0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- forEach([0].concat(v.int32s), function (int32) {
- forEach([1, 3, 5, 31, 32, 33], function (bits) {
- t.equal(ES.Number.unsignedRightShift(int32, bits), int32 >>> bits, debug(int32) + ' >>> ' + bits + ' is ' + debug(int32 >>> bits));
- });
- });
-
- t.end();
- });
-
- test('NumberToBigInt', function (t) {
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.NumberToBigInt(nonNumber); },
- TypeError,
- debug(nonNumber) + ' is not a Number'
- );
- });
-
- forEach(v.nonIntegerNumbers, function (nonIntegerNumber) {
- t['throws'](
- function () { ES.NumberToBigInt(nonIntegerNumber); },
- RangeError,
- debug(nonIntegerNumber) + ' is not an integer'
- );
- });
-
- t.test('actual BigInts', { skip: !hasBigInts }, function (st) {
- forEach(v.integerNumbers, function (int) {
- if (int >= 1e17) {
- // BigInt(1e17) throws on node v10.4 - v10.8
- try {
- st.equal(ES.NumberToBigInt(int), $BigInt(int), debug(int) + ' becomes ' + debug($BigInt(int)));
- } catch (e) {
- st['throws'](
- function () { $BigInt(int); },
- RangeError,
- debug(int) + ' is too large on this engine to convert into a BigInt'
- );
- }
- } else {
- st.equal(ES.NumberToBigInt(int), $BigInt(int), debug(int) + ' becomes ' + debug($BigInt(int)));
- }
- });
- st.end();
- });
-
- t.end();
- });
-
- test('OrdinaryObjectCreate', function (t) {
- forEach(v.nonNullPrimitives, function (value) {
- t['throws'](
- function () { ES.OrdinaryObjectCreate(value); },
- TypeError,
- debug(value) + ' is not null, or an object'
- );
- });
-
- t.test('proto arg', function (st) {
- var Parent = function Parent() {};
- Parent.prototype.foo = {};
- var child = ES.OrdinaryObjectCreate(Parent.prototype);
- st.equal(child instanceof Parent, true, 'child is instanceof Parent');
- st.equal(child.foo, Parent.prototype.foo, 'child inherits properties from Parent.prototype');
-
- st.end();
- });
-
- t.test('internal slots arg', function (st) {
- st.doesNotThrow(function () { ES.OrdinaryObjectCreate({}, []); }, 'an empty slot list is valid');
-
- st['throws'](
- function () { ES.OrdinaryObjectCreate({}, ['a']); },
- SyntaxError,
- 'internal slots are not supported'
- );
-
- st.end();
- });
-
- t.test('null proto', { skip: !$setProto }, function (st) {
- st.equal('toString' in {}, true, 'normal objects have toString');
- st.equal('toString' in ES.OrdinaryObjectCreate(null), false, 'makes a null object');
-
- st.end();
- });
-
- t.test('null proto when no native Object.create', { skip: $setProto }, function (st) {
- st['throws'](
- function () { ES.OrdinaryObjectCreate(null); },
- SyntaxError,
- 'without a native Object.create, can not create null objects'
- );
-
- st.end();
- });
-
- t.end();
- });
-
- test('SameValueNonNumeric', function (t) {
- var willThrow = [
- [3, 4],
- [NaN, 4],
- [4, ''],
- ['abc', true],
- [{}, false]
- ];
- forEach(willThrow, function (nums) {
- t['throws'](function () { return ES.SameValueNonNumeric.apply(ES, nums); }, TypeError, 'value must be same type and non-number');
- });
-
- forEach(v.objects.concat(v.nonNumberPrimitives), function (val) {
- t.equal(val === val, ES.SameValueNonNumeric(val, val), debug(val) + ' is SameValueNonNumeric to itself');
- });
-
- t.end();
- });
-
- test('StringPad', function (t) {
- t.equal(ES.StringPad('a', 3, undefined, 'start'), ' a');
- t.equal(ES.StringPad('a', 3, undefined, 'end'), 'a ');
- t.equal(ES.StringPad('a', 3, '0', 'start'), '00a');
- t.equal(ES.StringPad('a', 3, '0', 'end'), 'a00');
- t.equal(ES.StringPad('a', 3, '012', 'start'), '01a');
- t.equal(ES.StringPad('a', 3, '012', 'end'), 'a01');
- t.equal(ES.StringPad('a', 7, '012', 'start'), '012012a');
- t.equal(ES.StringPad('a', 7, '012', 'end'), 'a012012');
-
- t.end();
- });
-
- test('thisBigIntValue', { skip: !hasBigInts }, function (t) {
- t.equal(ES.thisBigIntValue(BigInt(42)), BigInt(42));
- t.equal(ES.thisBigIntValue(Object(BigInt(42))), BigInt(42));
-
- forEach(v.nonBigInts, function (nonBigInt) {
- t['throws'](
- function () { ES.thisBigIntValue(nonBigInt); },
- TypeError,
- debug(nonBigInt) + ' is not a BigInt'
- );
- });
-
- t.end();
- });
-
- test('ToInteger', function (t) {
- forEach([0, -0, NaN], function (num) {
- t.equal(0, ES.ToInteger(num), debug(num) + ' returns +0');
- });
- forEach([Infinity, 42], function (num) {
- t.equal(num, ES.ToInteger(num), debug(num) + ' returns itself');
- t.equal(-num, ES.ToInteger(-num), '-' + debug(num) + ' returns itself');
- });
- t.equal(3, ES.ToInteger(Math.PI), 'pi returns 3');
- t['throws'](function () { return ES.ToInteger(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws');
- t.end();
- });
-
- test('ToNumber', function (t) {
- testToNumber(t, ES, ES.ToNumber);
-
- forEach(v.bigints, function (bigInt) {
- t['throws'](
- function () { ES.ToNumber(bigInt); },
- TypeError,
- 'ToNumber of ' + debug(bigInt) + ' throws'
- );
-
- var boxed = Object(bigInt);
- t['throws'](
- function () { ES.ToNumber(boxed); },
- TypeError,
- 'ToNumber of ' + debug(boxed) + ' throws'
- );
- });
-
- t.end();
- });
-
- test('UTF16DecodeSurrogatePair', function (t) {
- t['throws'](
- function () { ES.UTF16DecodeSurrogatePair('a'.charCodeAt(0), trailingPoo.charCodeAt(0)); },
- TypeError,
- '"a" is not a leading surrogate'
- );
- t['throws'](
- function () { ES.UTF16DecodeSurrogatePair(leadingPoo.charCodeAt(0), 'b'.charCodeAt(0)); },
- TypeError,
- '"b" is not a trailing surrogate'
- );
-
- t.equal(ES.UTF16DecodeSurrogatePair(leadingPoo.charCodeAt(0), trailingPoo.charCodeAt(0)), wholePoo);
-
- t.end();
- });
-
- test('NumberBitwiseOp', function (t) {
- t['throws'](
- function () { ES.NumberBitwiseOp('invalid', 0, 0); },
- TypeError,
- 'throws with an invalid op'
- );
-
- forEach(v.nonNumbers, function (nonNumber) {
- t['throws'](
- function () { ES.NumberBitwiseOp('&', nonNumber, 0); },
- TypeError,
- 'x: ' + debug(nonNumber) + ' is not a Number'
- );
- t['throws'](
- function () { ES.NumberBitwiseOp('&', 0, nonNumber); },
- TypeError,
- 'y: ' + debug(nonNumber) + ' is not a Number'
- );
- });
-
- t.equal(ES.NumberBitwiseOp('&', 1, 2), 1 & 2);
- t.equal(ES.NumberBitwiseOp('|', 1, 2), 1 | 2);
- t.equal(ES.NumberBitwiseOp('^', 1, 2), 1 ^ 2);
-
- t.end();
- });
-
- test('ToNumeric', function (t) {
- testToNumber(t, ES, ES.ToNumeric);
-
- t.test('BigInts', { skip: !hasBigInts }, function (st) {
- st.equal(ES.ToNumeric(BigInt(42)), BigInt(42), debug(BigInt(42)) + ' is ' + debug(BigInt(42)));
- st.equal(ES.ToNumeric(Object(BigInt(42))), BigInt(42), debug(Object(BigInt(42))) + ' is ' + debug(BigInt(42)));
-
- var valueOf = { valueOf: function () { return BigInt(7); } };
- st.equal(ES.ToNumeric(valueOf), valueOf.valueOf(), debug(valueOf) + ' is ' + debug(valueOf.valueOf()));
-
- var toPrimitive = {};
- var value = BigInt(-2);
- toPrimitive[Symbol.toPrimitive] = function () { return value; };
- st.equal(ES.ToNumeric(toPrimitive), value, debug(toPrimitive) + ' is ' + debug(value));
-
- st.end();
- });
-
- t.end();
- });
-
- test('UTF16DecodeString', function (t) {
- forEach(v.nonStrings, function (nonString) {
- t['throws'](
- function () { ES.UTF16DecodeString(nonString); },
- TypeError,
- debug(nonString) + ' is not a String'
- );
- });
-
- t.deepEqual(ES.UTF16DecodeString('abc'), ['a', 'b', 'c'], 'code units get split');
- t.deepEqual(ES.UTF16DecodeString('a' + wholePoo + 'c'), ['a', wholePoo, 'c'], 'code points get split too');
-
- t.end();
- });
-};
-
-module.exports = {
- es5: es5,
- es2015: es2015,
- es2016: es2016,
- es2017: es2017,
- es2018: es2018,
- es2019: es2019,
- es2020: es2020
-};
diff --git a/node_modules/es-set-tostringtag/.eslintrc b/node_modules/es-set-tostringtag/.eslintrc
new file mode 100644
index 000000000..2612ed8fe
--- /dev/null
+++ b/node_modules/es-set-tostringtag/.eslintrc
@@ -0,0 +1,13 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "rules": {
+ "new-cap": [2, {
+ "capIsNewExceptions": [
+ "GetIntrinsic",
+ ],
+ }],
+ },
+}
diff --git a/node_modules/es-set-tostringtag/CHANGELOG.md b/node_modules/es-set-tostringtag/CHANGELOG.md
new file mode 100644
index 000000000..fe54f321e
--- /dev/null
+++ b/node_modules/es-set-tostringtag/CHANGELOG.md
@@ -0,0 +1,33 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [v2.0.1](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.0...v2.0.1) - 2023-01-05
+
+### Fixed
+
+- [Fix] move `has` to prod deps [`#2`](https://github.com/es-shims/es-set-tostringtag/issues/2)
+
+### Commits
+
+- [Dev Deps] update `@ljharb/eslint-config` [`b9eecd2`](https://github.com/es-shims/es-set-tostringtag/commit/b9eecd23c10b7b43ba75089ac8ff8cc6b295798b)
+
+## [v2.0.0](https://github.com/es-shims/es-set-tostringtag/compare/v1.0.0...v2.0.0) - 2022-12-21
+
+### Commits
+
+- [Tests] refactor tests [`168dcfb`](https://github.com/es-shims/es-set-tostringtag/commit/168dcfbb535c279dc48ccdc89419155125aaec18)
+- [Breaking] do not set toStringTag if it is already set [`226ab87`](https://github.com/es-shims/es-set-tostringtag/commit/226ab874192c625d9e5f0e599d3f60d2b2aa83b5)
+- [New] add `force` option to set even if already set [`1abd4ec`](https://github.com/es-shims/es-set-tostringtag/commit/1abd4ecb282f19718c4518284b0293a343564505)
+
+## v1.0.0 - 2022-12-21
+
+### Commits
+
+- Initial implementation, tests, readme [`a0e1147`](https://github.com/es-shims/es-set-tostringtag/commit/a0e11473f79a233b46374525c962ea1b4d42418a)
+- Initial commit [`ffd4aff`](https://github.com/es-shims/es-set-tostringtag/commit/ffd4afffbeebf29aff0d87a7cfc3f7844e09fe68)
+- npm init [`fffe5bd`](https://github.com/es-shims/es-set-tostringtag/commit/fffe5bd1d1146d084730a387a9c672371f4a8fff)
+- Only apps should have lockfiles [`d363871`](https://github.com/es-shims/es-set-tostringtag/commit/d36387139465623e161a15dbd39120537f150c62)
diff --git a/node_modules/es-set-tostringtag/LICENSE b/node_modules/es-set-tostringtag/LICENSE
new file mode 100644
index 000000000..c2a8460a3
--- /dev/null
+++ b/node_modules/es-set-tostringtag/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 ECMAScript Shims
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/es-set-tostringtag/README.md b/node_modules/es-set-tostringtag/README.md
new file mode 100644
index 000000000..d2887e1a5
--- /dev/null
+++ b/node_modules/es-set-tostringtag/README.md
@@ -0,0 +1,43 @@
+# es-set-tostringtag [![Version Badge][npm-version-svg]][package-url]
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+A helper to optimistically set Symbol.toStringTag, when possible.
+
+Most common usage:
+```js
+var assert = require('assert');
+var setToStringTag = require('es-set-tostringtag');
+
+var obj = {};
+
+assert.equal(Object.prototype.toString.call(obj), '[object Object]');
+
+setToStringTag(obj, 'tagged!');
+
+assert.equal(Object.prototype.toString.call(obj), '[object tagged!]');
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+[package-url]: https://npmjs.com/package/es-set-tostringtag
+[npm-version-svg]: https://versionbadg.es/es-shims/es-set-tostringtag.svg
+[deps-svg]: https://david-dm.org/es-shims/es-set-tostringtag.svg
+[deps-url]: https://david-dm.org/es-shims/es-set-tostringtag
+[dev-deps-svg]: https://david-dm.org/es-shims/es-set-tostringtag/dev-status.svg
+[dev-deps-url]: https://david-dm.org/es-shims/es-set-tostringtag#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/es-set-tostringtag.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/es-set-tostringtag.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/es-set-tostringtag.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=es-set-tostringtag
+[codecov-image]: https://codecov.io/gh/es-shims/es-set-tostringtag/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/es-shims/es-set-tostringtag/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/es-set-tostringtag
+[actions-url]: https://github.com/es-shims/es-set-tostringtag/actions
diff --git a/node_modules/es-set-tostringtag/index.js b/node_modules/es-set-tostringtag/index.js
new file mode 100644
index 000000000..7a7cb7797
--- /dev/null
+++ b/node_modules/es-set-tostringtag/index.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
+
+var hasToStringTag = require('has-tostringtag/shams')();
+var has = require('has');
+
+var toStringTag = hasToStringTag ? Symbol.toStringTag : null;
+
+module.exports = function setToStringTag(object, value) {
+ var overrideIfSet = arguments.length > 2 && arguments[2] && arguments[2].force;
+ if (toStringTag && (overrideIfSet || !has(object, toStringTag))) {
+ if ($defineProperty) {
+ $defineProperty(object, toStringTag, {
+ configurable: true,
+ enumerable: false,
+ value: value,
+ writable: false
+ });
+ } else {
+ object[toStringTag] = value; // eslint-disable-line no-param-reassign
+ }
+ }
+};
diff --git a/node_modules/es-set-tostringtag/package.json b/node_modules/es-set-tostringtag/package.json
new file mode 100644
index 000000000..3e32aafea
--- /dev/null
+++ b/node_modules/es-set-tostringtag/package.json
@@ -0,0 +1,69 @@
+{
+ "name": "es-set-tostringtag",
+ "version": "2.0.1",
+ "description": "A helper to optimistically set Symbol.toStringTag, when possible.",
+ "main": "index.js",
+ "exports": {
+ ".": "./index.js",
+ "./package.json": "./package.json"
+ },
+ "sideEffects": false,
+ "scripts": {
+ "prepack": "npmignore --auto --commentLines=autogenerated",
+ "prepublishOnly": "safe-publish-latest",
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prelint": "evalmd README.md",
+ "lint": "eslint --ext=js,mjs .",
+ "pretest": "npm run lint",
+ "tests-only": "tape 'test/**/*.js'",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/es-shims/es-set-tostringtag.git"
+ },
+ "author": "Jordan Harband ",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/es-shims/es-set-tostringtag/issues"
+ },
+ "homepage": "https://github.com/es-shims/es-set-tostringtag#readme",
+ "devDependencies": {
+ "@ljharb/eslint-config": "^21.0.1",
+ "aud": "^2.0.2",
+ "auto-changelog": "^2.4.0",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "in-publish": "^2.0.1",
+ "npmignore": "^0.3.0",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.6.1"
+ },
+ "dependencies": {
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "auto-changelog": {
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": false,
+ "commitLimit": false,
+ "backfillLimit": false,
+ "hideCredit": true
+ },
+ "testling": {
+ "files": "./test/index.js"
+ },
+ "publishConfig": {
+ "ignore": [
+ ".github/workflows"
+ ]
+ }
+}
diff --git a/node_modules/es-set-tostringtag/test/index.js b/node_modules/es-set-tostringtag/test/index.js
new file mode 100644
index 000000000..4728372a9
--- /dev/null
+++ b/node_modules/es-set-tostringtag/test/index.js
@@ -0,0 +1,53 @@
+'use strict';
+
+var test = require('tape');
+var hasToStringTag = require('has-tostringtag/shams')();
+var has = require('has');
+
+var setToStringTag = require('../');
+
+test('setToStringTag', function (t) {
+ t.equal(typeof setToStringTag, 'function', 'is a function');
+
+ var obj = {};
+ var sentinel = {};
+
+ setToStringTag(obj, sentinel);
+
+ t.test('has Symbol.toStringTag', { skip: !hasToStringTag }, function (st) {
+ st.ok(has(obj, Symbol.toStringTag), 'has toStringTag property');
+
+ st.equal(obj[Symbol.toStringTag], sentinel, 'toStringTag property is as expected');
+
+ st.equal(String(obj), '[object Object]', 'toStringTag works');
+
+ var tagged = {};
+ tagged[Symbol.toStringTag] = 'already tagged';
+ st.equal(String(tagged), '[object already tagged]', 'toStringTag works');
+
+ setToStringTag(tagged, 'new tag');
+ st.equal(String(tagged), '[object already tagged]', 'toStringTag is unchanged');
+
+ setToStringTag(tagged, 'new tag', { force: true });
+ st.equal(String(tagged), '[object new tag]', 'toStringTag is changed with force: true');
+
+ st.end();
+ });
+
+ t.test('does not have Symbol.toStringTag', { skip: hasToStringTag }, function (st) {
+ var passed = true;
+ for (var key in obj) { // eslint-disable-line no-restricted-syntax
+ if (has(obj, key)) {
+ st.fail('object has own key ' + key);
+ passed = false;
+ }
+ }
+ if (passed) {
+ st.ok(true, 'object has no enumerable own keys');
+ }
+
+ st.end();
+ });
+
+ t.end();
+});
diff --git a/node_modules/es-shim-unscopables/.eslintrc b/node_modules/es-shim-unscopables/.eslintrc
new file mode 100644
index 000000000..705aaa57b
--- /dev/null
+++ b/node_modules/es-shim-unscopables/.eslintrc
@@ -0,0 +1,37 @@
+{
+ "root": true,
+
+ "extends": "@ljharb",
+
+ "env": {
+ "es6": true,
+ "es2017": true,
+ "es2020": true,
+ "es2021": true,
+ "es2022": true,
+ },
+
+ "rules": {
+ "array-bracket-newline": 0,
+ "complexity": 0,
+ "eqeqeq": [2, "allow-null"],
+ "func-name-matching": 0,
+ "id-length": 0,
+ "max-lines-per-function": [2, 80],
+ "max-params": [2, 4],
+ "max-statements": 0,
+ "max-statements-per-line": [2, { "max": 2 }],
+ "multiline-comment-style": 0,
+ "no-magic-numbers": 0,
+ "sort-keys": 0,
+ },
+
+ "overrides": [
+ {
+ "files": "test/**",
+ "rules": {
+ "new-cap": 0,
+ },
+ },
+ ],
+}
diff --git a/node_modules/es-shim-unscopables/.github/FUNDING.yml b/node_modules/es-shim-unscopables/.github/FUNDING.yml
new file mode 100644
index 000000000..af711298c
--- /dev/null
+++ b/node_modules/es-shim-unscopables/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/es-shim-unscopables
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/node_modules/es-shim-unscopables/.nycrc b/node_modules/es-shim-unscopables/.nycrc
new file mode 100644
index 000000000..bdd626ce9
--- /dev/null
+++ b/node_modules/es-shim-unscopables/.nycrc
@@ -0,0 +1,9 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["text-summary", "text", "html", "json"],
+ "exclude": [
+ "coverage",
+ "test"
+ ]
+}
diff --git a/node_modules/es-shim-unscopables/CHANGELOG.md b/node_modules/es-shim-unscopables/CHANGELOG.md
new file mode 100644
index 000000000..73293c8ab
--- /dev/null
+++ b/node_modules/es-shim-unscopables/CHANGELOG.md
@@ -0,0 +1,13 @@
+### Changelog
+
+All notable changes to this project will be documented in this file. Dates are displayed in UTC.
+
+Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
+
+#### v1.0.0
+
+> 11 April 2022
+
+- Initial implementation, tests [`0313267`](https://github.com/ljharb/es-shim-unscopables/commit/03132672560a06df8a36685c1688793d445ea034)
+- Initial commit [`5a68e27`](https://github.com/ljharb/es-shim-unscopables/commit/5a68e27e8f11d8b453c00e9239b35ec8795c850e)
+- [meta] do not publish workflow files [`4e29785`](https://github.com/ljharb/es-shim-unscopables/commit/4e2978541c25ce590589d5f23f311af6ca3618a7)
diff --git a/node_modules/es-shim-unscopables/LICENSE b/node_modules/es-shim-unscopables/LICENSE
new file mode 100644
index 000000000..6abfe1434
--- /dev/null
+++ b/node_modules/es-shim-unscopables/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Jordan Harband
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/es-shim-unscopables/README.md b/node_modules/es-shim-unscopables/README.md
new file mode 100644
index 000000000..4728b6308
--- /dev/null
+++ b/node_modules/es-shim-unscopables/README.md
@@ -0,0 +1,57 @@
+# es-shim-unscopables [![Version Badge][npm-version-svg]][package-url]
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![dependency status][deps-svg]][deps-url]
+[![dev dependency status][dev-deps-svg]][dev-deps-url]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][npm-badge-png]][package-url]
+
+Helper package to shim a method into `Array.prototype[Symbol.unscopables]`
+
+## Example
+
+```js
+const assert = require('assert');
+
+const shimUnscopables = require('es-shim-unscopables');
+
+let copyWithin;
+let concat;
+with ([]) {
+ assert.equal(concat, Array.prototype.concat);
+ assert.notEqual(copyWithin, Array.prototype.copyWithin);
+}
+
+shimUnscopables('concat');
+
+with ([]) {
+ assert.notEqual(concat, Array.prototype.concat);
+ assert.notEqual(copyWithin, Array.prototype.copyWithin);
+}
+```
+
+## Tests
+Simply clone the repo, `npm install`, and run `npm test`
+
+## Security
+
+Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report.
+
+[package-url]: https://npmjs.org/package/es-shim-unscopables
+[npm-version-svg]: https://versionbadg.es/ljharb/es-shim-unscopables.svg
+[deps-svg]: https://david-dm.org/ljharb/es-shim-unscopables.svg
+[deps-url]: https://david-dm.org/ljharb/es-shim-unscopables
+[dev-deps-svg]: https://david-dm.org/ljharb/es-shim-unscopables/dev-status.svg
+[dev-deps-url]: https://david-dm.org/ljharb/es-shim-unscopables#info=devDependencies
+[npm-badge-png]: https://nodei.co/npm/es-shim-unscopables.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/es-shim-unscopables.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/es-shim-unscopables.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=es-shim-unscopables
+[codecov-image]: https://codecov.io/gh/ljharb/es-shim-unscopables/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/ljharb/es-shim-unscopables/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-shim-unscopables
+[actions-url]: https://github.com/ljharb/es-shim-unscopables/actions
diff --git a/node_modules/es-shim-unscopables/index.js b/node_modules/es-shim-unscopables/index.js
new file mode 100644
index 000000000..eae1a36de
--- /dev/null
+++ b/node_modules/es-shim-unscopables/index.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var has = require('has');
+
+var hasUnscopables = typeof Symbol === 'function' && typeof Symbol.unscopables === 'symbol';
+
+var map = hasUnscopables && Array.prototype[Symbol.unscopables];
+
+var $TypeError = TypeError;
+
+module.exports = function shimUnscopables(method) {
+ if (typeof method !== 'string' || !method) {
+ throw new $TypeError('method must be a non-empty string');
+ }
+ if (!has(Array.prototype, method)) {
+ throw new $TypeError('method must be on Array.prototype');
+ }
+ if (hasUnscopables) {
+ map[method] = true;
+ }
+};
diff --git a/node_modules/es-shim-unscopables/package.json b/node_modules/es-shim-unscopables/package.json
new file mode 100644
index 000000000..9dcf5f8e7
--- /dev/null
+++ b/node_modules/es-shim-unscopables/package.json
@@ -0,0 +1,49 @@
+{
+ "name": "es-shim-unscopables",
+ "version": "1.0.0",
+ "description": "Helper package to shim a method into `Array.prototype[Symbol.unscopables]`",
+ "main": "index.js",
+ "exports": {
+ ".": "./index.js",
+ "./package.json": "./package.json"
+ },
+ "scripts": {
+ "prepublish": "not-in-publish || npm run prepublishOnly",
+ "prepublishOnly": "safe-publish-latest",
+ "prelint-disabled": "evalmd README.md",
+ "lint": "eslint --ext=.js,.mjs .",
+ "pretest": "npm run lint",
+ "tests-only": "nyc tape 'test/**/*.js'",
+ "test": "npm run tests-only",
+ "posttest": "aud --production",
+ "version": "auto-changelog && git add CHANGELOG.md",
+ "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\""
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ljharb/es-shim-unscopables.git"
+ },
+ "author": "Jordan Harband ",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/ljharb/es-shim-unscopables/issues"
+ },
+ "homepage": "https://github.com/ljharb/es-shim-unscopables#readme",
+ "devDependencies": {
+ "@ljharb/eslint-config": "^21.0.0",
+ "aud": "^2.0.0",
+ "auto-changelog": "^2.4.0",
+ "es-value-fixtures": "^1.2.1",
+ "eslint": "=8.8.0",
+ "evalmd": "^0.0.19",
+ "for-each": "^0.3.3",
+ "in-publish": "^2.0.1",
+ "nyc": "^10.3.2",
+ "object-inspect": "^1.12.0",
+ "safe-publish-latest": "^2.0.0",
+ "tape": "^5.5.3"
+ },
+ "dependencies": {
+ "has": "^1.0.3"
+ }
+}
diff --git a/node_modules/es-shim-unscopables/test/index.js b/node_modules/es-shim-unscopables/test/index.js
new file mode 100644
index 000000000..d78c7a45d
--- /dev/null
+++ b/node_modules/es-shim-unscopables/test/index.js
@@ -0,0 +1,67 @@
+'use strict';
+
+var test = require('tape');
+var inspect = require('object-inspect');
+var v = require('es-value-fixtures');
+var forEach = require('for-each');
+var has = require('has');
+
+var shimUnscopables = require('../');
+
+var sortSymbols = function (a, b) {
+ return inspect(a).localeCompare(inspect(b));
+};
+
+test('shimUnscopables', function (t) {
+ t.equal(typeof shimUnscopables, 'function', 'is a function');
+
+ forEach(v.nonStrings, function (notNonEmptyString) {
+ t['throws'](
+ function () { shimUnscopables(notNonEmptyString); },
+ TypeError,
+ inspect(notNonEmptyString) + ' is not a non-empty String'
+ );
+ });
+
+ t['throws'](
+ function () { shimUnscopables('x'); },
+ TypeError,
+ inspect('x') + ' is not on Array.prototype'
+ );
+
+ t.test('no symbols', { skip: typeof Symbol === 'function' }, function (st) {
+ st.doesNotThrow(function () { shimUnscopables('forEach'); });
+
+ st.end();
+ });
+
+ t.test('symbols, no unscopables', { skip: typeof Symbol !== 'function' || Symbol.unscopables }, function (st) {
+ st.deepEqual(Object.getOwnPropertySymbols(Array.prototype), [Symbol.iterator]);
+
+ shimUnscopables('forEach');
+
+ st.deepEqual(Object.getOwnPropertySymbols(Array.prototype), [Symbol.iterator]);
+
+ st.end();
+ });
+
+ t.test('Symbol.unscopables', { skip: typeof Symbol !== 'function' || !Symbol.unscopables }, function (st) {
+ st.deepEqual(
+ Object.getOwnPropertySymbols(Array.prototype).sort(sortSymbols),
+ [Symbol.iterator, Symbol.unscopables]
+ );
+ st.notOk(has(Array.prototype[Symbol.unscopables], 'forEach'), 'unscopables map lacks forEach');
+
+ shimUnscopables('forEach');
+
+ st.deepEqual(
+ Object.getOwnPropertySymbols(Array.prototype).sort(sortSymbols),
+ [Symbol.iterator, Symbol.unscopables]
+ );
+ st.equal(Array.prototype[Symbol.unscopables].forEach, true, 'unscopables map has forEach');
+
+ st.end();
+ });
+
+ t.end();
+});
diff --git a/node_modules/es-shim-unscopables/test/with.js b/node_modules/es-shim-unscopables/test/with.js
new file mode 100644
index 000000000..2ef2ee0db
--- /dev/null
+++ b/node_modules/es-shim-unscopables/test/with.js
@@ -0,0 +1,35 @@
+/* eslint no-restricted-syntax: 0, no-with: 0, strict: 0 */
+
+var test = require('tape');
+
+var shimUnscopables = require('../');
+
+test('`with` statement', { skip: typeof Symbol !== 'function' || !Symbol.unscopables }, function (t) {
+ var entries;
+ var concat;
+ with ([]) {
+ t.equal(concat, Array.prototype.concat, 'concat is dynamically bound');
+ t.notEqual(entries, Array.prototype.entries, 'entries is not dynamically bound');
+ }
+
+ var obj = {
+ foo: 1,
+ bar: 2
+ };
+ var foo;
+ var bar;
+ obj[Symbol.unscopables] = { foo: true };
+ with (obj) {
+ t.equal(foo, undefined);
+ t.equal(bar, obj.bar);
+ }
+
+ shimUnscopables('concat');
+
+ with ([]) {
+ t.notEqual(concat, Array.prototype.concat, 'concat is no longer dynamically bound');
+ t.notEqual(entries, Array.prototype.entries, 'entries is still not dynamically bound');
+ }
+
+ t.end();
+});
diff --git a/node_modules/eslint-import-resolver-node/index.js b/node_modules/eslint-import-resolver-node/index.js
index 84fc5076b..ac478ef02 100644
--- a/node_modules/eslint-import-resolver-node/index.js
+++ b/node_modules/eslint-import-resolver-node/index.js
@@ -1,6 +1,7 @@
'use strict';
const resolve = require('resolve');
+const isCoreModule = require('is-core-module');
const path = require('path');
const log = require('debug')('eslint-plugin-import:resolver:node');
@@ -11,13 +12,14 @@ exports.resolve = function (source, file, config) {
log('Resolving:', source, 'from:', file);
let resolvedPath;
- if (resolve.isCore(source)) {
+ if (isCoreModule(source)) {
log('resolved to core');
return { found: true, path: null };
}
try {
- resolvedPath = resolve.sync(source, opts(file, config));
+ const cachedFilter = function (pkg, dir) { return packageFilter(pkg, dir, config); };
+ resolvedPath = resolve.sync(source, opts(file, config, cachedFilter));
log('Resolved to:', resolvedPath);
return { found: true, path: resolvedPath };
} catch (err) {
@@ -26,7 +28,7 @@ exports.resolve = function (source, file, config) {
}
};
-function opts(file, config) {
+function opts(file, config, packageFilter) {
return Object.assign({
// more closely matches Node (#333)
// plus 'mjs' for native modules! (#939)
@@ -36,16 +38,32 @@ function opts(file, config) {
{
// path.resolve will handle paths relative to CWD
basedir: path.dirname(path.resolve(file)),
- packageFilter: packageFilter,
-
+ packageFilter,
});
}
-function packageFilter(pkg) {
+function identity(x) { return x; }
+
+function packageFilter(pkg, dir, config) {
+ let found = false;
+ const file = path.join(dir, 'dummy.js');
if (pkg.module) {
- pkg.main = pkg.module;
- } else if (pkg['jsnext:main']) {
- pkg.main = pkg['jsnext:main'];
+ try {
+ resolve.sync(String(pkg.module).replace(/^(?:\.\/)?/, './'), opts(file, config, identity));
+ pkg.main = pkg.module;
+ found = true;
+ } catch (err) {
+ log('resolve threw error trying to find pkg.module:', err);
+ }
+ }
+ if (!found && pkg['jsnext:main']) {
+ try {
+ resolve.sync(String(pkg['jsnext:main']).replace(/^(?:\.\/)?/, './'), opts(file, config, identity));
+ pkg.main = pkg['jsnext:main'];
+ found = true;
+ } catch (err) {
+ log('resolve threw error trying to find pkg[\'jsnext:main\']:', err);
+ }
}
return pkg;
}
diff --git a/node_modules/eslint-import-resolver-node/package.json b/node_modules/eslint-import-resolver-node/package.json
index 993f1b89b..d13b48635 100644
--- a/node_modules/eslint-import-resolver-node/package.json
+++ b/node_modules/eslint-import-resolver-node/package.json
@@ -1,6 +1,6 @@
{
"name": "eslint-import-resolver-node",
- "version": "0.3.5",
+ "version": "0.3.7",
"description": "Node default behavior import resolution plugin for eslint-plugin-import.",
"main": "index.js",
"files": [
@@ -9,8 +9,7 @@
"scripts": {
"prepublishOnly": "cp ../../{LICENSE,.npmrc} ./",
"tests-only": "nyc mocha",
- "test": "npm run tests-only",
- "coveralls": "nyc report --reporter lcovonly && cd ../.. && coveralls < ./resolvers/node/coverage/lcov.info"
+ "test": "npm run tests-only"
},
"repository": {
"type": "git",
@@ -31,11 +30,11 @@
"homepage": "https://github.com/import-js/eslint-plugin-import",
"dependencies": {
"debug": "^3.2.7",
- "resolve": "^1.20.0"
+ "is-core-module": "^2.11.0",
+ "resolve": "^1.22.1"
},
"devDependencies": {
"chai": "^3.5.0",
- "coveralls": "^3.1.0",
"mocha": "^3.5.3",
"nyc": "^11.9.0"
}
diff --git a/node_modules/eslint-module-utils/.eslintrc b/node_modules/eslint-module-utils/.eslintrc
deleted file mode 100644
index 3fd3f5e64..000000000
--- a/node_modules/eslint-module-utils/.eslintrc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "parserOptions": {
- "ecmaVersion": 6,
- },
-}
diff --git a/node_modules/eslint-module-utils/.eslintrc.yml b/node_modules/eslint-module-utils/.eslintrc.yml
deleted file mode 100644
index d30c26465..000000000
--- a/node_modules/eslint-module-utils/.eslintrc.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-rules:
- no-console: 1
diff --git a/node_modules/eslint-module-utils/.nycrc b/node_modules/eslint-module-utils/.nycrc
index 8147f3871..5d75e2157 100644
--- a/node_modules/eslint-module-utils/.nycrc
+++ b/node_modules/eslint-module-utils/.nycrc
@@ -1,7 +1,7 @@
{
"all": true,
"check-coverage": false,
- "reporter": ["text-summary", "text", "html", "json"],
+ "reporter": ["text-summary", "lcov", "text", "html", "json"],
"require": [
"babel-register"
],
@@ -10,6 +10,10 @@
"exclude": [
"coverage",
"test",
- "tests"
+ "tests",
+ "resolvers/*/test",
+ "scripts",
+ "memo-parser",
+ "lib"
]
}
diff --git a/node_modules/eslint-module-utils/CHANGELOG.md b/node_modules/eslint-module-utils/CHANGELOG.md
index 916005514..72fa611a1 100644
--- a/node_modules/eslint-module-utils/CHANGELOG.md
+++ b/node_modules/eslint-module-utils/CHANGELOG.md
@@ -1,10 +1,43 @@
# Change Log
All notable changes to this module will be documented in this file.
-This project adheres to [Semantic Versioning](http://semver.org/).
-This change log adheres to standards from [Keep a CHANGELOG](http://keepachangelog.com).
+This project adheres to [Semantic Versioning](https://semver.org/).
+This change log adheres to standards from [Keep a CHANGELOG](https://keepachangelog.com).
## Unreleased
+## v2.7.4 - 2022-08-11
+
+### Fixed
+- [Fix] Ignore hashbang and BOM while parsing ([#2431], thanks [@silverwind])
+
+### Changed
+- [patch] mark eslint as an optional peer dep ([#2523], thanks [@wmertens])
+
+## v2.7.3 - 2022-01-26
+
+### Fixed
+- [Fix] `parse`: restore compatibility by making the return value `ast` again ([#2350], thanks [@ljharb])
+
+## v2.7.2 - 2022-01-01
+
+### Fixed
+- [patch] Fix `@babel/eslint-parser` 8 compatibility ([#2343], thanks [@nicolo-ribaudo])
+
+### Changed
+- [Refactor] inline `pkgDir` implementation; remove `pkg-dir`
+
+## v2.7.1 - 2021-10-13
+
+### Fixed
+- fixed SyntaxError in node <= 6: Unexpected token ) in parse.js ([#2261], thanks [@VitusFW])
+
+## v2.7.0 - 2021-10-11
+
+### Added
+- `fileExistsWithCaseSync`: add `strict` argument ([#1262], thanks [@sergei-startsev])
+- add `visit`, to support dynamic imports ([#1660], [#2212], thanks [@maxkomarychev], [@aladdin-add], [@Hypnosphi])
+- create internal replacement for `pkg-up` and `read-pkg-up` ([#2047], [@mgwalker])
+
## v2.6.2 - 2021-08-08
### Fixed
@@ -90,10 +123,18 @@ Yanked due to critical issue with cache key resulting from #839.
### Fixed
- `unambiguous.test()` regex is now properly in multiline mode
+[#2523]: https://github.com/import-js/eslint-plugin-import/pull/2523
+[#2431]: https://github.com/import-js/eslint-plugin-import/pull/2431
+[#2350]: https://github.com/import-js/eslint-plugin-import/issues/2350
+[#2343]: https://github.com/import-js/eslint-plugin-import/pull/2343
+[#2261]: https://github.com/import-js/eslint-plugin-import/pull/2261
+[#2212]: https://github.com/import-js/eslint-plugin-import/pull/2212
[#2160]: https://github.com/import-js/eslint-plugin-import/pull/2160
+[#2047]: https://github.com/import-js/eslint-plugin-import/pull/2047
[#2026]: https://github.com/import-js/eslint-plugin-import/pull/2026
[#1786]: https://github.com/import-js/eslint-plugin-import/pull/1786
[#1671]: https://github.com/import-js/eslint-plugin-import/pull/1671
+[#1660]: https://github.com/import-js/eslint-plugin-import/pull/1660
[#1606]: https://github.com/import-js/eslint-plugin-import/pull/1606
[#1602]: https://github.com/import-js/eslint-plugin-import/pull/1602
[#1591]: https://github.com/import-js/eslint-plugin-import/pull/1591
@@ -102,6 +143,7 @@ Yanked due to critical issue with cache key resulting from #839.
[#1409]: https://github.com/import-js/eslint-plugin-import/pull/1409
[#1356]: https://github.com/import-js/eslint-plugin-import/pull/1356
[#1290]: https://github.com/import-js/eslint-plugin-import/pull/1290
+[#1262]: https://github.com/import-js/eslint-plugin-import/pull/1262
[#1218]: https://github.com/import-js/eslint-plugin-import/pull/1218
[#1166]: https://github.com/import-js/eslint-plugin-import/issues/1166
[#1160]: https://github.com/import-js/eslint-plugin-import/pull/1160
@@ -114,11 +156,18 @@ Yanked due to critical issue with cache key resulting from #839.
[@brettz9]: https://github.com/brettz9
[@christophercurrie]: https://github.com/christophercurrie
[@hulkish]: https://github.com/hulkish
+[@Hypnosphi]: https://github.com/Hypnosphi
[@iamnapo]: https://github.com/iamnapo
[@JounQin]: https://github.com/JounQin
[@kaiyoma]: https://github.com/kaiyoma
[@manuth]: https://github.com/manuth
+[@maxkomarychev]: https://github.com/maxkomarychev
+[@mgwalker]: https://github.com/mgwalker
+[@nicolo-ribaudo]: https://github.com/nicolo-ribaudo
[@pmcelhaney]: https://github.com/pmcelhaney
+[@sergei-startsev]: https://github.com/sergei-startsev
[@sompylasar]: https://github.com/sompylasar
[@timkraut]: https://github.com/timkraut
-[@vikr01]: https://github.com/vikr01
\ No newline at end of file
+[@vikr01]: https://github.com/vikr01
+[@VitusFW]: https://github.com/VitusFW
+[@wmertens]: https://github.com/wmertens
diff --git a/node_modules/eslint-module-utils/module-require.js b/node_modules/eslint-module-utils/module-require.js
index 70e551062..c03671ce5 100644
--- a/node_modules/eslint-module-utils/module-require.js
+++ b/node_modules/eslint-module-utils/module-require.js
@@ -18,12 +18,12 @@ exports.default = function moduleRequire(p) {
const eslintPath = require.resolve('eslint');
const eslintModule = createModule(eslintPath);
return require(Module._resolveFilename(p, eslintModule));
- } catch(err) { /* ignore */ }
+ } catch (err) { /* ignore */ }
try {
// try relative to entry point
return require.main.require(p);
- } catch(err) { /* ignore */ }
+ } catch (err) { /* ignore */ }
// finally, try from here
return require(p);
diff --git a/node_modules/eslint-module-utils/moduleVisitor.js b/node_modules/eslint-module-utils/moduleVisitor.js
index 69269985b..4d93a0199 100644
--- a/node_modules/eslint-module-utils/moduleVisitor.js
+++ b/node_modules/eslint-module-utils/moduleVisitor.js
@@ -37,7 +37,7 @@ exports.default = function visitModules(visitor, options) {
// for esmodule dynamic `import()` calls
function checkImportCall(node) {
let modulePath;
- // refs https://github.com/estree/estree/blob/master/es2020.md#importexpression
+ // refs https://github.com/estree/estree/blob/HEAD/es2020.md#importexpression
if (node.type === 'ImportExpression') {
modulePath = node.source;
} else if (node.type === 'CallExpression') {
@@ -54,7 +54,7 @@ exports.default = function visitModules(visitor, options) {
}
// for CommonJS `require` calls
- // adapted from @mctep: http://git.io/v4rAu
+ // adapted from @mctep: https://git.io/v4rAu
function checkCommon(call) {
if (call.callee.type !== 'Identifier') return;
if (call.callee.name !== 'require') return;
@@ -81,7 +81,7 @@ exports.default = function visitModules(visitor, options) {
if (typeof element.value !== 'string') continue;
if (element.value === 'require' ||
- element.value === 'exports') continue; // magic modules: http://git.io/vByan
+ element.value === 'exports') continue; // magic modules: https://github.com/requirejs/requirejs/wiki/Differences-between-the-simplified-CommonJS-wrapper-and-standard-AMD-define#magic-modules
checkSourceValue(element, element);
}
@@ -131,7 +131,7 @@ function makeOptionsSchema(additionalProperties) {
'additionalProperties': false,
};
- if (additionalProperties){
+ if (additionalProperties) {
for (const key in additionalProperties) {
base.properties[key] = additionalProperties[key];
}
diff --git a/node_modules/eslint-module-utils/node_modules/find-up/index.js b/node_modules/eslint-module-utils/node_modules/find-up/index.js
deleted file mode 100644
index 939c9553d..000000000
--- a/node_modules/eslint-module-utils/node_modules/find-up/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict';
-const path = require('path');
-const locatePath = require('locate-path');
-
-module.exports = (filename, opts) => {
- opts = opts || {};
-
- const startDir = path.resolve(opts.cwd || '');
- const root = path.parse(startDir).root;
-
- const filenames = [].concat(filename);
-
- return new Promise(resolve => {
- (function find(dir) {
- locatePath(filenames, {cwd: dir}).then(file => {
- if (file) {
- resolve(path.join(dir, file));
- } else if (dir === root) {
- resolve(null);
- } else {
- find(path.dirname(dir));
- }
- });
- })(startDir);
- });
-};
-
-module.exports.sync = (filename, opts) => {
- opts = opts || {};
-
- let dir = path.resolve(opts.cwd || '');
- const root = path.parse(dir).root;
-
- const filenames = [].concat(filename);
-
- // eslint-disable-next-line no-constant-condition
- while (true) {
- const file = locatePath.sync(filenames, {cwd: dir});
-
- if (file) {
- return path.join(dir, file);
- } else if (dir === root) {
- return null;
- }
-
- dir = path.dirname(dir);
- }
-};
diff --git a/node_modules/eslint-module-utils/node_modules/find-up/license b/node_modules/eslint-module-utils/node_modules/find-up/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/eslint-module-utils/node_modules/find-up/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/eslint-module-utils/node_modules/find-up/package.json b/node_modules/eslint-module-utils/node_modules/find-up/package.json
deleted file mode 100644
index 7ec85bb79..000000000
--- a/node_modules/eslint-module-utils/node_modules/find-up/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "find-up",
- "version": "2.1.0",
- "description": "Find a file by walking up parent directories",
- "license": "MIT",
- "repository": "sindresorhus/find-up",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "find",
- "up",
- "find-up",
- "findup",
- "look-up",
- "look",
- "file",
- "search",
- "match",
- "package",
- "resolve",
- "parent",
- "parents",
- "folder",
- "directory",
- "dir",
- "walk",
- "walking",
- "path"
- ],
- "dependencies": {
- "locate-path": "^2.0.0"
- },
- "devDependencies": {
- "ava": "*",
- "tempfile": "^1.1.1",
- "xo": "*"
- },
- "xo": {
- "esnext": true
- }
-}
diff --git a/node_modules/eslint-module-utils/node_modules/find-up/readme.md b/node_modules/eslint-module-utils/node_modules/find-up/readme.md
deleted file mode 100644
index b5ad69455..000000000
--- a/node_modules/eslint-module-utils/node_modules/find-up/readme.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# find-up [](https://travis-ci.org/sindresorhus/find-up) [](https://ci.appveyor.com/project/sindresorhus/find-up/branch/master)
-
-> Find a file by walking up parent directories
-
-
-## Install
-
-```
-$ npm install --save find-up
-```
-
-
-## Usage
-
-```
-/
-└── Users
- └── sindresorhus
- ├── unicorn.png
- └── foo
- └── bar
- ├── baz
- └── example.js
-```
-
-```js
-// example.js
-const findUp = require('find-up');
-
-findUp('unicorn.png').then(filepath => {
- console.log(filepath);
- //=> '/Users/sindresorhus/unicorn.png'
-});
-
-findUp(['rainbow.png', 'unicorn.png']).then(filepath => {
- console.log(filepath);
- //=> '/Users/sindresorhus/unicorn.png'
-});
-```
-
-
-## API
-
-### findUp(filename, [options])
-
-Returns a `Promise` for the filepath or `null`.
-
-### findUp([filenameA, filenameB], [options])
-
-Returns a `Promise` for the first filepath found (by respecting the order) or `null`.
-
-### findUp.sync(filename, [options])
-
-Returns a filepath or `null`.
-
-### findUp.sync([filenameA, filenameB], [options])
-
-Returns the first filepath found (by respecting the order) or `null`.
-
-#### filename
-
-Type: `string`
-
-Filename of the file to find.
-
-#### options
-
-##### cwd
-
-Type: `string`
-Default: `process.cwd()`
-
-Directory to start from.
-
-
-## Related
-
-- [find-up-cli](https://github.com/sindresorhus/find-up-cli) - CLI for this module
-- [pkg-up](https://github.com/sindresorhus/pkg-up) - Find the closest package.json file
-- [pkg-dir](https://github.com/sindresorhus/pkg-dir) - Find the root directory of an npm package
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/eslint-module-utils/node_modules/locate-path/index.js b/node_modules/eslint-module-utils/node_modules/locate-path/index.js
deleted file mode 100644
index 32b108d19..000000000
--- a/node_modules/eslint-module-utils/node_modules/locate-path/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-'use strict';
-const path = require('path');
-const pathExists = require('path-exists');
-const pLocate = require('p-locate');
-
-module.exports = (iterable, opts) => {
- opts = Object.assign({
- cwd: process.cwd()
- }, opts);
-
- return pLocate(iterable, el => pathExists(path.resolve(opts.cwd, el)), opts);
-};
-
-module.exports.sync = (iterable, opts) => {
- opts = Object.assign({
- cwd: process.cwd()
- }, opts);
-
- for (const el of iterable) {
- if (pathExists.sync(path.resolve(opts.cwd, el))) {
- return el;
- }
- }
-};
diff --git a/node_modules/eslint-module-utils/node_modules/locate-path/license b/node_modules/eslint-module-utils/node_modules/locate-path/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/eslint-module-utils/node_modules/locate-path/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/eslint-module-utils/node_modules/locate-path/package.json b/node_modules/eslint-module-utils/node_modules/locate-path/package.json
deleted file mode 100644
index 17bcd7ff6..000000000
--- a/node_modules/eslint-module-utils/node_modules/locate-path/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "locate-path",
- "version": "2.0.0",
- "description": "Get the first path that exists on disk of multiple paths",
- "license": "MIT",
- "repository": "sindresorhus/locate-path",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "locate",
- "path",
- "paths",
- "file",
- "files",
- "exists",
- "find",
- "finder",
- "search",
- "searcher",
- "array",
- "iterable",
- "iterator"
- ],
- "dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- },
- "xo": {
- "esnext": true
- }
-}
diff --git a/node_modules/eslint-module-utils/node_modules/locate-path/readme.md b/node_modules/eslint-module-utils/node_modules/locate-path/readme.md
deleted file mode 100644
index f7b337bb2..000000000
--- a/node_modules/eslint-module-utils/node_modules/locate-path/readme.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# locate-path [](https://travis-ci.org/sindresorhus/locate-path)
-
-> Get the first path that exists on disk of multiple paths
-
-
-## Install
-
-```
-$ npm install --save locate-path
-```
-
-
-## Usage
-
-Here we find the first file that exists on disk, in array order.
-
-```js
-const locatePath = require('locate-path');
-
-const files = [
- 'unicorn.png',
- 'rainbow.png', // only this one actually exists on disk
- 'pony.png'
-];
-
-locatePath(files).then(foundPath => {
- console.log(foundPath);
- //=> 'rainbow'
-});
-```
-
-
-## API
-
-### locatePath(input, [options])
-
-Returns a `Promise` for the first path that exists or `undefined` if none exists.
-
-#### input
-
-Type: `Iterable`
-
-Paths to check.
-
-#### options
-
-Type: `Object`
-
-##### concurrency
-
-Type: `number`
-Default: `Infinity`
-Minimum: `1`
-
-Number of concurrently pending promises.
-
-##### preserveOrder
-
-Type: `boolean`
-Default: `true`
-
-Preserve `input` order when searching.
-
-Disable this to improve performance if you don't care about the order.
-
-##### cwd
-
-Type: `string`
-Default: `process.cwd()`
-
-Current working directory.
-
-### locatePath.sync(input, [options])
-
-Returns the first path that exists or `undefined` if none exists.
-
-#### input
-
-Type: `Iterable`
-
-Paths to check.
-
-#### options
-
-Type: `Object`
-
-##### cwd
-
-Same as above.
-
-
-## Related
-
-- [path-exists](https://github.com/sindresorhus/path-exists) - Check if a path exists
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/eslint-module-utils/node_modules/p-limit/index.js b/node_modules/eslint-module-utils/node_modules/p-limit/index.js
deleted file mode 100644
index 873f0e70d..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-limit/index.js
+++ /dev/null
@@ -1,42 +0,0 @@
-'use strict';
-const pTry = require('p-try');
-
-module.exports = concurrency => {
- if (concurrency < 1) {
- throw new TypeError('Expected `concurrency` to be a number from 1 and up');
- }
-
- const queue = [];
- let activeCount = 0;
-
- const next = () => {
- activeCount--;
-
- if (queue.length > 0) {
- queue.shift()();
- }
- };
-
- return fn => new Promise((resolve, reject) => {
- const run = () => {
- activeCount++;
-
- pTry(fn).then(
- val => {
- resolve(val);
- next();
- },
- err => {
- reject(err);
- next();
- }
- );
- };
-
- if (activeCount < concurrency) {
- run();
- } else {
- queue.push(run);
- }
- });
-};
diff --git a/node_modules/eslint-module-utils/node_modules/p-limit/license b/node_modules/eslint-module-utils/node_modules/p-limit/license
deleted file mode 100644
index e7af2f771..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-limit/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/eslint-module-utils/node_modules/p-limit/package.json b/node_modules/eslint-module-utils/node_modules/p-limit/package.json
deleted file mode 100644
index 90db5794d..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-limit/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "p-limit",
- "version": "1.3.0",
- "description": "Run multiple promise-returning & async functions with limited concurrency",
- "license": "MIT",
- "repository": "sindresorhus/p-limit",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "promise",
- "limit",
- "limited",
- "concurrency",
- "throttle",
- "throat",
- "rate",
- "batch",
- "ratelimit",
- "task",
- "queue",
- "async",
- "await",
- "promises",
- "bluebird"
- ],
- "dependencies": {
- "p-try": "^1.0.0"
- },
- "devDependencies": {
- "ava": "*",
- "delay": "^2.0.0",
- "in-range": "^1.0.0",
- "random-int": "^1.0.0",
- "time-span": "^2.0.0",
- "xo": "*"
- }
-}
diff --git a/node_modules/eslint-module-utils/node_modules/p-limit/readme.md b/node_modules/eslint-module-utils/node_modules/p-limit/readme.md
deleted file mode 100644
index 90129925c..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-limit/readme.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# p-limit [](https://travis-ci.org/sindresorhus/p-limit)
-
-> Run multiple promise-returning & async functions with limited concurrency
-
-
-## Install
-
-```
-$ npm install p-limit
-```
-
-
-## Usage
-
-```js
-const pLimit = require('p-limit');
-
-const limit = pLimit(1);
-
-const input = [
- limit(() => fetchSomething('foo')),
- limit(() => fetchSomething('bar')),
- limit(() => doSomething())
-];
-
-(async () => {
- // Only one promise is run at once
- const result = await Promise.all(input);
- console.log(result);
-})();
-```
-
-
-## API
-
-### pLimit(concurrency)
-
-Returns a `limit` function.
-
-#### concurrency
-
-Type: `number`
-Minimum: `1`
-
-Concurrency limit.
-
-### limit(fn)
-
-Returns the promise returned by calling `fn`.
-
-#### fn
-
-Type: `Function`
-
-Promise-returning/async function.
-
-
-## Related
-
-- [p-queue](https://github.com/sindresorhus/p-queue) - Promise queue with concurrency control
-- [p-throttle](https://github.com/sindresorhus/p-throttle) - Throttle promise-returning & async functions
-- [p-debounce](https://github.com/sindresorhus/p-debounce) - Debounce promise-returning & async functions
-- [p-all](https://github.com/sindresorhus/p-all) - Run promise-returning & async functions concurrently with optional limited concurrency
-- [More…](https://github.com/sindresorhus/promise-fun)
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/eslint-module-utils/node_modules/p-locate/index.js b/node_modules/eslint-module-utils/node_modules/p-locate/index.js
deleted file mode 100644
index 7461d665b..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-locate/index.js
+++ /dev/null
@@ -1,31 +0,0 @@
-'use strict';
-const pLimit = require('p-limit');
-
-class EndError extends Error {
- constructor(value) {
- super();
- this.value = value;
- }
-}
-
-// the input can also be a promise, so we `Promise.all()` them both
-const finder = el => Promise.all(el).then(val => val[1] === true && Promise.reject(new EndError(val[0])));
-
-module.exports = (iterable, tester, opts) => {
- opts = Object.assign({
- concurrency: Infinity,
- preserveOrder: true
- }, opts);
-
- const limit = pLimit(opts.concurrency);
-
- // start all the promises concurrently with optional limit
- const items = Array.from(iterable).map(el => [el, limit(() => Promise.resolve(el).then(tester))]);
-
- // check the promises either serially or concurrently
- const checkLimit = pLimit(opts.preserveOrder ? 1 : Infinity);
-
- return Promise.all(items.map(el => checkLimit(() => finder(el))))
- .then(() => {})
- .catch(err => err instanceof EndError ? err.value : Promise.reject(err));
-};
diff --git a/node_modules/eslint-module-utils/node_modules/p-locate/license b/node_modules/eslint-module-utils/node_modules/p-locate/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-locate/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/eslint-module-utils/node_modules/p-locate/package.json b/node_modules/eslint-module-utils/node_modules/p-locate/package.json
deleted file mode 100644
index 767002b38..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-locate/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "p-locate",
- "version": "2.0.0",
- "description": "Get the first fulfilled promise that satisfies the provided testing function",
- "license": "MIT",
- "repository": "sindresorhus/p-locate",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "promise",
- "locate",
- "find",
- "finder",
- "search",
- "searcher",
- "test",
- "array",
- "collection",
- "iterable",
- "iterator",
- "race",
- "fulfilled",
- "fastest",
- "async",
- "await",
- "promises",
- "bluebird"
- ],
- "dependencies": {
- "p-limit": "^1.1.0"
- },
- "devDependencies": {
- "ava": "*",
- "delay": "^1.3.1",
- "in-range": "^1.0.0",
- "time-span": "^1.0.0",
- "xo": "*"
- },
- "xo": {
- "esnext": true
- }
-}
diff --git a/node_modules/eslint-module-utils/node_modules/p-locate/readme.md b/node_modules/eslint-module-utils/node_modules/p-locate/readme.md
deleted file mode 100644
index 68b96a47e..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-locate/readme.md
+++ /dev/null
@@ -1,86 +0,0 @@
-# p-locate [](https://travis-ci.org/sindresorhus/p-locate)
-
-> Get the first fulfilled promise that satisfies the provided testing function
-
-Think of it like an async version of [`Array#find`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find).
-
-
-## Install
-
-```
-$ npm install --save p-locate
-```
-
-
-## Usage
-
-Here we find the first file that exists on disk, in array order.
-
-```js
-const pathExists = require('path-exists');
-const pLocate = require('p-locate');
-
-const files = [
- 'unicorn.png',
- 'rainbow.png', // only this one actually exists on disk
- 'pony.png'
-];
-
-pLocate(files, file => pathExists(file)).then(foundPath => {
- console.log(foundPath);
- //=> 'rainbow'
-});
-```
-
-*The above is just an example. Use [`locate-path`](https://github.com/sindresorhus/locate-path) if you need this.*
-
-
-## API
-
-### pLocate(input, tester, [options])
-
-Returns a `Promise` that is fulfilled when `tester` resolves to `true` or the iterable is done, or rejects if any of the promises reject. The fulfilled value is the current iterable value or `undefined` if `tester` never resolved to `true`.
-
-#### input
-
-Type: `Iterable`
-
-#### tester(element)
-
-Type: `Function`
-
-Expected to return a `Promise` or boolean.
-
-#### options
-
-Type: `Object`
-
-##### concurrency
-
-Type: `number`
-Default: `Infinity`
-Minimum: `1`
-
-Number of concurrently pending promises returned by `tester`.
-
-##### preserveOrder
-
-Type: `boolean`
-Default: `true`
-
-Preserve `input` order when searching.
-
-Disable this to improve performance if you don't care about the order.
-
-
-## Related
-
-- [p-map](https://github.com/sindresorhus/p-map) - Map over promises concurrently
-- [p-filter](https://github.com/sindresorhus/p-filter) - Filter promises concurrently
-- [p-any](https://github.com/sindresorhus/p-any) - Wait for any promise to be fulfilled
-- [More…](https://github.com/sindresorhus/promise-fun)
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/eslint-module-utils/node_modules/p-try/index.js b/node_modules/eslint-module-utils/node_modules/p-try/index.js
deleted file mode 100644
index efa2f7433..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-try/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-'use strict';
-module.exports = cb => new Promise(resolve => {
- resolve(cb());
-});
diff --git a/node_modules/eslint-module-utils/node_modules/p-try/license b/node_modules/eslint-module-utils/node_modules/p-try/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-try/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/eslint-module-utils/node_modules/p-try/package.json b/node_modules/eslint-module-utils/node_modules/p-try/package.json
deleted file mode 100644
index ba2513ade..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-try/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "p-try",
- "version": "1.0.0",
- "description": "`Promise#try()` ponyfill - Starts a promise chain",
- "license": "MIT",
- "repository": "sindresorhus/p-try",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "promise",
- "try",
- "resolve",
- "function",
- "catch",
- "async",
- "await",
- "promises",
- "settled",
- "ponyfill",
- "polyfill",
- "shim",
- "bluebird"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- },
- "xo": {
- "esnext": true
- }
-}
diff --git a/node_modules/eslint-module-utils/node_modules/p-try/readme.md b/node_modules/eslint-module-utils/node_modules/p-try/readme.md
deleted file mode 100644
index 8e5fdddbe..000000000
--- a/node_modules/eslint-module-utils/node_modules/p-try/readme.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# p-try [](https://travis-ci.org/sindresorhus/p-try)
-
-> [`Promise#try()`](https://github.com/ljharb/proposal-promise-try) [ponyfill](https://ponyfill.com) - Starts a promise chain
-
-[How is it useful?](http://cryto.net/~joepie91/blog/2016/05/11/what-is-promise-try-and-why-does-it-matter/)
-
-
-## Install
-
-```
-$ npm install --save p-try
-```
-
-
-## Usage
-
-```js
-const pTry = require('p-try');
-
-pTry(() => {
- return synchronousFunctionThatMightThrow();
-}).then(value => {
- console.log(value);
-}).catch(error => {
- console.error(error);
-});
-```
-
-
-## Related
-
-- [p-finally](https://github.com/sindresorhus/p-finally) - `Promise#finally()` ponyfill - Invoked when the promise is settled regardless of outcome
-- [More…](https://github.com/sindresorhus/promise-fun)
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/eslint-module-utils/node_modules/path-exists/index.js b/node_modules/eslint-module-utils/node_modules/path-exists/index.js
deleted file mode 100644
index 16ae60acb..000000000
--- a/node_modules/eslint-module-utils/node_modules/path-exists/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict';
-const fs = require('fs');
-
-module.exports = fp => new Promise(resolve => {
- fs.access(fp, err => {
- resolve(!err);
- });
-});
-
-module.exports.sync = fp => {
- try {
- fs.accessSync(fp);
- return true;
- } catch (err) {
- return false;
- }
-};
diff --git a/node_modules/eslint-module-utils/node_modules/path-exists/license b/node_modules/eslint-module-utils/node_modules/path-exists/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/eslint-module-utils/node_modules/path-exists/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/eslint-module-utils/node_modules/path-exists/package.json b/node_modules/eslint-module-utils/node_modules/path-exists/package.json
deleted file mode 100644
index efd56267e..000000000
--- a/node_modules/eslint-module-utils/node_modules/path-exists/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "path-exists",
- "version": "3.0.0",
- "description": "Check if a path exists",
- "license": "MIT",
- "repository": "sindresorhus/path-exists",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "path",
- "exists",
- "exist",
- "file",
- "filepath",
- "fs",
- "filesystem",
- "file-system",
- "access",
- "stat"
- ],
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- },
- "xo": {
- "esnext": true
- }
-}
diff --git a/node_modules/eslint-module-utils/node_modules/path-exists/readme.md b/node_modules/eslint-module-utils/node_modules/path-exists/readme.md
deleted file mode 100644
index 1b65fa705..000000000
--- a/node_modules/eslint-module-utils/node_modules/path-exists/readme.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# path-exists [](https://travis-ci.org/sindresorhus/path-exists)
-
-> Check if a path exists
-
-Because [`fs.exists()`](https://nodejs.org/api/fs.html#fs_fs_exists_path_callback) is being [deprecated](https://github.com/iojs/io.js/issues/103), but there's still a genuine use-case of being able to check if a path exists for other purposes than doing IO with it.
-
-Never use this before handling a file though:
-
-> In particular, checking if a file exists before opening it is an anti-pattern that leaves you vulnerable to race conditions: another process may remove the file between the calls to `fs.exists()` and `fs.open()`. Just open the file and handle the error when it's not there.
-
-
-## Install
-
-```
-$ npm install --save path-exists
-```
-
-
-## Usage
-
-```js
-// foo.js
-const pathExists = require('path-exists');
-
-pathExists('foo.js').then(exists => {
- console.log(exists);
- //=> true
-});
-```
-
-
-## API
-
-### pathExists(path)
-
-Returns a promise for a boolean of whether the path exists.
-
-### pathExists.sync(path)
-
-Returns a boolean of whether the path exists.
-
-
-## Related
-
-- [path-exists-cli](https://github.com/sindresorhus/path-exists-cli) - CLI for this module
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/eslint-module-utils/node_modules/pkg-dir/index.js b/node_modules/eslint-module-utils/node_modules/pkg-dir/index.js
deleted file mode 100644
index f2fa20110..000000000
--- a/node_modules/eslint-module-utils/node_modules/pkg-dir/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-const path = require('path');
-const findUp = require('find-up');
-
-module.exports = cwd => findUp('package.json', {cwd}).then(fp => fp ? path.dirname(fp) : null);
-
-module.exports.sync = cwd => {
- const fp = findUp.sync('package.json', {cwd});
- return fp ? path.dirname(fp) : null;
-};
diff --git a/node_modules/eslint-module-utils/node_modules/pkg-dir/license b/node_modules/eslint-module-utils/node_modules/pkg-dir/license
deleted file mode 100644
index 654d0bfe9..000000000
--- a/node_modules/eslint-module-utils/node_modules/pkg-dir/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/node_modules/eslint-module-utils/node_modules/pkg-dir/package.json b/node_modules/eslint-module-utils/node_modules/pkg-dir/package.json
deleted file mode 100644
index 2bb7277c6..000000000
--- a/node_modules/eslint-module-utils/node_modules/pkg-dir/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "pkg-dir",
- "version": "2.0.0",
- "description": "Find the root directory of a Node.js project or npm package",
- "license": "MIT",
- "repository": "sindresorhus/pkg-dir",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=4"
- },
- "scripts": {
- "test": "xo && ava"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "package",
- "json",
- "root",
- "npm",
- "entry",
- "find",
- "up",
- "find-up",
- "findup",
- "look-up",
- "look",
- "file",
- "search",
- "match",
- "resolve",
- "parent",
- "parents",
- "folder",
- "directory",
- "dir",
- "walk",
- "walking",
- "path"
- ],
- "dependencies": {
- "find-up": "^2.1.0"
- },
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- }
-}
diff --git a/node_modules/eslint-module-utils/node_modules/pkg-dir/readme.md b/node_modules/eslint-module-utils/node_modules/pkg-dir/readme.md
deleted file mode 100644
index 3cab12ef0..000000000
--- a/node_modules/eslint-module-utils/node_modules/pkg-dir/readme.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# pkg-dir [](https://travis-ci.org/sindresorhus/pkg-dir)
-
-> Find the root directory of a Node.js project or npm package
-
-
-## Install
-
-```
-$ npm install --save pkg-dir
-```
-
-
-## Usage
-
-```
-/
-└── Users
- └── sindresorhus
- └── foo
- ├── package.json
- └── bar
- ├── baz
- └── example.js
-```
-
-```js
-// example.js
-const pkgDir = require('pkg-dir');
-
-pkgDir(__dirname).then(rootDir => {
- console.log(rootDir);
- //=> '/Users/sindresorhus/foo'
-});
-```
-
-
-## API
-
-### pkgDir([cwd])
-
-Returns a `Promise` for either the project root path or `null` if it couldn't be found.
-
-### pkgDir.sync([cwd])
-
-Returns the project root path or `null`.
-
-#### cwd
-
-Type: `string`
-Default: `process.cwd()`
-
-Directory to start from.
-
-
-## Related
-
-- [pkg-dir-cli](https://github.com/sindresorhus/pkg-dir-cli) - CLI for this module
-- [pkg-up](https://github.com/sindresorhus/pkg-up) - Find the closest package.json file
-- [find-up](https://github.com/sindresorhus/find-up) - Find a file by walking up parent directories
-
-
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/eslint-module-utils/package.json b/node_modules/eslint-module-utils/package.json
index f726b7958..0c0678a5e 100644
--- a/node_modules/eslint-module-utils/package.json
+++ b/node_modules/eslint-module-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "eslint-module-utils",
- "version": "2.6.2",
+ "version": "2.7.4",
"description": "Core utilities to support eslint-plugin-import and other module-related plugins.",
"engines": {
"node": ">=4"
@@ -26,7 +26,11 @@
},
"homepage": "https://github.com/import-js/eslint-plugin-import#readme",
"dependencies": {
- "debug": "^3.2.7",
- "pkg-dir": "^2.0.0"
+ "debug": "^3.2.7"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
}
}
diff --git a/node_modules/eslint-module-utils/parse.js b/node_modules/eslint-module-utils/parse.js
index 3b2ac028f..ac728ec5b 100644
--- a/node_modules/eslint-module-utils/parse.js
+++ b/node_modules/eslint-module-utils/parse.js
@@ -3,9 +3,53 @@ exports.__esModule = true;
const moduleRequire = require('./module-require').default;
const extname = require('path').extname;
+const fs = require('fs');
const log = require('debug')('eslint-plugin-import:parse');
+function getBabelEslintVisitorKeys(parserPath) {
+ if (parserPath.endsWith('index.js')) {
+ const hypotheticalLocation = parserPath.replace('index.js', 'visitor-keys.js');
+ if (fs.existsSync(hypotheticalLocation)) {
+ const keys = moduleRequire(hypotheticalLocation);
+ return keys.default || keys;
+ }
+ }
+ return null;
+}
+
+function keysFromParser(parserPath, parserInstance, parsedResult) {
+ // Exposed by @typescript-eslint/parser and @babel/eslint-parser
+ if (parsedResult && parsedResult.visitorKeys) {
+ return parsedResult.visitorKeys;
+ }
+ if (/.*espree.*/.test(parserPath)) {
+ return parserInstance.VisitorKeys;
+ }
+ if (/.*babel-eslint.*/.test(parserPath)) {
+ return getBabelEslintVisitorKeys(parserPath);
+ }
+ return null;
+}
+
+// this exists to smooth over the unintentional breaking change in v2.7.
+// TODO, semver-major: avoid mutating `ast` and return a plain object instead.
+function makeParseReturn(ast, visitorKeys) {
+ if (ast) {
+ ast.visitorKeys = visitorKeys;
+ ast.ast = ast;
+ }
+ return ast;
+}
+
+function stripUnicodeBOM(text) {
+ return text.charCodeAt(0) === 0xFEFF ? text.slice(1) : text;
+}
+
+function transformHashbang(text) {
+ return text.replace(/^#!([^\r\n]+)/u, (_, captured) => `//${captured}`);
+}
+
exports.default = function parse(path, content, context) {
if (context == null) throw new Error('need context to parse properly');
@@ -42,23 +86,34 @@ exports.default = function parse(path, content, context) {
// require the parser relative to the main module (i.e., ESLint)
const parser = moduleRequire(parserPath);
+ // replicate bom strip and hashbang transform of ESLint
+ // https://github.com/eslint/eslint/blob/b93af98b3c417225a027cabc964c38e779adb945/lib/linter/linter.js#L779
+ content = transformHashbang(stripUnicodeBOM(String(content)));
+
if (typeof parser.parseForESLint === 'function') {
let ast;
try {
- ast = parser.parseForESLint(content, parserOptions).ast;
+ const parserRaw = parser.parseForESLint(content, parserOptions);
+ ast = parserRaw.ast;
+ return makeParseReturn(ast, keysFromParser(parserPath, parser, parserRaw));
} catch (e) {
console.warn();
console.warn('Error while parsing ' + parserOptions.filePath);
console.warn('Line ' + e.lineNumber + ', column ' + e.column + ': ' + e.message);
}
if (!ast || typeof ast !== 'object') {
- console.warn('`parseForESLint` from parser `' + parserPath + '` is invalid and will just be ignored');
+ console.warn(
+ '`parseForESLint` from parser `' +
+ parserPath +
+ '` is invalid and will just be ignored'
+ );
} else {
- return ast;
+ return makeParseReturn(ast, keysFromParser(parserPath, parser, undefined));
}
}
- return parser.parse(content, parserOptions);
+ const ast = parser.parse(content, parserOptions);
+ return makeParseReturn(ast, keysFromParser(parserPath, parser, undefined));
};
function getParserPath(path, context) {
diff --git a/node_modules/eslint-module-utils/pkgDir.js b/node_modules/eslint-module-utils/pkgDir.js
new file mode 100644
index 000000000..34412202f
--- /dev/null
+++ b/node_modules/eslint-module-utils/pkgDir.js
@@ -0,0 +1,11 @@
+'use strict';
+
+const path = require('path');
+const pkgUp = require('./pkgUp').default;
+
+exports.__esModule = true;
+
+exports.default = function (cwd) {
+ const fp = pkgUp({ cwd });
+ return fp ? path.dirname(fp) : null;
+};
diff --git a/node_modules/eslint-module-utils/pkgUp.js b/node_modules/eslint-module-utils/pkgUp.js
new file mode 100644
index 000000000..049869719
--- /dev/null
+++ b/node_modules/eslint-module-utils/pkgUp.js
@@ -0,0 +1,56 @@
+'use strict';
+exports.__esModule = true;
+
+const fs = require('fs');
+const path = require('path');
+
+/**
+ * Derived significantly from package find-up@2.0.0. See license below.
+ *
+ * @copyright Sindre Sorhus
+ * MIT License
+ *
+ * Copyright (c) Sindre Sorhus (https://sindresorhus.com)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+function findUp(filename, cwd) {
+ let dir = path.resolve(cwd || '');
+ const root = path.parse(dir).root;
+
+ const filenames = [].concat(filename);
+
+ // eslint-disable-next-line no-constant-condition
+ while (true) {
+ const file = filenames.find((el) => fs.existsSync(path.resolve(dir, el)));
+
+ if (file) {
+ return path.join(dir, file);
+ }
+ if (dir === root) {
+ return null;
+ }
+
+ dir = path.dirname(dir);
+ }
+}
+
+exports.default = function pkgUp(opts) {
+ return findUp('package.json', opts && opts.cwd);
+};
diff --git a/node_modules/eslint-module-utils/readPkgUp.js b/node_modules/eslint-module-utils/readPkgUp.js
new file mode 100644
index 000000000..6a6a1eea3
--- /dev/null
+++ b/node_modules/eslint-module-utils/readPkgUp.js
@@ -0,0 +1,52 @@
+'use strict';
+exports.__esModule = true;
+
+const fs = require('fs');
+const pkgUp = require('./pkgUp').default;
+
+function stripBOM(str) {
+ return str.replace(/^\uFEFF/, '');
+}
+
+/**
+ * Derived significantly from read-pkg-up@2.0.0. See license below.
+ *
+ * @copyright Sindre Sorhus
+ * MIT License
+ *
+ * Copyright (c) Sindre Sorhus (https://sindresorhus.com)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+exports.default = function readPkgUp(opts) {
+ const fp = pkgUp(opts);
+
+ if (!fp) {
+ return {};
+ }
+
+ try {
+ return {
+ pkg: JSON.parse(stripBOM(fs.readFileSync(fp, { encoding: 'utf-8' }))),
+ path: fp,
+ };
+ } catch (e) {
+ return {};
+ }
+};
diff --git a/node_modules/eslint-module-utils/resolve.js b/node_modules/eslint-module-utils/resolve.js
index f488ea798..4a35c6a47 100644
--- a/node_modules/eslint-module-utils/resolve.js
+++ b/node_modules/eslint-module-utils/resolve.js
@@ -1,14 +1,13 @@
'use strict';
exports.__esModule = true;
-const pkgDir = require('pkg-dir');
-
const fs = require('fs');
const Module = require('module');
const path = require('path');
const hashObject = require('./hash').hashObject;
const ModuleCache = require('./ModuleCache').default;
+const pkgDir = require('./pkgDir').default;
const CASE_SENSITIVE_FS = !fs.existsSync(path.join(__dirname.toUpperCase(), 'reSOLVE.js'));
exports.CASE_SENSITIVE_FS = CASE_SENSITIVE_FS;
@@ -42,7 +41,7 @@ function tryRequire(target, sourceFile) {
} else {
resolved = require.resolve(target);
}
- } catch(e) {
+ } catch (e) {
// If the target does not exist then just return undefined
return undefined;
}
@@ -51,14 +50,14 @@ function tryRequire(target, sourceFile) {
return require(resolved);
}
-// http://stackoverflow.com/a/27382838
-exports.fileExistsWithCaseSync = function fileExistsWithCaseSync(filepath, cacheSettings) {
+// https://stackoverflow.com/a/27382838
+exports.fileExistsWithCaseSync = function fileExistsWithCaseSync(filepath, cacheSettings, strict) {
// don't care if the FS is case-sensitive
if (CASE_SENSITIVE_FS) return true;
// null means it resolved to a builtin
if (filepath === null) return true;
- if (filepath.toLowerCase() === process.cwd().toLowerCase()) return true;
+ if (filepath.toLowerCase() === process.cwd().toLowerCase() && !strict) return true;
const parsedPath = path.parse(filepath);
const dir = parsedPath.dir;
@@ -73,7 +72,7 @@ exports.fileExistsWithCaseSync = function fileExistsWithCaseSync(filepath, cache
if (filenames.indexOf(parsedPath.base) === -1) {
result = false;
} else {
- result = fileExistsWithCaseSync(dir, cacheSettings);
+ result = fileExistsWithCaseSync(dir, cacheSettings, strict);
}
}
fileExistsCache.set(filepath, result);
@@ -175,7 +174,7 @@ function resolverReducer(resolvers, map) {
}
function getBaseDir(sourceFile) {
- return pkgDir.sync(sourceFile) || process.cwd();
+ return pkgDir(sourceFile) || process.cwd();
}
function requireResolver(name, sourceFile) {
// Try to resolve package with conventional name
diff --git a/node_modules/eslint-module-utils/unambiguous.js b/node_modules/eslint-module-utils/unambiguous.js
index 1446632f3..75f21693b 100644
--- a/node_modules/eslint-module-utils/unambiguous.js
+++ b/node_modules/eslint-module-utils/unambiguous.js
@@ -1,8 +1,7 @@
'use strict';
exports.__esModule = true;
-
-const pattern = /(^|;)\s*(export|import)((\s+\w)|(\s*[{*=]))/m;
+const pattern = /(^|;)\s*(export|import)((\s+\w)|(\s*[{*=]))|import\(/m;
/**
* detect possible imports/exports without a full parse.
*
@@ -26,5 +25,5 @@ const unambiguousNodeType = /^(?:(?:Exp|Imp)ort.*Declaration|TSExportAssignment)
* @return {Boolean}
*/
exports.isModule = function isUnambiguousModule(ast) {
- return ast.body.some(node => unambiguousNodeType.test(node.type));
+ return ast.body && ast.body.some(node => unambiguousNodeType.test(node.type));
};
diff --git a/node_modules/eslint-module-utils/visit.js b/node_modules/eslint-module-utils/visit.js
new file mode 100644
index 000000000..77b09850a
--- /dev/null
+++ b/node_modules/eslint-module-utils/visit.js
@@ -0,0 +1,24 @@
+'use strict';
+exports.__esModule = true;
+
+exports.default = function visit(node, keys, visitorSpec) {
+ if (!node || !keys) {
+ return;
+ }
+ const type = node.type;
+ if (typeof visitorSpec[type] === 'function') {
+ visitorSpec[type](node);
+ }
+ const childFields = keys[type];
+ if (!childFields) {
+ return;
+ }
+ childFields.forEach((fieldName) => {
+ [].concat(node[fieldName]).forEach((item) => {
+ visit(item, keys, visitorSpec);
+ });
+ });
+ if (typeof visitorSpec[`${type}:Exit`] === 'function') {
+ visitorSpec[`${type}:Exit`](node);
+ }
+};
diff --git a/node_modules/eslint-plugin-import/CHANGELOG.md b/node_modules/eslint-plugin-import/CHANGELOG.md
index 998055e61..9d63f0555 100644
--- a/node_modules/eslint-plugin-import/CHANGELOG.md
+++ b/node_modules/eslint-plugin-import/CHANGELOG.md
@@ -1,11 +1,182 @@
# Change Log
All notable changes to this project will be documented in this file.
-This project adheres to [Semantic Versioning](http://semver.org/).
-This change log adheres to standards from [Keep a CHANGELOG](http://keepachangelog.com).
+This project adheres to [Semantic Versioning](https://semver.org/).
+This change log adheres to standards from [Keep a CHANGELOG](https://keepachangelog.com).
## [Unreleased]
+## [2.27.5] - 2023-01-16
+
+### Fixed
+- [`order]`: Fix group ranks order when alphabetizing ([#2674], thanks [@Pearce-Ropion])
+
+## [2.27.4] - 2023-01-11
+
+### Fixed
+- `semver` should be a prod dep ([#2668])
+
+## [2.27.3] - 2023-01-11
+
+### Fixed
+- [`no-empty-named-blocks`]: rewrite rule to only check import declarations ([#2666])
+
+## [2.27.2] - 2023-01-11
+
+### Fixed
+- [`no-duplicates`]: do not unconditionally require `typescript` ([#2665])
+
+## [2.27.1] - 2023-01-11
+
+### Fixed
+- `array.prototype.flatmap` should be a prod dep ([#2664], thanks [@cristobal])
+
+## [2.27.0] - 2023-01-11
+
+### Added
+- [`newline-after-import`]: add `considerComments` option ([#2399], thanks [@pri1311])
+- [`no-cycle`]: add `allowUnsafeDynamicCyclicDependency` option ([#2387], thanks [@GerkinDev])
+- [`no-restricted-paths`]: support arrays for `from` and `target` options ([#2466], thanks [@AdriAt360])
+- [`no-anonymous-default-export`]: add `allowNew` option ([#2505], thanks [@DamienCassou])
+- [`order`]: Add `distinctGroup` option ([#2395], thanks [@hyperupcall])
+- [`no-extraneous-dependencies`]: Add `includeInternal` option ([#2541], thanks [@bdwain])
+- [`no-extraneous-dependencies`]: Add `includeTypes` option ([#2543], thanks [@bdwain])
+- [`order`]: new `alphabetize.orderImportKind` option to sort imports with same path based on their kind (`type`, `typeof`) ([#2544], thanks [@stropho])
+- [`consistent-type-specifier-style`]: add rule ([#2473], thanks [@bradzacher])
+- Add [`no-empty-named-blocks`] rule ([#2568], thanks [@guilhermelimak])
+- [`prefer-default-export`]: add "target" option ([#2602], thanks [@azyzz228])
+- [`no-absolute-path`]: add fixer ([#2613], thanks [@adipascu])
+- [`no-duplicates`]: support inline type import with `inlineTypeImport` option ([#2475], thanks [@snewcomer])
+
+### Fixed
+- [`order`]: move nested imports closer to main import entry ([#2396], thanks [@pri1311])
+- [`no-restricted-paths`]: fix an error message ([#2466], thanks [@AdriAt360])
+- [`no-restricted-paths`]: use `Minimatch.match` instead of `minimatch` to comply with Windows Native paths ([#2466], thanks [@AdriAt360])
+- [`order`]: require with member expression could not be fixed if alphabetize.order was used ([#2490], thanks [@msvab])
+- [`order`]: leave more space in rankings for consecutive path groups ([#2506], thanks [@Pearce-Ropion])
+- [`no-cycle`]: add ExportNamedDeclaration statements to dependencies ([#2511], thanks [@BenoitZugmeyer])
+- [`dynamic-import-chunkname`]: prevent false report on a valid webpack magic comment ([#2330], thanks [@mhmadhamster])
+- [`export`]: do not error on TS export overloads ([#1590], thanks [@ljharb])
+- [`no-unresolved`], [`extensions`]: ignore type only exports ([#2436], thanks [@Lukas-Kullmann])
+- `ExportMap`: add missing param to function ([#2589], thanks [@Fdawgs])
+- [`no-unused-modules`]: `checkPkgFieldObject` filters boolean fields from checks ([#2598], thanks [@mpint])
+- [`no-cycle`]: accept Flow `typeof` imports, just like `type` ([#2608], thanks [@gnprice])
+- [`no-import-module-exports`]: avoid a false positive for import variables ([#2315], thanks [@BarryThePenguin])
+
+### Changed
+- [Tests] [`named`]: Run all TypeScript test ([#2427], thanks [@ProdigySim])
+- [readme] note use of typescript in readme `import/extensions` section ([#2440], thanks [@OutdatedVersion])
+- [Docs] [`order`]: use correct default value ([#2392], thanks [@hyperupcall])
+- [meta] replace git.io link in comments with the original URL ([#2444], thanks [@liby])
+- [Docs] remove global install in readme ([#2412], thanks [@aladdin-add])
+- [readme] clarify `eslint-import-resolver-typescript` usage ([#2503], thanks [@JounQin])
+- [Refactor] [`no-cycle`]: Add per-run caching of traversed paths ([#2419], thanks [@nokel81])
+- [Performance] `ExportMap`: add caching after parsing for an ambiguous module ([#2531], thanks [@stenin-nikita])
+- [Docs] [`no-useless-path-segments`]: fix paths ([#2424], thanks [@s-h-a-d-o-w])
+- [Tests] [`no-cycle`]: add passing test cases ([#2438], thanks [@georeith])
+- [Refactor] [`no-extraneous-dependencies`] improve performance using cache ([#2374], thanks [@meowtec])
+- [meta] `CONTRIBUTING.md`: mention inactive PRs ([#2546], thanks [@stropho])
+- [readme] make json for setting groups multiline ([#2570], thanks [@bertyhell])
+- [Tests] [`no-restricted-paths`]: Tests for `import type` statements ([#2459], thanks [@golergka])
+- [Tests] [`no-restricted-paths`]: fix one failing `import type` test case, submitted by [@golergka], thanks [@azyzz228]
+- [Docs] automate docs with eslint-doc-generator ([#2582], thanks [@bmish])
+- [readme] Increase clarity around typescript configuration ([#2588], thanks [@Nfinished])
+- [Docs] update `eslint-doc-generator` to v1.0.0 ([#2605], thanks [@bmish])
+- [Perf] [`no-cycle`], [`no-internal-modules`], [`no-restricted-paths`]: use `anyOf` instead of `oneOf` (thanks [@ljharb], [@remcohaszing])
+
+## [2.26.0] - 2022-04-05
+
+### Added
+- [`no-named-default`], [`no-default-export`], [`prefer-default-export`], [`no-named-export`], [`export`], [`named`], [`namespace`], [`no-unused-modules`]: support arbitrary module namespace names ([#2358], thanks [@sosukesuzuki])
+- [`no-dynamic-require`]: support dynamic import with espree ([#2371], thanks [@sosukesuzuki])
+- [`no-relative-packages`]: add fixer ([#2381], thanks [@forivall])
+
+### Fixed
+- [`default`]: `typescript-eslint-parser`: avoid a crash on exporting as namespace (thanks [@ljharb])
+- [`export`]/TypeScript: false positive for typescript namespace merging ([#1964], thanks [@magarcia])
+- [`no-duplicates`]: ignore duplicate modules in different TypeScript module declarations ([#2378], thanks [@remcohaszing])
+- [`no-unused-modules`]: avoid a crash when processing re-exports ([#2388], thanks [@ljharb])
+
+### Changed
+- [Tests] [`no-nodejs-modules`]: add tests for node protocol URL ([#2367], thanks [@sosukesuzuki])
+- [Tests] [`default`], [`no-anonymous-default-export`], [`no-mutable-exports`], [`no-named-as-default-member`], [`no-named-as-default`]: add tests for arbitrary module namespace names ([#2358], thanks [@sosukesuzuki])
+- [Docs] [`no-unresolved`]: Fix RegExp escaping in readme ([#2332], thanks [@stephtr])
+- [Refactor] [`namespace`]: try to improve performance ([#2340], thanks [@ljharb])
+- [Docs] make rule doc titles consistent ([#2393], thanks [@TheJaredWilcurt])
+- [Docs] [`order`]: TS code examples should use TS code blocks ([#2411], thanks [@MM25Zamanian])
+- [Docs] [`no-unresolved`]: fix link ([#2417], thanks [@kylemh])
+
+## [2.25.4] - 2022-01-02
+
+### Fixed
+- `importType`: avoid crashing on a non-string' ([#2305], thanks [@ljharb])
+- [`first`]: prevent crash when parsing angular templates ([#2210], thanks [@ljharb])
+- `importType`: properly resolve `@/*`-aliased imports as internal ([#2334], thanks [@ombene])
+- [`named`]/`ExportMap`: handle named imports from CJS modules that use dynamic import ([#2341], thanks [@ludofischer])
+
+### Changed
+- [`no-default-import`]: report on the token "default" instead of the entire node ([#2299], thanks [@pmcelhaney])
+- [Docs] [`order`]: Remove duplicate mention of default ([#2280], thanks [@johnthagen])
+- [Deps] update `eslint-module-utils`
+
+## [2.25.3] - 2021-11-09
+
+### Fixed
+- [`extensions`]: ignore unresolveable type-only imports ([#2270], [#2271], thanks [@jablko])
+- `importType`: fix `isExternalModule` calculation ([#2282], thanks [@mx-bernhard])
+- [`no-import-module-exports`]: avoid false positives with a shadowed `module` or `exports` ([#2297], thanks [@ljharb])
+
+### Changed
+- [Docs] [`order`]: add type to the default groups ([#2272], thanks [@charpeni])
+- [readme] Add note to TypeScript docs to install appropriate resolver ([#2279], thanks [@johnthagen])
+- [Refactor] `importType`: combine redundant `isScoped` and `isScopedModule` (thanks [@ljharb])
+- [Docs] HTTP => HTTPS ([#2287], thanks [@Schweinepriester])
+
+## [2.25.2] - 2021-10-12
+
+### Fixed
+- [Deps] update `eslint-module-utils` for real this time ([#2255], thanks [@ljharb])
+
+## [2.25.1] - 2021-10-11
+
+### Fixed
+- [Deps] update `eslint-module-utils`
+
+## [2.25.0] - 2021-10-11
+
+### Added
+- Support `eslint` v8 ([#2191], thanks [@ota-meshi])
+- [`no-unresolved`]: add `caseSensitiveStrict` option ([#1262], thanks [@sergei-startsev])
+- [`no-unused-modules`]: add eslint v8 support ([#2194], thanks [@coderaiser])
+- [`no-restricted-paths`]: add/restore glob pattern support ([#2219], thanks [@stropho])
+- [`no-unused-modules`]: support dynamic imports ([#1660], [#2212], thanks [@maxkomarychev], [@aladdin-add], [@Hypnosphi])
+
+### Fixed
+- [`no-unresolved`]: ignore type-only imports ([#2220], thanks [@jablko])
+- [`order`]: fix sorting imports inside TypeScript module declarations ([#2226], thanks [@remcohaszing])
+- [`default`], `ExportMap`: Resolve extended TypeScript configuration files ([#2240], thanks [@mrmckeb])
+
+### Changed
+- [Refactor] switch to an internal replacement for `pkg-up` and `read-pkg-up` ([#2047], thanks [@mgwalker])
+- [patch] TypeScript config: remove `.d.ts` from [`import/parsers` setting] and [`import/extensions` setting] ([#2220], thanks [@jablko])
+- [Refactor] [`no-unresolved`], [`no-extraneous-dependencies`]: moduleVisitor usage ([#2233], thanks [@jablko])
+
+## [2.24.2] - 2021-08-24
+
+### Fixed
+- [`named`], [`namespace`]: properly handle ExportAllDeclarations ([#2199], thanks [@ljharb])
+
+## [2.24.1] - 2021-08-19
+
+### Fixed
+- `ExportMap`: Add default export when esModuleInterop is true and anything is exported ([#2184], thanks [@Maxim-Mazurok])
+- [`named`], [`namespace`]: properly set reexports on `export * as … from` ([#1998], [#2161], thanks [@ljharb])
+- [`no-duplicates`]: correctly handle case of mixed default/named type imports ([#2149], thanks [@GoodForOneFare], [@nwalters512])
+- [`no-duplicates`]: avoid crash with empty `import type {}` ([#2201], thanks [@ljharb])
+
+### Changed
+- [Docs] `max-dependencies`: 📖 Document `ignoreTypeImports` option ([#2196], thanks [@himynameisdave])
+
## [2.24.0] - 2021-08-08
### Added
@@ -17,11 +188,12 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
### Fixed
- [`no-duplicates`]: ensure autofix avoids excessive newlines ([#2028], thanks [@ertrzyiks])
- [`extensions`]: avoid crashing on partially typed import/export statements ([#2118], thanks [@ljharb])
-- [`no-extraneous-dependencies`]: add ESM intermediate package.json support] ([#2121], thanks [@paztis])
+- [`no-extraneous-dependencies`]: add ESM intermediate package.json support ([#2121], thanks [@paztis])
- Use `context.getPhysicalFilename()` when available (ESLint 7.28+) ([#2160], thanks [@pmcelhaney])
- [`extensions`]/`importType`: fix isScoped treating @/abc as scoped module ([#2146], thanks [@rperello])
### Changed
+- [Docs] [`extensions`]: improved cases for using `@/...` ([#2140], thanks [@wenfangdu])
- [Docs] [`extensions`]: removed incorrect cases ([#2138], thanks [@wenfangdu])
- [Tests] [`order`]: add tests for `pathGroupsExcludedImportTypes: ['type']` ([#2158], thanks [@atav32])
- [Docs] [`order`]: improve the documentation for the `pathGroupsExcludedImportTypes` option ([#2156], thanks [@liby])
@@ -43,7 +215,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- [`order`]: restore default behavior unless `type` is in groups ([#2087], thanks [@grit96])
### Changed
-- [Docs] Add `no-relative-packages` to list of to the list of rules ([#2075], thanks [@arvigeus])
+- [Docs] Add [`no-relative-packages`] to list of to the list of rules ([#2075], thanks [@arvigeus])
## [2.23.2] - 2021-05-15
@@ -88,12 +260,13 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
### Changed
- [Generic Import Callback] Make callback for all imports once in rules ([#1237], thanks [@ljqx])
- [Docs] [`no-named-as-default`]: add semicolon ([#1897], thanks [@bicstone])
-- [Docs] `no-extraneous-dependencies`: correct peerDependencies option default to `true` ([#1993], thanks [@dwardu])
-- [Docs] `order`: Document options required to match ordering example ([#1992], thanks [@silviogutierrez])
-- [Tests] `no-unresolved`: add tests for `import()` ([#2012], thanks [@davidbonnet])
+- [Docs] [`no-extraneous-dependencies`]: correct peerDependencies option default to `true` ([#1993], thanks [@dwardu])
+- [Docs] [`order`]: Document options required to match ordering example ([#1992], thanks [@silviogutierrez])
+- [Tests] [`no-unresolved`]: add tests for `import()` ([#2012], thanks [@davidbonnet])
- [Docs] Add import/recommended ruleset to README ([#2034], thanks [@edemaine])
## [2.22.1] - 2020-09-27
+
### Fixed
- [`default`]/TypeScript: avoid crash on `export =` with a MemberExpression ([#1841], thanks [@ljharb])
- [`extensions`]/importType: Fix @/abc being treated as scoped module ([#1854], thanks [@3nuc])
@@ -104,6 +277,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- [`export`]: add tests for a name collision with `export * from` ([#1704], thanks @tomprats)
## [2.22.0] - 2020-06-26
+
### Added
- [`no-unused-modules`]: consider exported TypeScript interfaces, types and enums ([#1819], thanks [@nicolashenry])
- [`no-cycle`]: allow `maxDepth` option to be `"∞"` (thanks [@ljharb])
@@ -124,16 +298,19 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- [docs] [`imports-first`]: deprecation info and link to `first` docs ([#1835], thanks [@beatrizrezener])
## [2.21.2] - 2020-06-09
+
### Fixed
- [`order`]: avoid a crash on TypeScript’s `export import` syntax ([#1808], thanks [@ljharb])
- [`newline-after-import`]: consider TypeScript `import =` syntax' ([#1811], thanks [@ljharb])
- [`no-internal-modules`]: avoid a crash on a named export declaration ([#1814], thanks [@ljharb])
## [2.21.1] - 2020-06-07
+
### Fixed
- TypeScript: [`import/named`]: avoid requiring `typescript` when not using TS ([#1805], thanks [@ljharb])
## [2.21.0] - 2020-06-07
+
### Added
- [`import/default`]: support default export in TSExportAssignment ([#1528], thanks [@joaovieira])
- [`no-cycle`]: add `ignoreExternal` option ([#1681], thanks [@sveyret])
@@ -155,24 +332,26 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- TypeScript: [`export`]: avoid a crash with `export =` ([#1801], thanks [@ljharb])
### Changed
-- [Refactor] `no-extraneous-dependencies`: use moduleVisitor ([#1735], thanks [@adamborowski])
+- [Refactor] [`no-extraneous-dependencies`]: use moduleVisitor ([#1735], thanks [@adamborowski])
- TypeScript config: Disable [`named`][] ([#1726], thanks [@astorije])
- [readme] Remove duplicate [`no-unused-modules`] from docs ([#1690], thanks [@arvigeus])
-- [Docs] `order`: fix bad inline config ([#1788], thanks [@nickofthyme])
+- [Docs] [`order`]: fix bad inline config ([#1788], thanks [@nickofthyme])
- [Tests] Add fix for Windows Subsystem for Linux ([#1786], thanks [@manuth])
-- [Docs] `no-unused-rules`: Fix docs for unused exports ([#1776], thanks [@barbogast])
+- [Docs] [`no-unused-rules`]: Fix docs for unused exports ([#1776], thanks [@barbogast])
- [eslint] bump minimum v7 version to v7.2.0
## [2.20.2] - 2020-03-28
+
### Fixed
- [`order`]: fix `isExternalModule` detect on windows ([#1651], thanks [@fisker])
- [`order`]: recognize ".." as a "parent" path ([#1658], thanks [@golopot])
- [`no-duplicates`]: fix fixer on cases with default import ([#1666], thanks [@golopot])
- [`no-unused-modules`]: Handle `export { default } from` syntax ([#1631], thanks [@richardxia])
- [`first`]: Add a way to disable `absolute-first` explicitly ([#1664], thanks [@TheCrueltySage])
-- [Docs] `no-webpack-loader-syntax`: Updates webpack URLs ([#1751], thanks [@MikeyBeLike])
+- [Docs] [`no-webpack-loader-syntax`]: Updates webpack URLs ([#1751], thanks [@MikeyBeLike])
## [2.20.1] - 2020-02-01
+
### Fixed
- [`export`]: Handle function overloading in `*.d.ts` ([#1619], thanks [@IvanGoncharov])
- [`no-absolute-path`]: fix a crash with invalid import syntax ([#1616], thanks [@ljharb])
@@ -187,16 +366,17 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
### Changed
- [`import/external-module-folders` setting] behavior is more strict now: it will only match complete path segments ([#1605], thanks [@skozin])
- [meta] fix "files" field to include/exclude the proper files ([#1635], thanks [@ljharb])
-- [Tests] `order`: Add TS import type tests ([#1736], thanks [@kmui2])
+- [Tests] [`order`]: Add TS import type tests ([#1736], thanks [@kmui2])
## [2.20.0] - 2020-01-10
+
### Added
- [`order`]: added `caseInsensitive` as an additional option to `alphabetize` ([#1586], thanks [@dbrewer5])
- [`no-restricted-paths`]: New `except` option per `zone`, allowing exceptions to be defined for a restricted zone ([#1238], thanks [@rsolomon])
- [`order`]: add option pathGroupsExcludedImportTypes to allow ordering of external import types ([#1565], thanks [@Mairu])
### Fixed
-- [`no-unused-modules`]: fix usage of `import/extensions` settings ([#1560], thanks [@stekycz])
+- [`no-unused-modules`]: fix usage of [`import/extensions` setting] ([#1560], thanks [@stekycz])
- [`extensions`]: ignore non-main modules ([#1563], thanks [@saschanaz])
- TypeScript config: lookup for external modules in @types folder ([#1526], thanks [@joaovieira])
- [`no-extraneous-dependencies`]: ensure `node.source` is truthy ([#1589], thanks [@ljharb])
@@ -206,10 +386,12 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- [`extensions`]: improve `ignorePackages` docs ([#1248], thanks [@ivo-stefchev])
## [2.19.1] - 2019-12-08
+
### Fixed
- [`no-extraneous-dependencies`]: ensure `node.source` exists
## [2.19.0] - 2019-12-08
+
### Added
- [`internal-regex` setting]: regex pattern for marking packages "internal" ([#1491], thanks [@Librazy])
- [`group-exports`]: make aggregate module exports valid ([#1472], thanks [@atikenny])
@@ -241,10 +423,12 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- [`no-unused-modules`]/`eslint-module-utils`: Avoid superfluous calls and code ([#1551], thanks [@brettz9])
## [2.18.2] - 2019-07-19
+
### Fixed
- Skip warning on type interfaces ([#1425], thanks [@lencioni])
## [2.18.1] - 2019-07-18
+
### Fixed
- Improve parse perf when using `@typescript-eslint/parser` ([#1409], thanks [@bradzacher])
- [`prefer-default-export`]: don't warn on TypeAlias & TSTypeAliasDeclaration ([#1377], thanks [@sharmilajesupaul])
@@ -255,6 +439,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- [`no-extraneous-dependencies`], `importType`: remove lodash ([#1419], thanks [@ljharb])
## [2.18.0] - 2019-06-24
+
### Added
- Support eslint v6 ([#1393], thanks [@sheepsteak])
- [`order`]: Adds support for correctly sorting unknown types into a single group ([#1375], thanks [@swernerx])
@@ -269,6 +454,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- [`no-named-as-default-member`]: update broken link ([#1389], thanks [@fooloomanzoo])
## [2.17.3] - 2019-05-23
+
### Fixed
- [`no-common-js`]: Also throw an error when assigning ([#1354], thanks [@charlessuh])
- [`no-unused-modules`]: don't crash when lint file outside src-folder ([#1347], thanks [@rfermann])
@@ -279,20 +465,23 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- Improve support for TypeScript declare structures ([#1356], thanks [@christophercurrie])
### Docs
-- add missing `no-unused-modules` in README ([#1358], thanks [@golopot])
+- add missing [`no-unused-modules`] in README ([#1358], thanks [@golopot])
- [`no-unused-modules`]: Indicates usage, plugin defaults to no-op, and add description to main README.md ([#1352], thanks [@johndevedu])
- Document `env` option for `eslint-import-resolver-webpack` ([#1363], thanks [@kgregory])
## [2.17.2] - 2019-04-16
+
### Fixed
- [`no-unused-modules`]: avoid crash when using `ignoreExports`-option ([#1331], [#1323], thanks [@rfermann])
- [`no-unused-modules`]: make sure that rule with no options will not fail ([#1330], [#1334], thanks [@kiwka])
## [2.17.1] - 2019-04-13
+
### Fixed
- require v2.4 of `eslint-module-utils` ([#1322])
## [2.17.0] - 2019-04-13
+
### Added
- [`no-useless-path-segments`]: Add `noUselessIndex` option ([#1290], thanks [@timkraut])
- [`no-duplicates`]: Add autofix ([#1312], thanks [@lydell])
@@ -318,6 +507,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- [`no-commonjs`]: add tests that show corner cases ([#1308], thanks [@TakeScoop])
## [2.16.0] - 2019-01-29
+
### Added
- `typescript` config ([#1257], thanks [@kirill-konshin])
@@ -325,6 +515,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- Memory leak of `SourceCode` objects for all parsed dependencies, resolved. (issue [#1266], thanks [@asapach] and [@sergei-startsev] for digging in)
## [2.15.0] - 2019-01-22
+
### Added
- new rule: [`no-named-export`] ([#1157], thanks [@fsmaia])
@@ -334,6 +525,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- [`named`]: fix destructuring assignment ([#1232], thanks [@ljqx])
## [2.14.0] - 2018-08-13
+
### Added
- [`no-useless-path-segments`]: add commonJS (CJS) support ([#1128], thanks [@1pete])
- [`namespace`]: add JSX check ([#1151], thanks [@jf248])
@@ -349,6 +541,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- add explicit support for RestElement alongside ExperimentalRestProperty (thanks [@ljharb])
## [2.13.0] - 2018-06-24
+
### Added
- Add ESLint 5 support ([#1122], thanks [@ai] and [@ljharb])
- Add [`no-relative-parent-imports`] rule: disallow relative imports from parent directories ([#1093], thanks [@chrislloyd])
@@ -357,12 +550,14 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- `namespace` rule: ensure it works in eslint 5/ecmaVersion 2018 (thanks [@ljharb])
## [2.12.0] - 2018-05-17
+
### Added
- Ignore type imports for [`named`] rule ([#931], thanks [@mattijsbliek])
- Add documentation for [`no-useless-path-segments`] rule ([#1068], thanks [@manovotny])
- `packageDir` option for [`no-extraneous-dependencies`] can be array-valued ([#1085], thanks [@hulkish])
## [2.11.0] - 2018-04-09
+
### Added
- Fixer for [`first`] ([#1046], thanks [@fengkfengk])
- `allow-require` option for [`no-commonjs`] rule ([#880], thanks [@futpib])
@@ -371,11 +566,13 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- memory/CPU regression where ASTs were held in memory ([#1058], thanks [@klimashkin]/[@lukeapage])
## [2.10.0] - 2018-03-29
+
### Added
- Autofixer for [`order`] rule ([#908], thanks [@tihonove])
- Add [`no-cycle`] rule: reports import cycles.
## [2.9.0] - 2018-02-21
+
### Added
- Add [`group-exports`] rule: style-guide rule to report use of multiple named exports ([#721], thanks [@robertrossmann])
- Add [`no-self-import`] rule: forbids a module from importing itself. ([#727], [#449], [#447], thanks [@giodamelio]).
@@ -396,14 +593,17 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
- TypeError for missing AST fields from TypeScript ([#842] / [#944], thanks [@alexgorbatchev])
## [2.7.0] - 2017-07-06
+
### Changed
- [`no-absolute-path`] picks up speed boost, optional AMD support ([#843], thanks [@jseminck])
## [2.6.1] - 2017-06-29
+
### Fixed
- update bundled node resolver dependency to latest version
## [2.6.0] - 2017-06-23
+
### Changed
- update tests / peerDeps for ESLint 4.0 compatibility ([#871], thanks [@mastilver])
- [`memo-parser`] updated to require `filePath` on parser options as it melts
@@ -426,6 +626,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- Add `allow` option to [`no-unassigned-import`] to allow for files that match the globs ([#671], [#737], thanks [@kevin940726]).
## [2.3.0] - 2017-05-18
+
### Added
- [`no-anonymous-default-export`] rule: report anonymous default exports ([#712], thanks [@duncanbeevers]).
- Add new value to [`order`]'s `newlines-between` option to allow newlines inside import groups ([#627], [#628], thanks [@giodamelio])
@@ -440,8 +641,8 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- "default is a reserved keyword" in no-maned-default tests by locking down babylon to 6.15.0 (#756, thanks @gmathieu)
- support scoped modules containing non word characters
-
## [2.2.0] - 2016-11-07
+
### Fixed
- Corrected a few gaffs in the auto-ignore logic to fix major performance issues
with projects that did not explicitly ignore `node_modules`. ([#654])
@@ -450,6 +651,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- [`prefer-default-export`]: fixed crash on export extensions ([#653])
## [2.1.0] - 2016-11-02
+
### Added
- Add [`no-named-default`] rule: style-guide rule to report use of unnecessarily named default imports ([#596], thanks [@ntdb])
- [`no-extraneous-dependencies`]: check globs against CWD + absolute path ([#602] + [#630], thanks [@ljharb])
@@ -462,10 +664,12 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- Fixed documentation for the default values for the [`order`] rule ([#601])
## [2.0.1] - 2016-10-06
+
### Fixed
- Fixed code that relied on removed dependencies. ([#604])
## [2.0.0]! - 2016-09-30
+
### Added
- [`unambiguous`] rule: report modules that are not unambiguously ES modules.
- `recommended` shared config. Roughly `errors` and `warnings` mixed together,
@@ -491,6 +695,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- [`no-internal-modules`]: support `@`-scoped packages ([#577]+[#578], thanks [@spalger])
## [1.16.0] - 2016-09-22
+
### Added
- Added [`no-dynamic-require`] rule: forbid `require()` calls with expressions. ([#567], [#568])
- Added [`no-internal-modules`] rule: restrict deep package imports to specific folders. ([#485], thanks [@spalger]!)
@@ -501,6 +706,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- [`default`]: allow re-export of values from ignored files as default ([#545], thanks [@skyrpex])
## [1.15.0] - 2016-09-12
+
### Added
- Added an `allow` option to [`no-nodejs-modules`] to allow exceptions ([#452], [#509]).
- Added [`no-absolute-path`] rule ([#530], [#538])
@@ -511,6 +717,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- [`no-named-as-default-member`] Allow default import to have a property named "default" ([#507], [#508], thanks [@jquense] for both!)
## [1.14.0] - 2016-08-22
+
### Added
- [`import/parsers` setting]: parse some dependencies (i.e. TypeScript!) with a different parser than the ESLint-configured parser. ([#503])
@@ -518,6 +725,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- [`namespace`] exception for get property from `namespace` import, which are re-export from commonjs module ([#499] fixes [#416], thanks [@wKich])
## [1.13.0] - 2016-08-11
+
### Added
- `allowComputed` option for [`namespace`] rule. If set to `true`, won't report
computed member references to namespaces. (see [#456])
@@ -530,15 +738,18 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
in an imported file. (fixes [#478], thanks [@rhys-vdw])
## [1.12.0] - 2016-07-26
+
### Added
- [`import/external-module-folders` setting]: a possibility to configure folders for "external" modules ([#444], thanks [@zloirock])
## [1.11.1] - 2016-07-20
+
### Fixed
- [`newline-after-import`] exception for `switch` branches with `require`s iff parsed as `sourceType:'module'`.
(still [#441], thanks again [@ljharb])
## [1.11.0] - 2016-07-17
+
### Added
- Added an `peerDependencies` option to [`no-extraneous-dependencies`] to allow/forbid peer dependencies ([#423], [#428], thanks [@jfmengels]!).
@@ -547,20 +758,24 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
function expression (e.g. `() => require('a') || require('b')`). ([#441], thanks [@ljharb])
## [1.10.3] - 2016-07-08
+
### Fixed
- removing `Symbol` dependencies (i.e. `for-of` loops) due to Node 0.10 polyfill
issue (see [#415]). Should not make any discernible semantic difference.
## [1.10.2] - 2016-07-04
+
### Fixed
- Something horrible happened during `npm prepublish` of 1.10.1.
Several `rm -rf node_modules && npm i` and `gulp clean && npm prepublish`s later, it is rebuilt and republished as 1.10.2. Thanks [@rhettlivingston] for noticing and reporting!
## [1.10.1] - 2016-07-02 [YANKED]
+
### Added
- Officially support ESLint 3.x. (peerDependencies updated to `2.x - 3.x`)
## [1.10.0] - 2016-06-30
+
### Added
- Added new rule [`no-restricted-paths`]. ([#155]/[#371], thanks [@lo1tuma])
- [`import/core-modules` setting]: allow configuration of additional module names,
@@ -571,14 +786,17 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- Fixed crash with `newline-after-import` related to the use of switch cases. (fixes [#386], thanks [@ljharb] for reporting) ([#395])
## [1.9.2] - 2016-06-21
+
### Fixed
- Issues with ignored/CJS files in [`export`] and [`no-deprecated`] rules. ([#348], [#370])
## [1.9.1] - 2016-06-16
+
### Fixed
- Reordered precedence for loading resolvers. ([#373])
## [1.9.0] - 2016-06-10
+
### Added
- Added support TomDoc comments to [`no-deprecated`]. ([#321], thanks [@josh])
- Added support for loading custom resolvers ([#314], thanks [@le0nik])
@@ -587,6 +805,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- [`prefer-default-export`] handles `export function` and `export const` in same file ([#359], thanks [@scottnonnenberg])
## [1.8.1] - 2016-05-23
+
### Fixed
- `export * from 'foo'` now properly ignores a `default` export from `foo`, if any. ([#328]/[#332], thanks [@jkimbo])
This impacts all static analysis of imported names. ([`default`], [`named`], [`namespace`], [`export`])
@@ -596,6 +815,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- [`prefer-default-export`] properly handles deep destructuring, `export * from ...`, and files with no exports. ([#342]+[#343], thanks [@scottnonnenberg])
## [1.8.0] - 2016-05-11
+
### Added
- [`prefer-default-export`], new rule. ([#308], thanks [@gavriguy])
@@ -604,6 +824,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- Make [`no-extraneous-dependencies`] handle scoped packages ([#316], thanks [@jfmengels])
## [1.7.0] - 2016-05-06
+
### Added
- [`newline-after-import`], new rule. ([#245], thanks [@singles])
- Added an `optionalDependencies` option to [`no-extraneous-dependencies`] to allow/forbid optional dependencies ([#266], thanks [@jfmengels]).
@@ -618,6 +839,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
module is not resolved. Also, never report for builtins (i.e. `path`). ([#296])
## [1.6.1] - 2016-04-28
+
### Fixed
- [`no-named-as-default-member`]: don't crash on rest props. ([#281], thanks [@SimenB])
- support for Node 6: don't pass `null` to `path` functions.
@@ -625,6 +847,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
config ([#288]).
## [1.6.0] - 2016-04-25
+
### Added
- add [`no-named-as-default-member`] to `warnings` canned config
- add [`no-extraneous-dependencies`] rule ([#241], thanks [@jfmengels])
@@ -643,6 +866,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- [`no-named-as-default-member`] had a crash on destructuring in loops (thanks for heads up from [@lemonmade])
## [1.5.0] - 2016-04-18
+
### Added
- report resolver errors at the top of the linted file
- add [`no-namespace`] rule ([#239], thanks [@singles])
@@ -655,6 +879,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- support for Node 0.10, via `es6-*` ponyfills. Using native Map/Set/Symbol.
## [1.4.0] - 2016-03-25
+
### Added
- Resolver plugin interface v2: more explicit response format that more clearly covers the found-but-core-module case, where there is no path.
Still backwards-compatible with the original version of the resolver spec.
@@ -665,6 +890,7 @@ Yanked due to critical issue in eslint-module-utils with cache key resulting fro
- using `es6-*` ponyfills instead of `babel-runtime`
## [1.3.0] - 2016-03-20
+
Major perf improvements. Between parsing only once and ignoring gigantic, non-module `node_modules`,
there is very little added time.
@@ -680,6 +906,7 @@ memoizing parser, and takes only 27s with naked `babel-eslint` (thus, reparsing
something that looks like an `export` is detected in the module content.
## [1.2.0] - 2016-03-19
+
Thanks [@lencioni] for identifying a huge amount of rework in resolve and kicking
off a bunch of memoization.
@@ -690,6 +917,7 @@ I'm seeing 62% improvement over my normal test codebase when executing only
- added caching to core/resolve via [#214], configured via [`import/cache` setting]
## [1.1.0] - 2016-03-15
+
### Added
- Added an [`ignore`](./docs/rules/no-unresolved.md#ignore) option to [`no-unresolved`] for those pesky files that no resolver can find. (still prefer enhancing the Webpack and Node resolvers to using it, though). See [#89] for details.
@@ -741,6 +969,7 @@ I'm seeing 62% improvement over my normal test codebase when executing only
- `babylon` as default import parser (see Breaking)
## [0.13.0] - 2016-02-08
+
### Added
- [`no-commonjs`] rule
- [`no-amd`] rule
@@ -749,17 +978,21 @@ I'm seeing 62% improvement over my normal test codebase when executing only
- Removed vestigial `no-require` rule. [`no-commonjs`] is more complete.
## [0.12.2] - 2016-02-06 [YANKED]
+
Unpublished from npm and re-released as 0.13.0. See [#170].
## [0.12.1] - 2015-12-17
+
### Changed
- Broke docs for rules out into individual files.
## [0.12.0] - 2015-12-14
+
### Changed
- Ignore [`import/ignore` setting] if exports are actually found in the parsed module. Does this to support use of `jsnext:main` in `node_modules` without the pain of managing an allow list or a nuanced deny list.
## [0.11.0] - 2015-11-27
+
### Added
- Resolver plugins. Now the linter can read Webpack config, properly follow aliases and ignore externals, dismisses inline loaders, etc. etc.!
@@ -776,6 +1009,7 @@ for info on changes for earlier releases.
[`import/external-module-folders` setting]: ./README.md#importexternal-module-folders
[`internal-regex` setting]: ./README.md#importinternal-regex
+[`consistent-type-specifier-style`]: ./docs/rules/consistent-type-specifier-style.md
[`default`]: ./docs/rules/default.md
[`dynamic-import-chunkname`]: ./docs/rules/dynamic-import-chunkname.md
[`export`]: ./docs/rules/export.md
@@ -797,6 +1031,7 @@ for info on changes for earlier releases.
[`no-deprecated`]: ./docs/rules/no-deprecated.md
[`no-duplicates`]: ./docs/rules/no-duplicates.md
[`no-dynamic-require`]: ./docs/rules/no-dynamic-require.md
+[`no-empty-named-blocks`]: ./docs/rules/no-empty-named-blocks.md
[`no-extraneous-dependencies`]: ./docs/rules/no-extraneous-dependencies.md
[`no-import-module-exports`]: ./docs/rules/no-import-module-exports.md
[`no-internal-modules`]: ./docs/rules/no-internal-modules.md
@@ -822,11 +1057,80 @@ for info on changes for earlier releases.
[`memo-parser`]: ./memo-parser/README.md
+[#2664]: https://github.com/import-js/eslint-plugin-import/pull/2664
+[#2613]: https://github.com/import-js/eslint-plugin-import/pull/2613
+[#2608]: https://github.com/import-js/eslint-plugin-import/pull/2608
+[#2605]: https://github.com/import-js/eslint-plugin-import/pull/2605
+[#2602]: https://github.com/import-js/eslint-plugin-import/pull/2602
+[#2598]: https://github.com/import-js/eslint-plugin-import/pull/2598
+[#2589]: https://github.com/import-js/eslint-plugin-import/pull/2589
+[#2588]: https://github.com/import-js/eslint-plugin-import/pull/2588
+[#2582]: https://github.com/import-js/eslint-plugin-import/pull/2582
+[#2570]: https://github.com/import-js/eslint-plugin-import/pull/2570
+[#2568]: https://github.com/import-js/eslint-plugin-import/pull/2568
+[#2546]: https://github.com/import-js/eslint-plugin-import/pull/2546
+[#2541]: https://github.com/import-js/eslint-plugin-import/pull/2541
+[#2531]: https://github.com/import-js/eslint-plugin-import/pull/2531
+[#2511]: https://github.com/import-js/eslint-plugin-import/pull/2511
+[#2506]: https://github.com/import-js/eslint-plugin-import/pull/2506
+[#2503]: https://github.com/import-js/eslint-plugin-import/pull/2503
+[#2490]: https://github.com/import-js/eslint-plugin-import/pull/2490
+[#2475]: https://github.com/import-js/eslint-plugin-import/pull/2475
+[#2473]: https://github.com/import-js/eslint-plugin-import/pull/2473
+[#2466]: https://github.com/import-js/eslint-plugin-import/pull/2466
+[#2459]: https://github.com/import-js/eslint-plugin-import/pull/2459
+[#2440]: https://github.com/import-js/eslint-plugin-import/pull/2440
+[#2438]: https://github.com/import-js/eslint-plugin-import/pull/2438
+[#2436]: https://github.com/import-js/eslint-plugin-import/pull/2436
+[#2427]: https://github.com/import-js/eslint-plugin-import/pull/2427
+[#2424]: https://github.com/import-js/eslint-plugin-import/pull/2424
+[#2419]: https://github.com/import-js/eslint-plugin-import/pull/2419
+[#2417]: https://github.com/import-js/eslint-plugin-import/pull/2417
+[#2411]: https://github.com/import-js/eslint-plugin-import/pull/2411
+[#2399]: https://github.com/import-js/eslint-plugin-import/pull/2399
+[#2396]: https://github.com/import-js/eslint-plugin-import/pull/2396
+[#2395]: https://github.com/import-js/eslint-plugin-import/pull/2395
+[#2393]: https://github.com/import-js/eslint-plugin-import/pull/2393
+[#2388]: https://github.com/import-js/eslint-plugin-import/pull/2388
+[#2387]: https://github.com/import-js/eslint-plugin-import/pull/2387
+[#2381]: https://github.com/import-js/eslint-plugin-import/pull/2381
+[#2378]: https://github.com/import-js/eslint-plugin-import/pull/2378
+[#2374]: https://github.com/import-js/eslint-plugin-import/pull/2374
+[#2371]: https://github.com/import-js/eslint-plugin-import/pull/2371
+[#2367]: https://github.com/import-js/eslint-plugin-import/pull/2367
+[#2358]: https://github.com/import-js/eslint-plugin-import/pull/2358
+[#2341]: https://github.com/import-js/eslint-plugin-import/pull/2341
+[#2332]: https://github.com/import-js/eslint-plugin-import/pull/2332
+[#2334]: https://github.com/import-js/eslint-plugin-import/pull/2334
+[#2330]: https://github.com/import-js/eslint-plugin-import/pull/2330
+[#2315]: https://github.com/import-js/eslint-plugin-import/pull/2315
+[#2305]: https://github.com/import-js/eslint-plugin-import/pull/2305
+[#2299]: https://github.com/import-js/eslint-plugin-import/pull/2299
+[#2297]: https://github.com/import-js/eslint-plugin-import/pull/2297
+[#2287]: https://github.com/import-js/eslint-plugin-import/pull/2287
+[#2282]: https://github.com/import-js/eslint-plugin-import/pull/2282
+[#2280]: https://github.com/import-js/eslint-plugin-import/pull/2280
+[#2279]: https://github.com/import-js/eslint-plugin-import/pull/2279
+[#2272]: https://github.com/import-js/eslint-plugin-import/pull/2272
+[#2271]: https://github.com/import-js/eslint-plugin-import/pull/2271
+[#2270]: https://github.com/import-js/eslint-plugin-import/pull/2270
+[#2240]: https://github.com/import-js/eslint-plugin-import/pull/2240
+[#2233]: https://github.com/import-js/eslint-plugin-import/pull/2233
+[#2226]: https://github.com/import-js/eslint-plugin-import/pull/2226
+[#2220]: https://github.com/import-js/eslint-plugin-import/pull/2220
+[#2219]: https://github.com/import-js/eslint-plugin-import/pull/2219
+[#2212]: https://github.com/import-js/eslint-plugin-import/pull/2212
+[#2196]: https://github.com/import-js/eslint-plugin-import/pull/2196
+[#2194]: https://github.com/import-js/eslint-plugin-import/pull/2194
+[#2191]: https://github.com/import-js/eslint-plugin-import/pull/2191
+[#2184]: https://github.com/import-js/eslint-plugin-import/pull/2184
[#2179]: https://github.com/import-js/eslint-plugin-import/pull/2179
[#2160]: https://github.com/import-js/eslint-plugin-import/pull/2160
[#2158]: https://github.com/import-js/eslint-plugin-import/pull/2158
[#2156]: https://github.com/import-js/eslint-plugin-import/pull/2156
+[#2149]: https://github.com/import-js/eslint-plugin-import/pull/2149
[#2146]: https://github.com/import-js/eslint-plugin-import/pull/2146
+[#2140]: https://github.com/import-js/eslint-plugin-import/pull/2140
[#2138]: https://github.com/import-js/eslint-plugin-import/pull/2138
[#2121]: https://github.com/import-js/eslint-plugin-import/pull/2121
[#2112]: https://github.com/import-js/eslint-plugin-import/pull/2112
@@ -837,6 +1141,7 @@ for info on changes for earlier releases.
[#2083]: https://github.com/import-js/eslint-plugin-import/pull/2083
[#2075]: https://github.com/import-js/eslint-plugin-import/pull/2075
[#2071]: https://github.com/import-js/eslint-plugin-import/pull/2071
+[#2047]: https://github.com/import-js/eslint-plugin-import/pull/2047
[#2034]: https://github.com/import-js/eslint-plugin-import/pull/2034
[#2028]: https://github.com/import-js/eslint-plugin-import/pull/2028
[#2026]: https://github.com/import-js/eslint-plugin-import/pull/2026
@@ -894,6 +1199,7 @@ for info on changes for earlier releases.
[#1676]: https://github.com/import-js/eslint-plugin-import/pull/1676
[#1666]: https://github.com/import-js/eslint-plugin-import/pull/1666
[#1664]: https://github.com/import-js/eslint-plugin-import/pull/1664
+[#1660]: https://github.com/import-js/eslint-plugin-import/pull/1660
[#1658]: https://github.com/import-js/eslint-plugin-import/pull/1658
[#1651]: https://github.com/import-js/eslint-plugin-import/pull/1651
[#1626]: https://github.com/import-js/eslint-plugin-import/pull/1626
@@ -965,6 +1271,7 @@ for info on changes for earlier releases.
[#1294]: https://github.com/import-js/eslint-plugin-import/pull/1294
[#1290]: https://github.com/import-js/eslint-plugin-import/pull/1290
[#1277]: https://github.com/import-js/eslint-plugin-import/pull/1277
+[#1262]: https://github.com/import-js/eslint-plugin-import/pull/1262
[#1257]: https://github.com/import-js/eslint-plugin-import/pull/1257
[#1253]: https://github.com/import-js/eslint-plugin-import/pull/1253
[#1248]: https://github.com/import-js/eslint-plugin-import/pull/1248
@@ -1074,10 +1381,24 @@ for info on changes for earlier releases.
[#211]: https://github.com/import-js/eslint-plugin-import/pull/211
[#164]: https://github.com/import-js/eslint-plugin-import/pull/164
[#157]: https://github.com/import-js/eslint-plugin-import/pull/157
+[#2674]: https://github.com/import-js/eslint-plugin-import/issues/2674
+[#2668]: https://github.com/import-js/eslint-plugin-import/issues/2668
+[#2666]: https://github.com/import-js/eslint-plugin-import/issues/2666
+[#2665]: https://github.com/import-js/eslint-plugin-import/issues/2665
+[#2444]: https://github.com/import-js/eslint-plugin-import/issues/2444
+[#2412]: https://github.com/import-js/eslint-plugin-import/issues/2412
+[#2392]: https://github.com/import-js/eslint-plugin-import/issues/2392
+[#2340]: https://github.com/import-js/eslint-plugin-import/issues/2340
+[#2255]: https://github.com/import-js/eslint-plugin-import/issues/2255
+[#2210]: https://github.com/import-js/eslint-plugin-import/issues/2210
+[#2201]: https://github.com/import-js/eslint-plugin-import/issues/2201
+[#2199]: https://github.com/import-js/eslint-plugin-import/issues/2199
+[#2161]: https://github.com/import-js/eslint-plugin-import/issues/2161
[#2118]: https://github.com/import-js/eslint-plugin-import/issues/2118
[#2067]: https://github.com/import-js/eslint-plugin-import/issues/2067
-[#2056]: https://github.com/import-js/eslint-plugin-import/issues/2056
[#2063]: https://github.com/import-js/eslint-plugin-import/issues/2063
+[#2056]: https://github.com/import-js/eslint-plugin-import/issues/2056
+[#1998]: https://github.com/import-js/eslint-plugin-import/issues/1998
[#1965]: https://github.com/import-js/eslint-plugin-import/issues/1965
[#1924]: https://github.com/import-js/eslint-plugin-import/issues/1924
[#1854]: https://github.com/import-js/eslint-plugin-import/issues/1854
@@ -1095,6 +1416,7 @@ for info on changes for earlier releases.
[#1631]: https://github.com/import-js/eslint-plugin-import/issues/1631
[#1616]: https://github.com/import-js/eslint-plugin-import/issues/1616
[#1613]: https://github.com/import-js/eslint-plugin-import/issues/1613
+[#1590]: https://github.com/import-js/eslint-plugin-import/issues/1590
[#1589]: https://github.com/import-js/eslint-plugin-import/issues/1589
[#1565]: https://github.com/import-js/eslint-plugin-import/issues/1565
[#1366]: https://github.com/import-js/eslint-plugin-import/issues/1366
@@ -1181,7 +1503,21 @@ for info on changes for earlier releases.
[#119]: https://github.com/import-js/eslint-plugin-import/issues/119
[#89]: https://github.com/import-js/eslint-plugin-import/issues/89
-[Unreleased]: https://github.com/import-js/eslint-plugin-import/compare/v2.24.0...HEAD
+[Unreleased]: https://github.com/import-js/eslint-plugin-import/compare/v2.27.5...HEAD
+[2.27.5]: https://github.com/import-js/eslint-plugin-import/compare/v2.27.4...v2.27.5
+[2.27.4]: https://github.com/import-js/eslint-plugin-import/compare/v2.27.3...v2.27.4
+[2.27.3]: https://github.com/import-js/eslint-plugin-import/compare/v2.27.2...v2.27.3
+[2.27.2]: https://github.com/import-js/eslint-plugin-import/compare/v2.27.1...v2.27.2
+[2.27.1]: https://github.com/import-js/eslint-plugin-import/compare/v2.27.0...v2.27.1
+[2.27.0]: https://github.com/import-js/eslint-plugin-import/compare/v2.26.0...v2.27.0
+[2.26.0]: https://github.com/import-js/eslint-plugin-import/compare/v2.25.4...v2.26.0
+[2.25.4]: https://github.com/import-js/eslint-plugin-import/compare/v2.25.3...v2.25.4
+[2.25.3]: https://github.com/import-js/eslint-plugin-import/compare/v2.25.2...v2.25.3
+[2.25.2]: https://github.com/import-js/eslint-plugin-import/compare/v2.25.1...v2.25.2
+[2.25.1]: https://github.com/import-js/eslint-plugin-import/compare/v2.25.0...v2.25.1
+[2.25.0]: https://github.com/import-js/eslint-plugin-import/compare/v2.24.2...v2.25.0
+[2.24.2]: https://github.com/import-js/eslint-plugin-import/compare/v2.24.1...v2.24.2
+[2.24.1]: https://github.com/import-js/eslint-plugin-import/compare/v2.24.0...v2.24.1
[2.24.0]: https://github.com/import-js/eslint-plugin-import/compare/v2.23.4...v2.24.0
[2.23.4]: https://github.com/import-js/eslint-plugin-import/compare/v2.23.3...v2.23.4
[2.23.3]: https://github.com/import-js/eslint-plugin-import/compare/v2.23.2...v2.23.3
@@ -1266,6 +1602,7 @@ for info on changes for earlier releases.
[@aberezkin]: https://github.com/aberezkin
[@adamborowski]: https://github.com/adamborowski
[@adjerbetian]: https://github.com/adjerbetian
+[@AdriAt360]: https://github.com/AdriAt360
[@ai]: https://github.com/ai
[@aladdin-add]: https://github.com/aladdin-add
[@alex-page]: https://github.com/alex-page
@@ -1279,11 +1616,15 @@ for info on changes for earlier releases.
[@atav32]: https://github.com/atav32
[@atikenny]: https://github.com/atikenny
[@atos1990]: https://github.com/atos1990
+[@azyzz228]: https://github.com/azyzz228
[@barbogast]: https://github.com/barbogast
+[@BarryThePenguin]: https://github.com/BarryThePenguin
[@be5invis]: https://github.com/be5invis
[@beatrizrezener]: https://github.com/beatrizrezener
[@benmosher]: https://github.com/benmosher
[@benmunro]: https://github.com/benmunro
+[@BenoitZugmeyer]: https://github.com/BenoitZugmeyer
+[@bertyhell]: https://github.com/bertyhell
[@bicstone]: https://github.com/bicstone
[@Blasz]: https://github.com/Blasz
[@bmish]: https://github.com/bmish
@@ -1293,10 +1634,13 @@ for info on changes for earlier releases.
[@brendo]: https://github.com/brendo
[@brettz9]: https://github.com/brettz9
[@charlessuh]: https://github.com/charlessuh
+[@charpeni]: https://github.com/charpeni
[@cherryblossom000]: https://github.com/cherryblossom000
[@chrislloyd]: https://github.com/chrislloyd
[@christianvuerings]: https://github.com/christianvuerings
[@christophercurrie]: https://github.com/christophercurrie
+[@cristobal]: https://github.com/cristobal
+[@DamienCassou]: https://github.com/DamienCassou
[@danny-andrews]: https://github.com/dany-andrews
[@darkartur]: https://github.com/darkartur
[@davidbonnet]: https://github.com/davidbonnet
@@ -1314,6 +1658,7 @@ for info on changes for earlier releases.
[@ernestostifano]: https://github.com/ernestostifano
[@ertrzyiks]: https://github.com/ertrzyiks
[@fa93hws]: https://github.com/fa93hws
+[@Fdawgs]: https://github.com/Fdawgs
[@fengkfengk]: https://github.com/fengkfengk
[@fernandopasik]: https://github.com/fernandopasik
[@feychenie]: https://github.com/feychenie
@@ -1328,17 +1673,25 @@ for info on changes for earlier releases.
[@gajus]: https://github.com/gajus
[@gausie]: https://github.com/gausie
[@gavriguy]: https://github.com/gavriguy
+[@georeith]: https://github.com/georeith
[@giodamelio]: https://github.com/giodamelio
+[@gnprice]: https://github.com/gnprice
+[@golergka]: https://github.com/golergka
[@golopot]: https://github.com/golopot
+[@GoodForOneFare]: https://github.com/GoodForOneFare
[@graingert]: https://github.com/graingert
[@grit96]: https://github.com/grit96
+[@guilhermelimak]: https://github.com/guilhermelimak
[@guillaumewuip]: https://github.com/guillaumewuip
[@hayes]: https://github.com/hayes
+[@himynameisdave]: https://github.com/himynameisdave
[@hulkish]: https://github.com/hulkish
+[@hyperupcall]: https://github.com/hyperupcall
[@Hypnosphi]: https://github.com/Hypnosphi
[@isiahmeadows]: https://github.com/isiahmeadows
[@IvanGoncharov]: https://github.com/IvanGoncharov
[@ivo-stefchev]: https://github.com/ivo-stefchev
+[@jablko]: https://github.com/jablko
[@jakubsta]: https://github.com/jakubsta
[@jeffshaver]: https://github.com/jeffshaver
[@jf248]: https://github.com/jf248
@@ -1347,6 +1700,7 @@ for info on changes for earlier releases.
[@jkimbo]: https://github.com/jkimbo
[@joaovieira]: https://github.com/joaovieira
[@johndevedu]: https://github.com/johndevedu
+[@johnthagen]: https://github.com/johnthagen
[@jonboiser]: https://github.com/jonboiser
[@josh]: https://github.com/josh
[@JounQin]: https://github.com/JounQin
@@ -1362,8 +1716,9 @@ for info on changes for earlier releases.
[@kiwka]: https://github.com/kiwka
[@klimashkin]: https://github.com/klimashkin
[@kmui2]: https://github.com/kmui2
-[@KostyaZgara]: https://github.com/KostyaZgara
[@knpwrs]: https://github.com/knpwrs
+[@KostyaZgara]: https://github.com/KostyaZgara
+[@kylemh]: https://github.com/kylemh
[@laysent]: https://github.com/laysent
[@le0nik]: https://github.com/le0nik
[@lemonmade]: https://github.com/lemonmade
@@ -1377,8 +1732,11 @@ for info on changes for earlier releases.
[@lo1tuma]: https://github.com/lo1tuma
[@loganfsmyth]: https://github.com/loganfsmyth
[@luczsoma]: https://github.com/luczsoma
+[@ludofischer]: https://github.com/ludofischer
+[@Lukas-Kullmann]: https://github.com/Lukas-Kullmann
[@lukeapage]: https://github.com/lukeapage
[@lydell]: https://github.com/lydell
+[@magarcia]: https://github.com/magarcia
[@Mairu]: https://github.com/Mairu
[@malykhinvi]: https://github.com/malykhinvi
[@manovotny]: https://github.com/manovotny
@@ -1389,23 +1747,40 @@ for info on changes for earlier releases.
[@MatthiasKunnen]: https://github.com/MatthiasKunnen
[@mattijsbliek]: https://github.com/mattijsbliek
[@Maxim-Mazurok]: https://github.com/Maxim-Mazurok
+[@maxkomarychev]: https://github.com/maxkomarychev
[@maxmalov]: https://github.com/maxmalov
+[@meowtec]: https://github.com/meowtec
+[@mgwalker]: https://github.com/mgwalker
+[@mhmadhamster]: https://github.com/MhMadHamster
[@MikeyBeLike]: https://github.com/MikeyBeLike
+[@mpint]: https://github.com/mpint
[@mplewis]: https://github.com/mplewis
+[@mrmckeb]: https://github.com/mrmckeb
+[@msvab]: https://github.com/msvab
+[@mx-bernhard]: https://github.com/mx-bernhard
+[@Nfinished]: https://github.com/Nfinished
[@nickofthyme]: https://github.com/nickofthyme
[@nicolashenry]: https://github.com/nicolashenry
[@noelebrun]: https://github.com/noelebrun
[@ntdb]: https://github.com/ntdb
+[@nwalters512]: https://github.com/nwalters512
+[@ombene]: https://github.com/ombene
+[@ota-meshi]: https://github.com/ota-meshi
+[@OutdatedVersion]: https://github.com/OutdatedVersion
[@panrafal]: https://github.com/panrafal
[@paztis]: https://github.com/paztis
[@pcorpet]: https://github.com/pcorpet
+[@Pearce-Ropion]: https://github.com/Pearce-Ropion
[@Pessimistress]: https://github.com/Pessimistress
[@pmcelhaney]: https://github.com/pmcelhaney
[@preco21]: https://github.com/preco21
+[@pri1311]: https://github.com/pri1311
+[@ProdigySim]: https://github.com/ProdigySim
[@pzhine]: https://github.com/pzhine
[@ramasilveyra]: https://github.com/ramasilveyra
[@randallreedjr]: https://github.com/randallreedjr
[@redbugz]: https://github.com/redbugz
+[@remcohaszing]: https://github.com/remcohaszing
[@rfermann]: https://github.com/rfermann
[@rhettlivingston]: https://github.com/rhettlivingston
[@rhys-vdw]: https://github.com/rhys-vdw
@@ -1418,6 +1793,7 @@ for info on changes for earlier releases.
[@saschanaz]: https://github.com/saschanaz
[@schmidsi]: https://github.com/schmidsi
[@schmod]: https://github.com/schmod
+[@Schweinepriester]: https://github.com/Schweinepriester
[@scottnonnenberg]: https://github.com/scottnonnenberg
[@sergei-startsev]: https://github.com/sergei-startsev
[@sharmilajesupaul]: https://github.com/sharmilajesupaul
@@ -1428,11 +1804,15 @@ for info on changes for earlier releases.
[@singles]: https://github.com/singles
[@skozin]: https://github.com/skozin
[@skyrpex]: https://github.com/skyrpex
+[@snewcomer]: https://github.com/snewcomer
[@sompylasar]: https://github.com/sompylasar
[@soryy708]: https://github.com/soryy708
+[@sosukesuzuki]: https://github.com/sosukesuzuki
[@spalger]: https://github.com/spalger
[@st-sloth]: https://github.com/st-sloth
[@stekycz]: https://github.com/stekycz
+[@stenin-nikita]: https://github.com/stenin-nikita
+[@stephtr]: https://github.com/stephtr
[@straub]: https://github.com/straub
[@strawbrary]: https://github.com/strawbrary
[@stropho]: https://github.com/stropho
@@ -1445,6 +1825,7 @@ for info on changes for earlier releases.
[@Taranys]: https://github.com/Taranys
[@taye]: https://github.com/taye
[@TheCrueltySage]: https://github.com/TheCrueltySage
+[@TheJaredWilcurt]: https://github.com/TheJaredWilcurt
[@tihonove]: https://github.com/tihonove
[@timkraut]: https://github.com/timkraut
[@tizmagik]: https://github.com/tizmagik
@@ -1458,4 +1839,4 @@ for info on changes for earlier releases.
[@wtgtybhertgeghgtwtg]: https://github.com/wtgtybhertgeghgtwtg
[@xpl]: https://github.com/xpl
[@yordis]: https://github.com/yordis
-[@zloirock]: https://github.com/zloirock
\ No newline at end of file
+[@zloirock]: https://github.com/zloirock
diff --git a/node_modules/eslint-plugin-import/CONTRIBUTING.md b/node_modules/eslint-plugin-import/CONTRIBUTING.md
index 35a6b14b5..2a79e7139 100644
--- a/node_modules/eslint-plugin-import/CONTRIBUTING.md
+++ b/node_modules/eslint-plugin-import/CONTRIBUTING.md
@@ -1,15 +1,16 @@
# Contributing
-Thanks for your interest in helping out! Here are a **few** _weird_ tricks to
-~~cut your mortgage in half~~ maximize the global net efficiency of your efforts!
+Thanks for your interest in helping out! Here are a **few** _weird_ tricks to ~~cut your mortgage in half~~ maximize the global net efficiency of your efforts!
## TL;DR: Checklist
When opening an [issue](#issues):
+
- [ ] search open/closed issues
- [ ] discuss bug/enhancement in new or old issue
[PR](#prs) time:
+
- [ ] write tests
- [ ] implement feature/fix bug
- [ ] update docs
@@ -17,27 +18,29 @@ When opening an [issue](#issues):
Remember, you don't need to do it all yourself; any of these are helpful! 😎
+## How to get started
+
+If you are new to `eslint`, below are a few resources that will help you to familiarize yourself with the project.
+
+- Watch [this presentation](https://www.youtube.com/watch?v=2W9tUnALrLg) to learn the fundamental concept of Abstract Syntax Trees (AST) and the way `eslint` works under the hood.
+- Familiarize yourself with the [AST explorer](https://astexplorer.net/) tool. Look into rules in `docs/rules`, create patterns in the rules, then analyze its AST.
+- Explore the blog posts on how to create a custom rule. [One blog post](https://blog.yonatan.dev/writing-a-custom-eslint-rule-to-spot-undeclared-props/). [Second blog post](https://betterprogramming.pub/creating-custom-eslint-rules-cdc579694608).
+- Read the official `eslint` [developer guide](https://eslint.org/docs/latest/developer-guide/architecture/).
+
## Issues
-### Search open + closed issues for similar cases.
+### Search open + closed issues for similar cases
- You may find an open issue that closely matches what you are thinking. You
- may also find a closed issue with discussion that either solves your problem
- or explains why we are unlikely to solve it in the near future.
+ You may find an open issue that closely matches what you are thinking. You may also find a closed issue with discussion that either solves your problem or explains why we are unlikely to solve it in the near future.
- If you find a matching issue that is open, and marked `accepted` and/or `help
- wanted`, you might want to [open a PR](#prs).
+ If you find a matching issue that is open, and marked `accepted` and/or `help wanted`, you might want to [open a PR](#prs).
-### Open an issue.
+### Open an issue
- Let's discuss your issue. Could be as simple as unclear documentation or a
- wonky config file.
- If you're suggesting a feature, it might exist and need better
- documentation, or it might be in process. Even given those, some discussion might
- be warranted to ensure the enhancement is clear.
+ Let's discuss your issue. Could be as simple as unclear documentation or a wonky config file.
+ If you're suggesting a feature, it might exist and need better documentation, or it might be in process. Even given those, some discussion might be warranted to ensure the enhancement is clear.
- You're welcome to jump right to a PR, but without a discussion, can't make any
- guarantees about merging.
+ You're welcome to jump right to a PR, but without a discussion, can't make any guarantees about merging.
That said: sometimes seeing the code makes the discussion clearer.😄
@@ -45,72 +48,37 @@ This is a helpful contribution all by itself. Thanks!
## PRs
-If you would like to implement something, firstly: thanks! Community contributions
-are a magical thing. Like Redux or [the flux capacitor](https://youtu.be/SR5BfQ4rEqQ?t=2m25s),
-they make open source possible.
+If you would like to implement something, firstly: thanks! Community contributions are a magical thing. Like Redux or [the flux capacitor](https://youtu.be/SR5BfQ4rEqQ?t=2m25s), they make open source possible.
**Working on your first Pull Request?**
You can learn how from this _free_ series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github).
Here are some things to keep in mind when working on a PR:
-#### Tests
+**Trying to update an inactive Pull Request?**
+If a PR is open, but unfortunately the author is, for any reason, not available to apply code review fixes or rebase the source branch, then please **do not open a new PR**.
+Instead, paste a link to your own branch in the PR, and the maintainers can pull in your changes and update the existing PR in-place.
-A PR that is just failing test cases for an existing issue is very helpful, as this
-can take as much time (if not more) as it takes to implement a new feature or fix
-a bug.
+### Tests
-If you only have enough time to write tests, fantastic! Submit away. This is a great
-jumping-off point for a core contributor or even another PR to continue what you've started.
+A PR that is just failing test cases for an existing issue is very helpful, as this can take as much time (if not more) as it takes to implement a new feature or fix a bug.
-#### Docs
+If you only have enough time to write tests, fantastic! Submit away. This is a great jumping-off point for a core contributor or even another PR to continue what you've started.
-For enhancements to rules, please update the docs in `docs/rules` matching the rule
-filename from `src/rules`.
+### Docs
-Also, take a quick look at the rule summary in [README.md] in case it could use tweaking,
-or add a line if you've implemented a new rule.
+For enhancements to rules, please update the docs in `docs/rules` matching the rule filename from `src/rules` or the rule description in `meta.docs.description`. Running `npm run update:eslint-docs` will update the [README.md] and rule doc header.
-Bugfixes may not warrant docs changes, though it's worth skimming the existing
-docs to see if there are any relevant caveats that need to be removed.
+Bugfixes may not warrant docs changes, though it's worth skimming the existing docs to see if there are any relevant caveats that need to be removed.
-#### Changelog
+### Changelog
-Please add a quick blurb to the [**Unreleased**](./CHANGELOG.md#unreleased) section of the change log. Give yourself
-some credit, and please link back to the PR for future reference. This is especially
-helpful for resolver changes, as the resolvers are less frequently modified and published.
+Please add a quick blurb to the [**Unreleased**](./CHANGELOG.md#unreleased) section of the change log. Give yourself some credit, and please link back to the PR for future reference. This is especially helpful for resolver changes, as the resolvers are less frequently modified and published.
-Note also that the change log can't magically link back to Github entities (i.e. PRs,
-issues, users) or rules; there are a handful of footnote URL definitions at the bottom.
-You may need to add one or more URL if you've square-bracketed any such items.
+Note also that the change log can't magically link back to Github entities (i.e. PRs, issues, users) or rules; there are a handful of footnote URL definitions at the bottom. You may need to add one or more URL if you've square-bracketed any such items.
## Code of Conduct
-This is not so much a set of guidelines as a reference for what I hope may become
-a shared perspective on the project. I hope to write a longer essay to this end
-in the future. Comments are welcome, I'd like this to be as clear as possible.
-
-### Empathy
-
-People have feelings and perspectives, and people say and believe things for good reasons.
-
-If you find that you summarily disagree with a perspective stated by someone else,
-you likely each have histories that have moved you in opposite directions on a continuum
-that probably does not have a "wrong" or "right" end. It may be that you simply
-are working toward different goals that require different strategies. Every decision
-has pros and cons, and could result in some winners and some losers. It's great to
-discuss this so that both are well-known, and realize that even with infinite discussion,
-cons and losers will likely never go to zero.
-
-Also note that we're not doing brain surgery here, so while it's fine if we spend some time
-understanding each other, cordial disagreement should not be expensive in the
-long run, and we can accept that we will get some things wrong before we get them right (if ever!).
-
-If we can all get together behind the common goal of embracing empathy, everything else should be able to work itself out.
-
-#### Attribution
-
-Thanks for help from http://mozillascience.github.io/working-open-workshop/contributing/
-for inspiration before I wrote this. --ben
+Please familiarize yourself with the [Code of Conduct](https://github.com/import-js/.github/blob/main/CODE_OF_CONDUCT.md).
[README.md]: ./README.md
diff --git a/node_modules/eslint-plugin-import/README.md b/node_modules/eslint-plugin-import/README.md
index 964c123a7..5c6f1a321 100644
--- a/node_modules/eslint-plugin-import/README.md
+++ b/node_modules/eslint-plugin-import/README.md
@@ -1,10 +1,11 @@
# eslint-plugin-import
-[](https://travis-ci.org/import-js/eslint-plugin-import)
-[](https://coveralls.io/github/import-js/eslint-plugin-import?branch=master)
-[](https://ci.appveyor.com/project/import-js/eslint-plugin-import/branch/master)
+[![github actions][actions-image]][actions-url]
+[](https://travis-ci.org/import-js/eslint-plugin-import)
+[![coverage][codecov-image]][codecov-url]
+[](https://ci.appveyor.com/project/import-js/eslint-plugin-import/branch/main)
[](https://www.npmjs.com/package/eslint-plugin-import)
-[](http://www.npmtrends.com/eslint-plugin-import)
+[](https://www.npmtrends.com/eslint-plugin-import)
This plugin intends to support linting of ES2015+ (ES6+) import/export syntax, and prevent issues with misspelling of file paths and import names. All the goodness that the ES2015+ static module syntax intends to provide, marked up in your editor.
@@ -12,107 +13,85 @@ This plugin intends to support linting of ES2015+ (ES6+) import/export syntax, a
## Rules
-### Static analysis
+
-* Ensure imports point to a file/module that can be resolved. ([`no-unresolved`])
-* Ensure named imports correspond to a named export in the remote file. ([`named`])
-* Ensure a default export is present, given a default import. ([`default`])
-* Ensure imported namespaces contain dereferenced properties as they are dereferenced. ([`namespace`])
-* Restrict which files can be imported in a given folder ([`no-restricted-paths`])
-* Forbid import of modules using absolute paths ([`no-absolute-path`])
-* Forbid `require()` calls with expressions ([`no-dynamic-require`])
-* Prevent importing the submodules of other modules ([`no-internal-modules`])
-* Forbid webpack loader syntax in imports ([`no-webpack-loader-syntax`])
-* Forbid a module from importing itself ([`no-self-import`])
-* Forbid a module from importing a module with a dependency path back to itself ([`no-cycle`])
-* Prevent unnecessary path segments in import and require statements ([`no-useless-path-segments`])
-* Forbid importing modules from parent directories ([`no-relative-parent-imports`])
-* Prevent importing packages through relative paths ([`no-relative-packages`])
-
-[`no-unresolved`]: ./docs/rules/no-unresolved.md
-[`named`]: ./docs/rules/named.md
-[`default`]: ./docs/rules/default.md
-[`namespace`]: ./docs/rules/namespace.md
-[`no-restricted-paths`]: ./docs/rules/no-restricted-paths.md
-[`no-absolute-path`]: ./docs/rules/no-absolute-path.md
-[`no-dynamic-require`]: ./docs/rules/no-dynamic-require.md
-[`no-internal-modules`]: ./docs/rules/no-internal-modules.md
-[`no-webpack-loader-syntax`]: ./docs/rules/no-webpack-loader-syntax.md
-[`no-self-import`]: ./docs/rules/no-self-import.md
-[`no-cycle`]: ./docs/rules/no-cycle.md
-[`no-useless-path-segments`]: ./docs/rules/no-useless-path-segments.md
-[`no-relative-parent-imports`]: ./docs/rules/no-relative-parent-imports.md
-[`no-relative-packages`]: ./docs/rules/no-relative-packages.md
+💼 Configurations enabled in.\
+⚠️ Configurations set to warn in.\
+🚫 Configurations disabled in.\
+❗ Set in the `errors` configuration.\
+☑️ Set in the `recommended` configuration.\
+⌨️ Set in the `typescript` configuration.\
+🚸 Set in the `warnings` configuration.\
+🔧 Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).\
+💡 Manually fixable by [editor suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions).\
+❌ Deprecated.
### Helpful warnings
-
-* Report any invalid exports, i.e. re-export of the same name ([`export`])
-* Report use of exported name as identifier of default export ([`no-named-as-default`])
-* Report use of exported name as property of default export ([`no-named-as-default-member`])
-* Report imported names marked with `@deprecated` documentation tag ([`no-deprecated`])
-* Forbid the use of extraneous packages ([`no-extraneous-dependencies`])
-* Forbid the use of mutable exports with `var` or `let`. ([`no-mutable-exports`])
-* Report modules without exports, or exports without matching import in another module ([`no-unused-modules`])
-
-[`export`]: ./docs/rules/export.md
-[`no-named-as-default`]: ./docs/rules/no-named-as-default.md
-[`no-named-as-default-member`]: ./docs/rules/no-named-as-default-member.md
-[`no-deprecated`]: ./docs/rules/no-deprecated.md
-[`no-extraneous-dependencies`]: ./docs/rules/no-extraneous-dependencies.md
-[`no-mutable-exports`]: ./docs/rules/no-mutable-exports.md
-[`no-unused-modules`]: ./docs/rules/no-unused-modules.md
+| Name | Description | 💼 | ⚠️ | 🚫 | 🔧 | 💡 | ❌ |
+| :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------ | :--- | :---- | :- | :- | :- | :- |
+| [export](docs/rules/export.md) | Forbid any invalid exports, i.e. re-export of the same name. | ❗ ☑️ | | | | | |
+| [no-deprecated](docs/rules/no-deprecated.md) | Forbid imported names marked with `@deprecated` documentation tag. | | | | | | |
+| [no-empty-named-blocks](docs/rules/no-empty-named-blocks.md) | Forbid empty named import blocks. | | | | 🔧 | 💡 | |
+| [no-extraneous-dependencies](docs/rules/no-extraneous-dependencies.md) | Forbid the use of extraneous packages. | | | | | | |
+| [no-mutable-exports](docs/rules/no-mutable-exports.md) | Forbid the use of mutable exports with `var` or `let`. | | | | | | |
+| [no-named-as-default](docs/rules/no-named-as-default.md) | Forbid use of exported name as identifier of default export. | | ☑️ 🚸 | | | | |
+| [no-named-as-default-member](docs/rules/no-named-as-default-member.md) | Forbid use of exported name as property of default export. | | ☑️ 🚸 | | | | |
+| [no-unused-modules](docs/rules/no-unused-modules.md) | Forbid modules without exports, or exports without matching import in another module. | | | | | | |
### Module systems
-* Report potentially ambiguous parse goal (`script` vs. `module`) ([`unambiguous`])
-* Report CommonJS `require` calls and `module.exports` or `exports.*`. ([`no-commonjs`])
-* Report AMD `require` and `define` calls. ([`no-amd`])
-* No Node.js builtin modules. ([`no-nodejs-modules`])
-* Forbid imports with CommonJS exports ([`no-import-module-exports`])
+| Name | Description | 💼 | ⚠️ | 🚫 | 🔧 | 💡 | ❌ |
+| :----------------------------------------------------------------- | :------------------------------------------------------------------- | :- | :- | :- | :- | :- | :- |
+| [no-amd](docs/rules/no-amd.md) | Forbid AMD `require` and `define` calls. | | | | | | |
+| [no-commonjs](docs/rules/no-commonjs.md) | Forbid CommonJS `require` calls and `module.exports` or `exports.*`. | | | | | | |
+| [no-import-module-exports](docs/rules/no-import-module-exports.md) | Forbid import statements with CommonJS module.exports. | | | | 🔧 | | |
+| [no-nodejs-modules](docs/rules/no-nodejs-modules.md) | Forbid Node.js builtin modules. | | | | | | |
+| [unambiguous](docs/rules/unambiguous.md) | Forbid potentially ambiguous parse goal (`script` vs. `module`). | | | | | | |
-[`unambiguous`]: ./docs/rules/unambiguous.md
-[`no-commonjs`]: ./docs/rules/no-commonjs.md
-[`no-amd`]: ./docs/rules/no-amd.md
-[`no-nodejs-modules`]: ./docs/rules/no-nodejs-modules.md
-[`no-import-module-exports`]: ./docs/rules/no-import-module-exports.md
+### Static analysis
+| Name | Description | 💼 | ⚠️ | 🚫 | 🔧 | 💡 | ❌ |
+| :--------------------------------------------------------------------- | :----------------------------------------------------------------------------------- | :--- | :- | :- | :- | :- | :- |
+| [default](docs/rules/default.md) | Ensure a default export is present, given a default import. | ❗ ☑️ | | | | | |
+| [named](docs/rules/named.md) | Ensure named imports correspond to a named export in the remote file. | ❗ ☑️ | | ⌨️ | | | |
+| [namespace](docs/rules/namespace.md) | Ensure imported namespaces contain dereferenced properties as they are dereferenced. | ❗ ☑️ | | | | | |
+| [no-absolute-path](docs/rules/no-absolute-path.md) | Forbid import of modules using absolute paths. | | | | 🔧 | | |
+| [no-cycle](docs/rules/no-cycle.md) | Forbid a module from importing a module with a dependency path back to itself. | | | | | | |
+| [no-dynamic-require](docs/rules/no-dynamic-require.md) | Forbid `require()` calls with expressions. | | | | | | |
+| [no-internal-modules](docs/rules/no-internal-modules.md) | Forbid importing the submodules of other modules. | | | | | | |
+| [no-relative-packages](docs/rules/no-relative-packages.md) | Forbid importing packages through relative paths. | | | | 🔧 | | |
+| [no-relative-parent-imports](docs/rules/no-relative-parent-imports.md) | Forbid importing modules from parent directories. | | | | | | |
+| [no-restricted-paths](docs/rules/no-restricted-paths.md) | Enforce which files can be imported in a given folder. | | | | | | |
+| [no-self-import](docs/rules/no-self-import.md) | Forbid a module from importing itself. | | | | | | |
+| [no-unresolved](docs/rules/no-unresolved.md) | Ensure imports point to a file/module that can be resolved. | ❗ ☑️ | | | | | |
+| [no-useless-path-segments](docs/rules/no-useless-path-segments.md) | Forbid unnecessary path segments in import and require statements. | | | | 🔧 | | |
+| [no-webpack-loader-syntax](docs/rules/no-webpack-loader-syntax.md) | Forbid webpack loader syntax in imports. | | | | | | |
### Style guide
-* Ensure all imports appear before other statements ([`first`])
-* Ensure all exports appear after other statements ([`exports-last`])
-* Report repeated import of the same module in multiple places ([`no-duplicates`])
-* Forbid namespace (a.k.a. "wildcard" `*`) imports ([`no-namespace`])
-* Ensure consistent use of file extension within the import path ([`extensions`])
-* Enforce a convention in module import order ([`order`])
-* Enforce a newline after import statements ([`newline-after-import`])
-* Prefer a default export if module exports a single name ([`prefer-default-export`])
-* Limit the maximum number of dependencies a module can have ([`max-dependencies`])
-* Forbid unassigned imports ([`no-unassigned-import`])
-* Forbid named default exports ([`no-named-default`])
-* Forbid default exports ([`no-default-export`])
-* Forbid named exports ([`no-named-export`])
-* Forbid anonymous values as default exports ([`no-anonymous-default-export`])
-* Prefer named exports to be grouped together in a single export declaration ([`group-exports`])
-* Enforce a leading comment with the webpackChunkName for dynamic imports ([`dynamic-import-chunkname`])
-
-[`first`]: ./docs/rules/first.md
-[`exports-last`]: ./docs/rules/exports-last.md
-[`no-duplicates`]: ./docs/rules/no-duplicates.md
-[`no-namespace`]: ./docs/rules/no-namespace.md
-[`extensions`]: ./docs/rules/extensions.md
-[`order`]: ./docs/rules/order.md
-[`newline-after-import`]: ./docs/rules/newline-after-import.md
-[`prefer-default-export`]: ./docs/rules/prefer-default-export.md
-[`max-dependencies`]: ./docs/rules/max-dependencies.md
-[`no-unassigned-import`]: ./docs/rules/no-unassigned-import.md
-[`no-named-default`]: ./docs/rules/no-named-default.md
-[`no-anonymous-default-export`]: ./docs/rules/no-anonymous-default-export.md
-[`group-exports`]: ./docs/rules/group-exports.md
-[`no-default-export`]: ./docs/rules/no-default-export.md
-[`no-named-export`]: ./docs/rules/no-named-export.md
-[`dynamic-import-chunkname`]: ./docs/rules/dynamic-import-chunkname.md
+| Name | Description | 💼 | ⚠️ | 🚫 | 🔧 | 💡 | ❌ |
+| :------------------------------------------------------------------------------- | :------------------------------------------------------------------------- | :- | :---- | :- | :- | :- | :- |
+| [consistent-type-specifier-style](docs/rules/consistent-type-specifier-style.md) | Enforce or ban the use of inline type-only markers for named imports. | | | | 🔧 | | |
+| [dynamic-import-chunkname](docs/rules/dynamic-import-chunkname.md) | Enforce a leading comment with the webpackChunkName for dynamic imports. | | | | | | |
+| [exports-last](docs/rules/exports-last.md) | Ensure all exports appear after other statements. | | | | | | |
+| [extensions](docs/rules/extensions.md) | Ensure consistent use of file extension within the import path. | | | | | | |
+| [first](docs/rules/first.md) | Ensure all imports appear before other statements. | | | | 🔧 | | |
+| [group-exports](docs/rules/group-exports.md) | Prefer named exports to be grouped together in a single export declaration | | | | | | |
+| [imports-first](docs/rules/imports-first.md) | Replaced by `import/first`. | | | | 🔧 | | ❌ |
+| [max-dependencies](docs/rules/max-dependencies.md) | Enforce the maximum number of dependencies a module can have. | | | | | | |
+| [newline-after-import](docs/rules/newline-after-import.md) | Enforce a newline after import statements. | | | | 🔧 | | |
+| [no-anonymous-default-export](docs/rules/no-anonymous-default-export.md) | Forbid anonymous values as default exports. | | | | | | |
+| [no-default-export](docs/rules/no-default-export.md) | Forbid default exports. | | | | | | |
+| [no-duplicates](docs/rules/no-duplicates.md) | Forbid repeated import of the same module in multiple places. | | ☑️ 🚸 | | 🔧 | | |
+| [no-named-default](docs/rules/no-named-default.md) | Forbid named default exports. | | | | | | |
+| [no-named-export](docs/rules/no-named-export.md) | Forbid named exports. | | | | | | |
+| [no-namespace](docs/rules/no-namespace.md) | Forbid namespace (a.k.a. "wildcard" `*`) imports. | | | | 🔧 | | |
+| [no-unassigned-import](docs/rules/no-unassigned-import.md) | Forbid unassigned imports | | | | | | |
+| [order](docs/rules/order.md) | Enforce a convention in module import order. | | | | 🔧 | | |
+| [prefer-default-export](docs/rules/prefer-default-export.md) | Prefer a default export if module exports a single name or multiple names. | | | | | | |
+
+
## `eslint-plugin-import` for enterprise
@@ -122,12 +101,6 @@ The maintainers of `eslint-plugin-import` and thousands of other packages are wo
## Installation
-```sh
-npm install eslint-plugin-import -g
-```
-
-or if you manage ESLint as a dev dependency:
-
```sh
# inside your project's working tree
npm install eslint-plugin-import --save-dev
@@ -160,18 +133,26 @@ rules:
# TypeScript
-You may use the following shortcut or assemble your own config using the granular settings described below.
+You may use the following snippet or assemble your own config using the granular settings described below it.
-Make sure you have installed [`@typescript-eslint/parser`] which is used in the following configuration. Unfortunately NPM does not allow to list optional peer dependencies.
+Make sure you have installed [`@typescript-eslint/parser`] and [`eslint-import-resolver-typescript`] which are used in the following configuration.
```yaml
extends:
- eslint:recommended
- plugin:import/recommended
- - plugin:import/typescript # this line does the trick
+# the following lines do the trick
+ - plugin:import/typescript
+settings:
+ import/resolver:
+ # You will also need to install and configure the TypeScript resolver
+ # See also https://github.com/import-js/eslint-import-resolver-typescript#configuration
+ typescript: true
+ node: true
```
-[`@typescript-eslint/parser`]: https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/parser
+[`@typescript-eslint/parser`]: https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser
+[`eslint-import-resolver-typescript`]: https://github.com/import-js/eslint-import-resolver-typescript
# Resolvers
@@ -202,6 +183,7 @@ settings:
# uses 'eslint-import-resolver-foo':
import/resolver: foo
```
+
```js
// .eslintrc.js
module.exports = {
@@ -220,6 +202,7 @@ module.exports = {
settings:
import/resolver: 'my-awesome-npm-module'
```
+
```js
// .eslintrc.js
module.exports = {
@@ -247,27 +230,28 @@ module.exports = {
Relative paths will be resolved relative to the source's nearest `package.json` or
the process's current working directory if no `package.json` is found.
-
-
If you are interesting in writing a resolver, see the [spec](./resolvers/README.md) for more details.
[`resolve`]: https://www.npmjs.com/package/resolve
-[`externals`]: http://webpack.github.io/docs/library-and-externals.html
+[`externals`]: https://webpack.github.io/docs/library-and-externals.html
[Node]: https://www.npmjs.com/package/eslint-import-resolver-node
[webpack]: https://www.npmjs.com/package/eslint-import-resolver-webpack
-# Settings
+## Settings
You may set the following settings in your `.eslintrc`:
-#### `import/extensions`
+### `import/extensions`
A list of file extensions that will be parsed as modules and inspected for
`export`s.
This defaults to `['.js']`, unless you are using the `react` shared config,
-in which case it is specified as `['.js', '.jsx']`.
+in which case it is specified as `['.js', '.jsx']`. Despite the default,
+if you are using TypeScript (without the `plugin:import/typescript` config
+described above) you must specify the new extensions (`.ts`, and also `.tsx`
+if using React).
```js
"settings": {
@@ -299,7 +283,7 @@ factor into the `no-unresolved` rule.
Also, the following `import/ignore` patterns will overrule this list.
-#### `import/ignore`
+### `import/ignore`
A list of regex strings that, if matched by a path, will
not report the matching module if no `export`s are found.
@@ -315,7 +299,7 @@ settings:
- \.(scss|less|css)$ # can't parse unprocessed CSS modules, either
```
-#### `import/core-modules`
+### `import/core-modules`
An array of additional modules to consider as "core" modules--modules that should
be considered resolved but have no path on the filesystem. Your resolver may
@@ -342,7 +326,7 @@ that specifies this for you.
Contribution of more such shared configs for other platforms are welcome!
-#### `import/external-module-folders`
+### `import/external-module-folders`
An array of folders. Resolved modules only from those folders will be considered as "external". By default - `["node_modules"]`. Makes sense if you have configured your path or webpack to handle your internal paths differently and want to consider modules from some folders, for example `bower_components` or `jspm_modules`, as "external".
@@ -360,7 +344,7 @@ Each item in this array is either a folder's name, its subpath, or its absolute
Please note that incomplete names are not allowed here so `components` won't match `bower_components` and `packages/ui` won't match `packages/ui-utils` (but will match `packages/ui/utils`).
-#### `import/parsers`
+### `import/parsers`
A map from parsers to file extension arrays. If a file extension is matched, the
dependency parser will require and use the map key as the parser instead of the
@@ -387,12 +371,11 @@ depending on how far down the rabbit hole goes. Submit an issue if you find stra
behavior beyond here, but steel your heart against the likely outcome of closing
with `wontfix`.
-
-#### `import/resolver`
+### `import/resolver`
See [resolvers](#resolvers).
-#### `import/cache`
+### `import/cache`
Settings for cache behavior. Memoization is used at various levels to avoid the copious amount of `fs.statSync`/module parse calls required to correctly report errors.
@@ -421,7 +404,7 @@ settings:
[`eslint_d`]: https://www.npmjs.com/package/eslint_d
[`eslint-loader`]: https://www.npmjs.com/package/eslint-loader
-#### `import/internal-regex`
+### `import/internal-regex`
A regex for packages should be treated as internal. Useful when you are utilizing a monorepo setup or developing a set of packages that depend on each other.
@@ -435,7 +418,6 @@ settings:
import/internal-regex: ^@scope/
```
-
## SublimeLinter-eslint
SublimeLinter-eslint introduced a change to support `.eslintignore` files
@@ -479,7 +461,7 @@ The purpose of the `chdir` setting, in this case, is to set the working director
from which ESLint is executed to be the same as the directory on which SublimeLinter-eslint
bases the relative path it provides.
-See the SublimeLinter docs on [`chdir`](http://www.sublimelinter.com/en/latest/linter_settings.html#chdir)
+See the SublimeLinter docs on [`chdir`](https://www.sublimelinter.com/en/latest/linter_settings.html#chdir)
for more information, in case this does not work with your project.
If you are not using `.eslintignore`, or don't have a Sublime project file, you can also
@@ -500,6 +482,7 @@ I also found that I needed to set `rc_search_limit` to `null`, which removes the
hierarchy search limit when looking up the directory tree for `.sublimelinterrc`:
In Package Settings / SublimeLinter / User Settings:
+
```json
{
"user": {
@@ -510,3 +493,8 @@ In Package Settings / SublimeLinter / User Settings:
I believe this defaults to `3`, so you may not need to alter it depending on your
project folder max depth.
+
+[codecov-image]: https://codecov.io/gh/import-js/eslint-plugin-import/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/import-js/eslint-plugin-import/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/import-js/eslint-plugin-import
+[actions-url]: https://github.com/import-js/eslint-plugin-import
diff --git a/node_modules/eslint-plugin-import/RELEASE.md b/node_modules/eslint-plugin-import/RELEASE.md
index 34ef1aadc..6c048dc09 100644
--- a/node_modules/eslint-plugin-import/RELEASE.md
+++ b/node_modules/eslint-plugin-import/RELEASE.md
@@ -1,9 +1,9 @@
# Release steps
-1. create a `release-[x.y.z]` branch from tip of `master` (or whatever release commit)
+1. create a `release-[x.y.z]` branch from tip of `main` (or whatever release commit)
```bash
- git checkout master && git pull && git checkout -b release-2.1.0
+ git checkout main && git pull && git checkout -b release-2.1.0
```
2. bump `package.json` + update CHANGELOG version links for all releasing packages (i.e., root + any resolvers)
@@ -49,6 +49,6 @@
7. merge `release-[x.y.z]` into `release` (
- ideally fast-forward, probably with Git CLI instead of Github
-8. merge `release` into `master`
+8. merge `release` into `main`
Done!
diff --git a/node_modules/eslint-plugin-import/config/typescript.js b/node_modules/eslint-plugin-import/config/typescript.js
index 01b59f06b..ed03fb3f6 100644
--- a/node_modules/eslint-plugin-import/config/typescript.js
+++ b/node_modules/eslint-plugin-import/config/typescript.js
@@ -2,7 +2,10 @@
* Adds `.jsx`, `.ts` and `.tsx` as an extension, and enables JSX/TSX parsing.
*/
-const allExtensions = ['.ts', '.tsx', '.d.ts', '.js', '.jsx'];
+// Omit `.d.ts` because 1) TypeScript compilation already confirms that
+// types are resolved, and 2) it would mask an unresolved
+// `.ts`/`.tsx`/`.js`/`.jsx` implementation.
+const allExtensions = ['.ts', '.tsx', '.js', '.jsx'];
module.exports = {
@@ -10,7 +13,7 @@ module.exports = {
'import/extensions': allExtensions,
'import/external-module-folders': ['node_modules', 'node_modules/@types'],
'import/parsers': {
- '@typescript-eslint/parser': ['.ts', '.tsx', '.d.ts'],
+ '@typescript-eslint/parser': ['.ts', '.tsx'],
},
'import/resolver': {
'node': {
diff --git a/node_modules/eslint-plugin-import/docs/rules/consistent-type-specifier-style.md b/node_modules/eslint-plugin-import/docs/rules/consistent-type-specifier-style.md
new file mode 100644
index 000000000..54c09049e
--- /dev/null
+++ b/node_modules/eslint-plugin-import/docs/rules/consistent-type-specifier-style.md
@@ -0,0 +1,91 @@
+# import/consistent-type-specifier-style
+
+🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
+
+
+
+In both Flow and TypeScript you can mark an import as a type-only import by adding a "kind" marker to the import. Both languages support two positions for marker.
+
+**At the top-level** which marks all names in the import as type-only and applies to named, default, and namespace (for TypeScript) specifiers:
+
+```ts
+import type Foo from 'Foo';
+import type {Bar} from 'Bar';
+// ts only
+import type * as Bam from 'Bam';
+// flow only
+import typeof Baz from 'Baz';
+```
+
+**Inline** with to the named import, which marks just the specific name in the import as type-only. An inline specifier is only valid for named specifiers, and not for default or namespace specifiers:
+
+```ts
+import {type Foo} from 'Foo';
+// flow only
+import {typeof Bar} from 'Bar';
+```
+
+## Rule Details
+
+This rule either enforces or bans the use of inline type-only markers for named imports.
+
+This rule includes a fixer that will automatically convert your specifiers to the correct form - however the fixer will not respect your preferences around de-duplicating imports. If this is important to you, consider using the [`import/no-duplicates`] rule.
+
+[`import/no-duplicates`]: ./no-duplicates.md
+
+## Options
+
+The rule accepts a single string option which may be one of:
+
+- `'prefer-inline'` - enforces that named type-only specifiers are only ever written with an inline marker; and never as part of a top-level, type-only import.
+- `'prefer-top-level'` - enforces that named type-only specifiers only ever written as part of a top-level, type-only import; and never with an inline marker.
+
+By default the rule will use the `prefer-inline` option.
+
+## Examples
+
+### `prefer-top-level`
+
+❌ Invalid with `["error", "prefer-top-level"]`
+
+```ts
+import {type Foo} from 'Foo';
+import Foo, {type Bar} from 'Foo';
+// flow only
+import {typeof Foo} from 'Foo';
+```
+
+✅ Valid with `["error", "prefer-top-level"]`
+
+```ts
+import type {Foo} from 'Foo';
+import type Foo, {Bar} from 'Foo';
+// flow only
+import typeof {Foo} from 'Foo';
+```
+
+### `prefer-inline`
+
+❌ Invalid with `["error", "prefer-inline"]`
+
+```ts
+import type {Foo} from 'Foo';
+import type Foo, {Bar} from 'Foo';
+// flow only
+import typeof {Foo} from 'Foo';
+```
+
+✅ Valid with `["error", "prefer-inline"]`
+
+```ts
+import {type Foo} from 'Foo';
+import Foo, {type Bar} from 'Foo';
+// flow only
+import {typeof Foo} from 'Foo';
+```
+
+## When Not To Use It
+
+If you aren't using Flow or TypeScript 4.5+, then this rule does not apply and need not be used.
+
+If you don't care about, and don't want to standardize how named specifiers are imported then you should not use this rule.
diff --git a/node_modules/eslint-plugin-import/docs/rules/default.md b/node_modules/eslint-plugin-import/docs/rules/default.md
index f69934468..ffbbdc166 100644
--- a/node_modules/eslint-plugin-import/docs/rules/default.md
+++ b/node_modules/eslint-plugin-import/docs/rules/default.md
@@ -1,5 +1,9 @@
# import/default
+💼 This rule is enabled in the following configs: ❗ `errors`, ☑️ `recommended`.
+
+
+
If a default import is requested, this rule will report if there is no default
export in the imported module.
diff --git a/node_modules/eslint-plugin-import/docs/rules/dynamic-import-chunkname.md b/node_modules/eslint-plugin-import/docs/rules/dynamic-import-chunkname.md
index d29c06bba..472a36648 100644
--- a/node_modules/eslint-plugin-import/docs/rules/dynamic-import-chunkname.md
+++ b/node_modules/eslint-plugin-import/docs/rules/dynamic-import-chunkname.md
@@ -1,4 +1,6 @@
-# dynamic imports require a leading comment with a webpackChunkName (dynamic-import-chunkname)
+# import/dynamic-import-chunkname
+
+
This rule reports any dynamic imports without a webpackChunkName specified in a leading block comment in the proper format.
diff --git a/node_modules/eslint-plugin-import/docs/rules/export.md b/node_modules/eslint-plugin-import/docs/rules/export.md
index e99882be8..115d2d8b2 100644
--- a/node_modules/eslint-plugin-import/docs/rules/export.md
+++ b/node_modules/eslint-plugin-import/docs/rules/export.md
@@ -1,5 +1,9 @@
# import/export
+💼 This rule is enabled in the following configs: ❗ `errors`, ☑️ `recommended`.
+
+
+
Reports funny business with exports, like repeated exports of names or defaults.
## Rule Details
diff --git a/node_modules/eslint-plugin-import/docs/rules/exports-last.md b/node_modules/eslint-plugin-import/docs/rules/exports-last.md
index 291daee48..6b3e4bac4 100644
--- a/node_modules/eslint-plugin-import/docs/rules/exports-last.md
+++ b/node_modules/eslint-plugin-import/docs/rules/exports-last.md
@@ -1,5 +1,7 @@
# import/exports-last
+
+
This rule enforces that all exports are declared at the bottom of the file. This rule will report any export declarations that comes before any non-export statements.
diff --git a/node_modules/eslint-plugin-import/docs/rules/extensions.md b/node_modules/eslint-plugin-import/docs/rules/extensions.md
index bf29dbe5f..9e78b8c70 100644
--- a/node_modules/eslint-plugin-import/docs/rules/extensions.md
+++ b/node_modules/eslint-plugin-import/docs/rules/extensions.md
@@ -1,4 +1,6 @@
-# import/extensions - Ensure consistent use of file extension within the import path
+# import/extensions
+
+
Some file resolve algorithms allow you to omit the file extension within the import source path. For example the `node` resolver can resolve `./foo/bar` to the absolute path `/User/someone/foo/bar.js` because the `.js` extension is resolved automatically by default. Depending on the resolver you can configure more extensions to get resolved automatically.
@@ -37,6 +39,7 @@ By providing both a string and an object, the string will set the default settin
For example, `["error", "never", { "svg": "always" }]` would require that all extensions are omitted, except for "svg".
`ignorePackages` can be set as a separate boolean option like this:
+
```
"import/extensions": [
,
@@ -49,10 +52,10 @@ For example, `["error", "never", { "svg": "always" }]` would require that all ex
}
]
```
+
In that case, if you still want to specify extensions, you can do so inside the **pattern** property.
Default value of `ignorePackages` is `false`.
-
### Exception
When disallowing the use of certain extensions this rule makes an exception and allows the use of extension when the file would not be resolvable without extension.
@@ -109,6 +112,8 @@ import foo from './foo';
import bar from './bar';
import Component from './Component';
+
+import foo from '@/foo';
```
The following patterns are not considered problems when configuration set to "always":
@@ -121,6 +126,8 @@ import bar from './bar.json';
import Component from './Component.jsx';
import * as path from 'path';
+
+import foo from '@/foo.js';
```
The following patterns are considered problems when configuration set to "ignorePackages":
@@ -145,6 +152,7 @@ import Component from './Component.jsx';
import express from 'express';
+import foo from '@/foo'
```
The following patterns are not considered problems when configuration set to `['error', 'always', {ignorePackages: true} ]`:
@@ -156,6 +164,7 @@ import baz from 'foo/baz.js';
import express from 'express';
+import foo from '@/foo';
```
## When Not To Use It
diff --git a/node_modules/eslint-plugin-import/docs/rules/first.md b/node_modules/eslint-plugin-import/docs/rules/first.md
index cc19003be..21904e2fa 100644
--- a/node_modules/eslint-plugin-import/docs/rules/first.md
+++ b/node_modules/eslint-plugin-import/docs/rules/first.md
@@ -1,5 +1,9 @@
# import/first
+🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
+
+
+
This rule reports any imports that come after non-import
statements.
@@ -45,7 +49,7 @@ A directive in this case is assumed to be a single statement that contains only
a literal string-valued expression.
`'use strict'` would be a good example, except that [modules are always in strict
-mode](http://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-code) so it would be surprising to see a `'use strict'` sharing a file with `import`s and
+mode](https://262.ecma-international.org/6.0/#sec-strict-mode-code) so it would be surprising to see a `'use strict'` sharing a file with `import`s and
`export`s.
Given that, see [#255] for the reasoning.
diff --git a/node_modules/eslint-plugin-import/docs/rules/group-exports.md b/node_modules/eslint-plugin-import/docs/rules/group-exports.md
index e6b9887b2..c5a23cd21 100644
--- a/node_modules/eslint-plugin-import/docs/rules/group-exports.md
+++ b/node_modules/eslint-plugin-import/docs/rules/group-exports.md
@@ -1,5 +1,7 @@
# import/group-exports
+
+
Reports when named exports are not grouped together in a single `export` declaration or when multiple assignments to CommonJS `module.exports` or `exports` object are present in a single file.
**Rationale:** An `export` declaration or `module.exports` assignment can appear anywhere in the code. By requiring a single export declaration all your exports will remain at one place, making it easier to see what exports a module provides.
diff --git a/node_modules/eslint-plugin-import/docs/rules/imports-first.md b/node_modules/eslint-plugin-import/docs/rules/imports-first.md
index e4cdda115..278e4c472 100644
--- a/node_modules/eslint-plugin-import/docs/rules/imports-first.md
+++ b/node_modules/eslint-plugin-import/docs/rules/imports-first.md
@@ -1,3 +1,9 @@
-# imports-first
+# import/imports-first
-This rule was **deprecated** in eslint-plugin-import v2.0.0. Please use the corresponding rule [`first`](https://github.com/import-js/eslint-plugin-import/blob/master/docs/rules/first.md).
+❌ This rule is deprecated.
+
+🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
+
+
+
+This rule was **deprecated** in eslint-plugin-import v2.0.0. Please use the corresponding rule [`first`](https://github.com/import-js/eslint-plugin-import/blob/HEAD/docs/rules/first.md).
diff --git a/node_modules/eslint-plugin-import/docs/rules/max-dependencies.md b/node_modules/eslint-plugin-import/docs/rules/max-dependencies.md
index 20d29cf0e..1da74f681 100644
--- a/node_modules/eslint-plugin-import/docs/rules/max-dependencies.md
+++ b/node_modules/eslint-plugin-import/docs/rules/max-dependencies.md
@@ -1,25 +1,27 @@
# import/max-dependencies
+
+
Forbid modules to have too many dependencies (`import` or `require` statements).
This is a useful rule because a module with too many dependencies is a code smell, and usually indicates the module is doing too much and/or should be broken up into smaller modules.
Importing multiple named exports from a single module will only count once (e.g. `import {x, y, z} from './foo'` will only count as a single dependency).
-### Options
-
-This rule takes the following option:
+## Options
-`max`: The maximum number of dependencies allowed. Anything over will trigger the rule. **Default is 10** if the rule is enabled and no `max` is specified.
-
-You can set the option like this:
+This rule has the following options, with these defaults:
```js
-"import/max-dependencies": ["error", {"max": 10}]
+"import/max-dependencies": ["error", {
+ "max": 10,
+ "ignoreTypeImports": false,
+}]
```
+### `max`
-## Example
+This option sets the maximum number of dependencies allowed. Anything over will trigger the rule. **Default is 10** if the rule is enabled and no `max` is specified.
Given a max value of `{"max": 2}`:
@@ -39,6 +41,28 @@ const anotherA = require('./a'); // still 1
import {x, y, z} from './foo'; // 2
```
+### `ignoreTypeImports`
+
+Ignores `type` imports. Type imports are a feature released in TypeScript 3.8, you can [read more here](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export). Defaults to `false`.
+
+Given `{"max": 2, "ignoreTypeImports": true}`:
+
+### Fail
+
+```ts
+import a from './a';
+import b from './b';
+import c from './c';
+```
+
+### Pass
+
+```ts
+import a from './a';
+import b from './b';
+import type c from './c'; // Doesn't count against max
+```
+
## When Not To Use It
If you don't care how many dependencies a module has.
diff --git a/node_modules/eslint-plugin-import/docs/rules/named.md b/node_modules/eslint-plugin-import/docs/rules/named.md
index 0f697cc25..6d376defa 100644
--- a/node_modules/eslint-plugin-import/docs/rules/named.md
+++ b/node_modules/eslint-plugin-import/docs/rules/named.md
@@ -1,5 +1,9 @@
# import/named
+💼🚫 This rule is enabled in the following configs: ❗ `errors`, ☑️ `recommended`. This rule is _disabled_ in the ⌨️ `typescript` config.
+
+
+
Verifies that all named imports are part of the set of named exports in the referenced module.
For `export`, verifies that all named exports exist in the referenced module.
diff --git a/node_modules/eslint-plugin-import/docs/rules/namespace.md b/node_modules/eslint-plugin-import/docs/rules/namespace.md
index 4bbbd378e..5ac25b750 100644
--- a/node_modules/eslint-plugin-import/docs/rules/namespace.md
+++ b/node_modules/eslint-plugin-import/docs/rules/namespace.md
@@ -1,5 +1,9 @@
# import/namespace
+💼 This rule is enabled in the following configs: ❗ `errors`, ☑️ `recommended`.
+
+
+
Enforces names exist at the time they are dereferenced, when imported as a full namespace (i.e. `import * as foo from './foo'; foo.bar();` will report if `bar` is not exported by `./foo`.).
Will report at the import declaration if there are _no_ exported names found.
diff --git a/node_modules/eslint-plugin-import/docs/rules/newline-after-import.md b/node_modules/eslint-plugin-import/docs/rules/newline-after-import.md
index 4883776c9..ed0a5b678 100644
--- a/node_modules/eslint-plugin-import/docs/rules/newline-after-import.md
+++ b/node_modules/eslint-plugin-import/docs/rules/newline-after-import.md
@@ -1,11 +1,18 @@
# import/newline-after-import
+🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
+
+
+
Enforces having one or more empty lines after the last top-level import statement or require call.
+(fixable) The `--fix` option on the [command line] automatically fixes problems reported by this rule.
## Rule Details
-This rule has one option, `count` which sets the number of newlines that are enforced after the last top-level import statement or require call. This option defaults to `1`.
+This rule supports the following options:
+- `count` which sets the number of newlines that are enforced after the last top-level import statement or require call. This option defaults to `1`.
+
+- `considerComments` which enforces the rule on comments after the last import-statement as well when set to true. This option defaults to `false`.
Valid:
@@ -71,6 +78,30 @@ import defaultExport from './foo'
const FOO = 'BAR'
```
+With `considerComments` set to `false` this will be considered valid:
+
+```js
+import defaultExport from './foo'
+// some comment here.
+const FOO = 'BAR'
+```
+
+With `considerComments` set to `true` this will be considered valid:
+
+```js
+import defaultExport from './foo'
+
+// some comment here.
+const FOO = 'BAR'
+```
+
+With `considerComments` set to `true` this will be considered invalid:
+
+```js
+import defaultExport from './foo'
+// some comment here.
+const FOO = 'BAR'
+```
## Example options usage
```json
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-absolute-path.md b/node_modules/eslint-plugin-import/docs/rules/no-absolute-path.md
index 305e8e605..a796f9d57 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-absolute-path.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-absolute-path.md
@@ -1,7 +1,13 @@
-# import/no-absolute-path: Forbid import of modules using absolute paths
+# import/no-absolute-path
+
+🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
+
+
Node.js allows the import of modules using an absolute path such as `/home/xyz/file.js`. That is a bad practice as it ties the code using it to your computer, and therefore makes it unusable in packages distributed on `npm` for instance.
+This rule forbids the import of modules using absolute paths.
+
## Rule Details
### Fail
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-amd.md b/node_modules/eslint-plugin-import/docs/rules/no-amd.md
index f7146c134..155c19b3c 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-amd.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-amd.md
@@ -1,5 +1,7 @@
# import/no-amd
+
+
Reports `require([array], ...)` and `define([array], ...)` function calls at the
module scope. Will not report if !=2 arguments, or first argument is not a literal array.
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-anonymous-default-export.md b/node_modules/eslint-plugin-import/docs/rules/no-anonymous-default-export.md
index c8db89790..d3c88f94e 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-anonymous-default-export.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-anonymous-default-export.md
@@ -1,5 +1,7 @@
# import/no-anonymous-default-export
+
+
Reports if a module's default export is unnamed. This includes several types of unnamed data types; literals, object expressions, arrays, anonymous functions, arrow functions, and anonymous class declarations.
Ensuring that default exports are named helps improve the grepability of the codebase by encouraging the re-use of the same identifier for the module's default export at its declaration site and at its import sites.
@@ -17,6 +19,7 @@ The complete default configuration looks like this.
"allowAnonymousClass": false,
"allowAnonymousFunction": false,
"allowCallExpression": true, // The true value here is for backward compatibility
+ "allowNew": false,
"allowLiteral": false,
"allowObject": false
}]
@@ -40,6 +43,8 @@ export default foo(bar)
export default 123
export default {}
+
+export default new Foo()
```
### Pass
@@ -70,4 +75,7 @@ export default 123
/* eslint import/no-anonymous-default-export: [2, {"allowObject": true}] */
export default {}
+
+/* eslint import/no-anonymous-default-export: [2, {"allowNew": true}] */
+export default new Foo()
```
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-commonjs.md b/node_modules/eslint-plugin-import/docs/rules/no-commonjs.md
index 7be4bb399..09a6b4401 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-commonjs.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-commonjs.md
@@ -1,5 +1,7 @@
# import/no-commonjs
+
+
Reports `require([string])` function calls. Will not report if >1 argument,
or single argument is not a literal string.
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-cycle.md b/node_modules/eslint-plugin-import/docs/rules/no-cycle.md
index 7f1b4255a..6635ba73f 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-cycle.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-cycle.md
@@ -1,5 +1,7 @@
# import/no-cycle
+
+
Ensures that there is no resolvable path back to this module via its dependencies.
This includes cycles of depth 1 (imported module imports me) to `"∞"` (or `Infinity`), if the
@@ -20,6 +22,8 @@ import { b } from './dep-b.js' // reported: Dependency cycle detected.
This rule does _not_ detect imports that resolve directly to the linted module;
for that, see [`no-self-import`].
+This rule ignores type-only imports in Flow and TypeScript syntax (`import type` and `import typeof`), which have no runtime effect.
+
## Rule Details
@@ -75,6 +79,22 @@ import { a } from './dep-a.js' // not reported as this module is external
Its value is `false` by default, but can be set to `true` for reducing total project lint time, if needed.
+#### `allowUnsafeDynamicCyclicDependency`
+
+This option disable reporting of errors if a cycle is detected with at least one dynamic import.
+
+```js
+// bar.js
+import { foo } from './foo';
+export const bar = foo;
+
+// foo.js
+export const foo = 'Foo';
+export function getBar() { return import('./bar'); }
+```
+
+> Cyclic dependency are **always** a dangerous anti-pattern as discussed extensively in [#2265](https://github.com/import-js/eslint-plugin-import/issues/2265). Please be extra careful about using this option.
+
## When Not To Use It
This rule is comparatively computationally expensive. If you are pressed for lint
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-default-export.md b/node_modules/eslint-plugin-import/docs/rules/no-default-export.md
index 4f1a300a2..586d5e745 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-default-export.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-default-export.md
@@ -1,4 +1,6 @@
-# `import/no-default-export`
+# import/no-default-export
+
+
Prohibit default exports. Mostly an inverse of [`prefer-default-export`].
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-deprecated.md b/node_modules/eslint-plugin-import/docs/rules/no-deprecated.md
index c948b5178..641fc1a8f 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-deprecated.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-deprecated.md
@@ -1,4 +1,6 @@
-# `import/no-deprecated`
+# import/no-deprecated
+
+
Reports use of a deprecated name, as indicated by a JSDoc block with a `@deprecated`
tag or TomDoc `Deprecated: ` comment.
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-duplicates.md b/node_modules/eslint-plugin-import/docs/rules/no-duplicates.md
index c37510325..553fbbcc3 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-duplicates.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-duplicates.md
@@ -1,9 +1,15 @@
# import/no-duplicates
+⚠️ This rule _warns_ in the following configs: ☑️ `recommended`, 🚸 `warnings`.
+
+🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
+
+
+
Reports if a resolved path is imported more than once.
+(fixable) The `--fix` option on the [command line] automatically fixes some problems reported by this rule.
-ESLint core has a similar rule ([`no-duplicate-imports`](http://eslint.org/docs/rules/no-duplicate-imports)), but this version
+ESLint core has a similar rule ([`no-duplicate-imports`](https://eslint.org/docs/rules/no-duplicate-imports)), but this version
is different in two key ways:
1. the paths in the source code don't have to exactly match, they just have to point to the same module on the filesystem. (i.e. `./foo` and `./foo.js`)
@@ -61,6 +67,33 @@ import SomeDefaultClass from './mod?minify'
import * from './mod.js?minify'
```
+### Inline Type imports
+
+TypeScript 4.5 introduced a new [feature](https://devblogs.microsoft.com/typescript/announcing-typescript-4-5/#type-on-import-names) that allows mixing of named value and type imports. In order to support fixing to an inline type import when duplicate imports are detected, `prefer-inline` can be set to true.
+
+Config:
+
+```json
+"import/no-duplicates": ["error", {"prefer-inline": true}]
+```
+
+
+
+❌ Invalid `["error", "prefer-inline"]`
+
+```js
+import { AValue, type AType } from './mama-mia'
+import type { BType } from './mama-mia'
+```
+
+✅ Valid with `["error", "prefer-inline"]`
+
+```js
+import { AValue, type AType, type BType } from './mama-mia'
+```
+
+
+
## When Not To Use It
If the core ESLint version is good enough (i.e. you're _not_ using Flow and you _are_ using [`import/extensions`](./extensions.md)), keep it and don't use this.
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-dynamic-require.md b/node_modules/eslint-plugin-import/docs/rules/no-dynamic-require.md
index 0f7bb6d37..292055fcd 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-dynamic-require.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-dynamic-require.md
@@ -1,8 +1,10 @@
-# import/no-dynamic-require: Forbid `require()` calls with expressions
+# import/no-dynamic-require
+
+
The `require` method from CommonJS is used to import modules from different files. Unlike the ES6 `import` syntax, it can be given expressions that will be resolved at runtime. While this is sometimes necessary and useful, in most cases it isn't. Using expressions (for instance, concatenating a path and variable) as the argument makes it harder for tools to do static code analysis, or to find where in the codebase a module is used.
-This rule checks every call to `require()` that uses expressions for the module name argument.
+This rule forbids every call to `require()` that uses expressions for the module name argument.
## Rule Details
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-empty-named-blocks.md b/node_modules/eslint-plugin-import/docs/rules/no-empty-named-blocks.md
new file mode 100644
index 000000000..7bf4d695c
--- /dev/null
+++ b/node_modules/eslint-plugin-import/docs/rules/no-empty-named-blocks.md
@@ -0,0 +1,43 @@
+# import/no-empty-named-blocks
+
+🔧💡 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix) and manually fixable by [editor suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions).
+
+
+
+Reports the use of empty named import blocks.
+
+## Rule Details
+
+### Valid
+```js
+import { mod } from 'mod'
+import Default, { mod } from 'mod'
+```
+
+When using typescript
+```js
+import type { mod } from 'mod'
+```
+
+When using flow
+```js
+import typeof { mod } from 'mod'
+```
+
+### Invalid
+```js
+import {} from 'mod'
+import Default, {} from 'mod'
+```
+
+When using typescript
+```js
+import type Default, {} from 'mod'
+import type {} from 'mod'
+```
+
+When using flow
+```js
+import typeof {} from 'mod'
+import typeof Default, {} from 'mod'
+```
\ No newline at end of file
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-extraneous-dependencies.md b/node_modules/eslint-plugin-import/docs/rules/no-extraneous-dependencies.md
index cdc0a913f..68cd4b154 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-extraneous-dependencies.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-extraneous-dependencies.md
@@ -1,7 +1,9 @@
-# import/no-extraneous-dependencies: Forbid the use of extraneous packages
+# import/no-extraneous-dependencies
+
+
Forbid the import of external modules that are not declared in the `package.json`'s `dependencies`, `devDependencies`, `optionalDependencies`, `peerDependencies`, or `bundledDependencies`.
-The closest parent `package.json` will be used. If no `package.json` is found, the rule will not lint anything. This behavior can be changed with the rule option `packageDir`.
+The closest parent `package.json` will be used. If no `package.json` is found, the rule will not lint anything. This behavior can be changed with the rule option `packageDir`. Normally ignores imports of modules marked internal, but this can be changed with the rule option `includeInternal`. Type imports can be verified by specifying `includeTypes`.
Modules have to be installed for this rule to work.
@@ -31,6 +33,12 @@ You can also use an array of globs instead of literal booleans:
When using an array of globs, the setting will be set to `true` (no errors reported) if the name of the file being linted matches a single glob in the array, and `false` otherwise.
+There are 2 boolean options to opt into checking extra imports that are normally ignored: `includeInternal`, which enables the checking of internal modules, and `includeTypes`, which enables checking of type imports in TypeScript.
+
+```js
+"import/no-extraneous-dependencies": ["error", {"includeInternal": true, "includeTypes": true}]
+```
+
Also there is one more option called `packageDir`, this option is to specify the path to the folder containing package.json.
If provided as a relative path string, will be computed relative to the current working directory at linter execution time. If this is not ideal (does not work with some editor integrations), consider using `__dirname` to provide a path relative to your configuration.
@@ -99,6 +107,13 @@ var isArray = require('lodash.isarray');
/* eslint import/no-extraneous-dependencies: ["error", {"bundledDependencies": false}] */
import foo from '"@generated/foo"';
var foo = require('"@generated/foo"');
+
+/* eslint import/no-extraneous-dependencies: ["error", {"includeInternal": true}] */
+import foo from './foo';
+var foo = require('./foo');
+
+/* eslint import/no-extraneous-dependencies: ["error", {"includeTypes": true}] */
+import type { MyType } from 'foo';
```
@@ -113,6 +128,7 @@ import test from 'ava';
import find from 'lodash.find';
import isArray from 'lodash.isarray';
import foo from '"@generated/foo"';
+import type { MyType } from 'foo';
/* eslint import/no-extraneous-dependencies: ["error", {"peerDependencies": true}] */
import react from 'react';
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-import-module-exports.md b/node_modules/eslint-plugin-import/docs/rules/no-import-module-exports.md
index 8131fd5f7..08aacfcc3 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-import-module-exports.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-import-module-exports.md
@@ -1,4 +1,8 @@
-# no-import-module-exports
+# import/no-import-module-exports
+
+🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
+
+
Reports the use of import declarations with CommonJS exports in any module
except for the [main module](https://docs.npmjs.com/files/package.json#main).
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-internal-modules.md b/node_modules/eslint-plugin-import/docs/rules/no-internal-modules.md
index d957e26f3..47f7490da 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-internal-modules.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-internal-modules.md
@@ -1,5 +1,7 @@
# import/no-internal-modules
+
+
Use this rule to prevent importing the submodules of other modules.
## Rule Details
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-mutable-exports.md b/node_modules/eslint-plugin-import/docs/rules/no-mutable-exports.md
index e161e87b1..f0a6251c1 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-mutable-exports.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-mutable-exports.md
@@ -1,5 +1,7 @@
# import/no-mutable-exports
+
+
Forbids the use of mutable exports with `var` or `let`.
## Rule Details
@@ -44,8 +46,8 @@ want to enable the following core ESLint rules:
- [no-func-assign]
- [no-class-assign]
-[no-func-assign]: http://eslint.org/docs/rules/no-func-assign
-[no-class-assign]: http://eslint.org/docs/rules/no-class-assign
+[no-func-assign]: https://eslint.org/docs/rules/no-func-assign
+[no-class-assign]: https://eslint.org/docs/rules/no-class-assign
## When Not To Use It
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-named-as-default-member.md b/node_modules/eslint-plugin-import/docs/rules/no-named-as-default-member.md
index da6ae3f1d..5e0f5069e 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-named-as-default-member.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-named-as-default-member.md
@@ -1,5 +1,9 @@
# import/no-named-as-default-member
+⚠️ This rule _warns_ in the following configs: ☑️ `recommended`, 🚸 `warnings`.
+
+
+
Reports use of an exported name as a property on the default export.
Rationale: Accessing a property that has a name that is shared by an exported
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-named-as-default.md b/node_modules/eslint-plugin-import/docs/rules/no-named-as-default.md
index 042141383..b3715e6c4 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-named-as-default.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-named-as-default.md
@@ -1,5 +1,9 @@
# import/no-named-as-default
+⚠️ This rule _warns_ in the following configs: ☑️ `recommended`, 🚸 `warnings`.
+
+
+
Reports use of an exported name as the locally imported name of a default export.
Rationale: using an exported name as the name of the default export is likely...
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-named-default.md b/node_modules/eslint-plugin-import/docs/rules/no-named-default.md
index bb8b13bca..2f3d54b80 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-named-default.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-named-default.md
@@ -1,5 +1,7 @@
# import/no-named-default
+
+
Reports use of a default export as a locally named import.
Rationale: the syntax exists to import default exports expressively, let's use it.
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-named-export.md b/node_modules/eslint-plugin-import/docs/rules/no-named-export.md
index 0ff881e34..13ea63ad7 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-named-export.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-named-export.md
@@ -1,4 +1,6 @@
-# `import/no-named-export`
+# import/no-named-export
+
+
Prohibit named exports. Mostly an inverse of [`no-default-export`].
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-namespace.md b/node_modules/eslint-plugin-import/docs/rules/no-namespace.md
index e98726051..5545bce22 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-namespace.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-namespace.md
@@ -1,5 +1,9 @@
# import/no-namespace
+🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
+
+
+
Enforce a convention of not using namespace (a.k.a. "wildcard" `*`) imports.
+(fixable) The `--fix` option on the [command line] automatically fixes problems reported by this rule, provided that the namespace object is only used for direct member access, e.g. `namespace.a`.
@@ -22,7 +26,7 @@ import defaultExport, { a, b } from './foobar'
```
```js
-/* eslint import/no-namespace: ["error", {ignore: ['*.ext']] */
+/* eslint import/no-namespace: ["error", {ignore: ['*.ext']}] */
import * as bar from './ignored-module.ext';
```
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-nodejs-modules.md b/node_modules/eslint-plugin-import/docs/rules/no-nodejs-modules.md
index 225adab22..624c27e05 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-nodejs-modules.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-nodejs-modules.md
@@ -1,4 +1,6 @@
-# import/no-nodejs-modules: No Node.js builtin modules
+# import/no-nodejs-modules
+
+
Forbid the use of Node.js builtin modules. Can be useful for client-side web projects that do not have access to those modules.
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-relative-packages.md b/node_modules/eslint-plugin-import/docs/rules/no-relative-packages.md
index d5a068493..4919de94e 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-relative-packages.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-relative-packages.md
@@ -1,10 +1,15 @@
# import/no-relative-packages
+🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
+
+
+
Use this rule to prevent importing packages through relative paths.
It's useful in Yarn/Lerna workspaces, were it's possible to import a sibling
package using `../package` relative path, while direct `package` is the correct one.
++(fixable) The `--fix` option on the [command line] automatically fixes problems reported by this rule.
### Examples
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-relative-parent-imports.md b/node_modules/eslint-plugin-import/docs/rules/no-relative-parent-imports.md
index 7d6e883cf..e5684eb1c 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-relative-parent-imports.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-relative-parent-imports.md
@@ -1,5 +1,7 @@
# import/no-relative-parent-imports
+
+
Use this rule to prevent imports to folders in relative parent paths.
This rule is useful for enforcing tree-like folder structures instead of complex graph-like folder structures. While this restriction might be a departure from Node's default resolution style, it can lead large, complex codebases to be easier to maintain. If you've ever had debates over "where to put files" this rule is for you.
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-restricted-paths.md b/node_modules/eslint-plugin-import/docs/rules/no-restricted-paths.md
index bfcb9af23..344c33bb6 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-restricted-paths.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-restricted-paths.md
@@ -1,4 +1,6 @@
-# import/no-restricted-paths: Restrict which files can be imported in a given folder
+# import/no-restricted-paths
+
+
Some projects contain files which are not always meant to be executed in the same environment.
For example consider a web application that contains specific code for the server and some specific code for the browser/client. In this case you don’t want to import server-only files in your client code.
@@ -9,8 +11,21 @@ In order to prevent such scenarios this rule allows you to define restricted zon
This rule has one option. The option is an object containing the definition of all restricted `zones` and the optional `basePath` which is used to resolve relative paths within.
The default value for `basePath` is the current working directory.
-Each zone consists of the `target` path and a `from` path. The `target` is the path where the restricted imports should be applied. The `from` path defines the folder that is not allowed to be used in an import. An optional `except` may be defined for a zone, allowing exception paths that would otherwise violate the related `from`. Note that `except` is relative to `from` and cannot backtrack to a parent directory.
-You may also specify an optional `message` for a zone, which will be displayed in case of the rule violation.
+
+Each zone consists of the `target` paths, a `from` paths, and an optional `except` and `message` attribute.
+- `target` contains the paths where the restricted imports should be applied. It can be expressed by
+ - directory string path that matches all its containing files
+ - glob pattern matching all the targeted files
+ - an array of multiple of the two types above
+- `from` paths define the folders that are not allowed to be used in an import. It can be expressed by
+ - directory string path that matches all its containing files
+ - glob pattern matching all the files restricted to be imported
+ - an array of multiple directory string path
+ - an array of multiple glob patterns
+- `except` may be defined for a zone, allowing exception paths that would otherwise violate the related `from`. Note that it does not alter the behaviour of `target` in any way.
+ - in case `from` contains only glob patterns, `except` must be an array of glob patterns as well
+ - in case `from` contains only directory path, `except` is relative to `from` and cannot backtrack to a parent directory
+- `message` - will be displayed in case of the rule violation.
### Examples
@@ -77,4 +92,107 @@ The following pattern is not considered a problem:
```js
import b from './b'
+
+```
+
+---------------
+
+Given the following folder structure:
+
+```
+my-project
+├── client
+ └── foo.js
+ └── sub-module
+ └── bar.js
+ └── baz.js
+
+```
+
+and the current configuration is set to:
+
+```
+{ "zones": [ {
+ "target": "./tests/files/restricted-paths/client/!(sub-module)/**/*",
+ "from": "./tests/files/restricted-paths/client/sub-module/**/*",
+} ] }
+```
+
+The following import is considered a problem in `my-project/client/foo.js`:
+
+```js
+import a from './sub-module/baz'
+```
+
+The following import is not considered a problem in `my-project/client/sub-module/bar.js`:
+
+```js
+import b from './baz'
+```
+
+---------------
+
+Given the following folder structure:
+
```
+my-project
+└── one
+ └── a.js
+ └── b.js
+└── two
+ └── a.js
+ └── b.js
+└── three
+ └── a.js
+ └── b.js
+```
+
+and the current configuration is set to:
+
+```
+{
+ "zones": [
+ {
+ "target": ["./tests/files/restricted-paths/two/*", "./tests/files/restricted-paths/three/*"],
+ "from": ["./tests/files/restricted-paths/one", "./tests/files/restricted-paths/three"],
+ }
+ ]
+}
+```
+
+The following patterns are not considered a problem in `my-project/one/b.js`:
+
+```js
+import a from '../three/a'
+```
+
+```js
+import a from './a'
+```
+
+The following pattern is not considered a problem in `my-project/two/b.js`:
+
+```js
+import a from './a'
+```
+
+The following patterns are considered a problem in `my-project/two/a.js`:
+
+```js
+import a from '../one/a'
+```
+
+```js
+import a from '../three/a'
+```
+
+The following patterns are considered a problem in `my-project/three/b.js`:
+
+```js
+import a from '../one/a'
+```
+
+```js
+import a from './a'
+```
+
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-self-import.md b/node_modules/eslint-plugin-import/docs/rules/no-self-import.md
index bde063f5d..8d8491c50 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-self-import.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-self-import.md
@@ -1,4 +1,6 @@
-# Forbid a module from importing itself (`import/no-self-import`)
+# import/no-self-import
+
+
Forbid a module from importing itself. This can sometimes happen during refactoring.
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-unassigned-import.md b/node_modules/eslint-plugin-import/docs/rules/no-unassigned-import.md
index fb3065c48..6f763e973 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-unassigned-import.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-unassigned-import.md
@@ -1,4 +1,6 @@
-# import/no-unassigned-import: Forbid unassigned imports
+# import/no-unassigned-import
+
+
With both CommonJS' `require` and the ES6 modules' `import` syntax, it is possible to import a module but not to use its result. This can be done explicitly by not assigning the module to as variable. Doing so can mean either of the following things:
- The module is imported but not used
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-unresolved.md b/node_modules/eslint-plugin-import/docs/rules/no-unresolved.md
index 30cd8cb2b..13f792887 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-unresolved.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-unresolved.md
@@ -1,12 +1,16 @@
# import/no-unresolved
+💼 This rule is enabled in the following configs: ❗ `errors`, ☑️ `recommended`.
+
+
+
Ensures an imported module can be resolved to a module on the local filesystem,
as defined by standard Node `require.resolve` behavior.
See [settings](../../README.md#settings) for customization options for the resolution (i.e.
additional filetypes, `NODE_PATH`, etc.)
-This rule can also optionally report on unresolved modules in CommonJS `require('./foo')` calls and AMD `require(['./foo'], function (foo){...})` and `define(['./foo'], function (foo){...})`.
+This rule can also optionally report on unresolved modules in CommonJS `require('./foo')` calls and AMD `require(['./foo'], function (foo) {...})` and `define(['./foo'], function (foo) {...})`.
To enable this, send `{ commonjs: true/false, amd: true/false }` as a rule option.
Both are disabled by default.
@@ -60,7 +64,7 @@ This rule has its own ignore list, separate from [`import/ignore`]. This is beca
To suppress errors from files that may not be properly resolved by your [resolver settings](../../README.md#resolver-plugins), you may add an `ignore` key with an array of `RegExp` pattern strings:
```js
-/*eslint import/no-unresolved: [2, { ignore: ['\.img$'] }]*/
+/*eslint import/no-unresolved: [2, { ignore: ['\\.img$'] }]*/
import { x } from './mod' // may be reported, if not resolved to a module
@@ -76,14 +80,29 @@ By default, this rule will report paths whose case do not match the underlying f
const { default: x } = require('./foo') // reported if './foo' is actually './Foo' and caseSensitive: true
```
+#### `caseSensitiveStrict`
+
+The `caseSensitive` option does not detect case for the current working directory. The `caseSensitiveStrict` option allows checking `cwd` in resolved path. By default, the option is disabled.
+
+
+```js
+/*eslint import/no-unresolved: [2, { caseSensitiveStrict: true }]*/
+
+// Absolute paths
+import Foo from `/Users/fOo/bar/file.js` // reported, /Users/foo/bar/file.js
+import Foo from `d:/fOo/bar/file.js` // reported, d:/foo/bar/file.js
+
+// Relative paths, cwd is Users/foo/
+import Foo from `./../fOo/bar/file.js` // reported
+```
+
## When Not To Use It
-If you're using a module bundler other than Node or Webpack, you may end up with
-a lot of false positive reports of missing dependencies.
+If you're using a module bundler other than Node or Webpack, you may end up with a lot of false positive reports of missing dependencies.
## Further Reading
-- [Resolver plugins](../../README.md#resolver-plugins)
+- [Resolver plugins](../../README.md#resolvers)
- [Node resolver](https://npmjs.com/package/eslint-import-resolver-node) (default)
- [Webpack resolver](https://npmjs.com/package/eslint-import-resolver-webpack)
- [`import/ignore`] global setting
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-unused-modules.md b/node_modules/eslint-plugin-import/docs/rules/no-unused-modules.md
index 01c13557c..5cd24bef4 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-unused-modules.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-unused-modules.md
@@ -1,10 +1,12 @@
# import/no-unused-modules
+
+
Reports:
- modules without any exports
- individual exports not being statically `import`ed or `require`ed from other modules in the same project
+ - dynamic imports are supported if argument is a literal string
-Note: dynamic imports are currently not supported.
## Rule Details
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-useless-path-segments.md b/node_modules/eslint-plugin-import/docs/rules/no-useless-path-segments.md
index 81b56579c..c8dc67727 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-useless-path-segments.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-useless-path-segments.md
@@ -1,5 +1,9 @@
# import/no-useless-path-segments
+🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
+
+
+
Use this rule to prevent unnecessary path segments in import and require statements.
## Rule Details
@@ -14,6 +18,7 @@ my-project
└── helpers.js
└── helpers
└── index.js
+├── index.js
└── pages
├── about.js
├── contact.js
@@ -27,10 +32,10 @@ The following patterns are considered problems:
* in my-project/app.js
*/
-import "./../pages/about.js"; // should be "./pages/about.js"
-import "./../pages/about"; // should be "./pages/about"
-import "../pages/about.js"; // should be "./pages/about.js"
-import "../pages/about"; // should be "./pages/about"
+import "./../my-project/pages/about.js"; // should be "./pages/about.js"
+import "./../my-project/pages/about"; // should be "./pages/about"
+import "../my-project/pages/about.js"; // should be "./pages/about.js"
+import "../my-project/pages/about"; // should be "./pages/about"
import "./pages//about"; // should be "./pages/about"
import "./pages/"; // should be "./pages"
import "./pages/index"; // should be "./pages" (except if there is a ./pages.js file)
diff --git a/node_modules/eslint-plugin-import/docs/rules/no-webpack-loader-syntax.md b/node_modules/eslint-plugin-import/docs/rules/no-webpack-loader-syntax.md
index 271c76ca8..e1b7a4bd9 100644
--- a/node_modules/eslint-plugin-import/docs/rules/no-webpack-loader-syntax.md
+++ b/node_modules/eslint-plugin-import/docs/rules/no-webpack-loader-syntax.md
@@ -1,5 +1,7 @@
# import/no-webpack-loader-syntax
+
+
Forbid Webpack loader syntax in imports.
[Webpack](https://webpack.js.org) allows specifying the [loaders](https://webpack.js.org/concepts/loaders/) to use in the import source string using a special syntax like this:
diff --git a/node_modules/eslint-plugin-import/docs/rules/order.md b/node_modules/eslint-plugin-import/docs/rules/order.md
index e320ee0c8..e3deacaf2 100644
--- a/node_modules/eslint-plugin-import/docs/rules/order.md
+++ b/node_modules/eslint-plugin-import/docs/rules/order.md
@@ -1,11 +1,15 @@
-# import/order: Enforce a convention in module import order
+# import/order
+
+🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
+
+
Enforce a convention in the order of `require()` / `import` statements.
+(fixable) The `--fix` option on the [command line] automatically fixes problems reported by this rule.
-With the [`groups`](#groups-array) option set to `["builtin", "external", "internal", "parent", "sibling", "index", "object"]` the order is as shown in the following example:
+With the [`groups`](#groups-array) option set to `["builtin", "external", "internal", "parent", "sibling", "index", "object", "type"]` the order is as shown in the following example:
-```js
+```ts
// 1. node "builtin" modules
import fs from 'fs';
import path from 'path';
@@ -36,7 +40,7 @@ Statements using the ES6 `import` syntax must appear before any `require()` stat
## Fail
-```js
+```ts
import _ from 'lodash';
import path from 'path'; // `path` import should occur before import of `lodash`
@@ -54,7 +58,7 @@ import foo from './foo'; // `import` statements must be before `require` stateme
## Pass
-```js
+```ts
import path from 'path';
import _ from 'lodash';
@@ -85,7 +89,7 @@ This rule supports the following options:
How groups are defined, and the order to respect. `groups` must be an array of `string` or [`string`]. The only allowed `string`s are:
`"builtin"`, `"external"`, `"internal"`, `"unknown"`, `"parent"`, `"sibling"`, `"index"`, `"object"`, `"type"`.
The enforced order is the same as the order of each element in a group. Omitted types are implicitly grouped together as the last element. Example:
-```js
+```ts
[
'builtin', // Built-in types are first
['sibling', 'parent'], // Then sibling and parent types. They can be mingled together
@@ -98,8 +102,22 @@ The default value is `["builtin", "external", "parent", "sibling", "index"]`.
You can set the options like this:
-```js
-"import/order": ["error", {"groups": ["index", "sibling", "parent", "internal", "external", "builtin", "object", "type"]}]
+```ts
+"import/order": [
+ "error",
+ {
+ "groups": [
+ "index",
+ "sibling",
+ "parent",
+ "internal",
+ "external",
+ "builtin",
+ "object",
+ "type"
+ ]
+ }
+]
```
### `pathGroups: [array of objects]`:
@@ -128,6 +146,31 @@ Properties of the objects
}
```
+### `distinctGroup: [boolean]`:
+
+This changes how `pathGroups[].position` affects grouping. The property is most useful when `newlines-between` is set to `always` and at least 1 `pathGroups` entry has a `position` property set.
+
+By default, in the context of a particular `pathGroup` entry, when setting `position`, a new "group" will silently be created. That is, even if the `group` is specified, a newline will still separate imports that match that `pattern` with the rest of the group (assuming `newlines-between` is `always`). This is undesirable if your intentions are to use `position` to position _within_ the group (and not create a new one). Override this behavior by setting `distinctGroup` to `false`; this will keep imports within the same group as intended.
+
+Note that currently, `distinctGroup` defaults to `true`. However, in a later update, the default will change to `false`
+
+Example:
+```json
+{
+ "import/order": ["error", {
+ "newlines-between": "always",
+ "pathGroups": [
+ {
+ "pattern": "@app/**",
+ "group": "external",
+ "position": "after"
+ }
+ ],
+ "distinctGroup": false
+ }]
+}
+```
+
### `pathGroupsExcludedImportTypes: [array]`:
This defines import types that are not handled by configured pathGroups.
@@ -169,20 +212,22 @@ Example:
]
}
```
-The default value is `["builtin", "external"]`.
+The default value is `["builtin", "external", "object"]`.
### `newlines-between: [ignore|always|always-and-inside-groups|never]`:
Enforces or forbids new lines between import groups:
-- If set to `ignore`, no errors related to new lines between import groups will be reported (default).
+- If set to `ignore`, no errors related to new lines between import groups will be reported.
- If set to `always`, at least one new line between each group will be enforced, and new lines inside a group will be forbidden. To prevent multiple lines between imports, core `no-multiple-empty-lines` rule can be used.
- If set to `always-and-inside-groups`, it will act like `always` except newlines are allowed inside import groups.
- If set to `never`, no new lines are allowed in the entire import section.
+The default value is `"ignore"`.
+
With the default group setting, the following will be invalid:
-```js
+```ts
/* eslint import/order: ["error", {"newlines-between": "always"}] */
import fs from 'fs';
import path from 'path';
@@ -190,7 +235,7 @@ import index from './';
import sibling from './foo';
```
-```js
+```ts
/* eslint import/order: ["error", {"newlines-between": "always-and-inside-groups"}] */
import fs from 'fs';
@@ -199,7 +244,7 @@ import index from './';
import sibling from './foo';
```
-```js
+```ts
/* eslint import/order: ["error", {"newlines-between": "never"}] */
import fs from 'fs';
import path from 'path';
@@ -211,7 +256,7 @@ import sibling from './foo';
while those will be valid:
-```js
+```ts
/* eslint import/order: ["error", {"newlines-between": "always"}] */
import fs from 'fs';
import path from 'path';
@@ -221,7 +266,7 @@ import index from './';
import sibling from './foo';
```
-```js
+```ts
/* eslint import/order: ["error", {"newlines-between": "always-and-inside-groups"}] */
import fs from 'fs';
@@ -232,7 +277,7 @@ import index from './';
import sibling from './foo';
```
-```js
+```ts
/* eslint import/order: ["error", {"newlines-between": "never"}] */
import fs from 'fs';
import path from 'path';
@@ -240,15 +285,16 @@ import index from './';
import sibling from './foo';
```
-### `alphabetize: {order: asc|desc|ignore, caseInsensitive: true|false}`:
+### `alphabetize: {order: asc|desc|ignore, orderImportKind: asc|desc|ignore, caseInsensitive: true|false}`:
Sort the order within each group in alphabetical manner based on **import path**:
- `order`: use `asc` to sort in ascending order, and `desc` to sort in descending order (default: `ignore`).
+- `orderImportKind`: use `asc` to sort in ascending order various import kinds, e.g. imports prefixed with `type` or `typeof`, with same import path. Use `desc` to sort in descending order (default: `ignore`).
- `caseInsensitive`: use `true` to ignore case, and `false` to consider case (default: `false`).
Example setting:
-```js
+```ts
alphabetize: {
order: 'asc', /* sort in ascending order. Options: ['ignore', 'asc', 'desc'] */
caseInsensitive: true /* ignore case. Options: [true, false] */
@@ -257,7 +303,7 @@ alphabetize: {
This will fail the rule check:
-```js
+```ts
/* eslint import/order: ["error", {"alphabetize": {"order": "asc", "caseInsensitive": true}}] */
import React, { PureComponent } from 'react';
import aTypes from 'prop-types';
@@ -268,7 +314,7 @@ import blist from 'BList';
While this will pass:
-```js
+```ts
/* eslint import/order: ["error", {"alphabetize": {"order": "asc", "caseInsensitive": true}}] */
import blist from 'BList';
import * as classnames from 'classnames';
@@ -288,7 +334,7 @@ way that is safe.
This will fail the rule check:
-```js
+```ts
/* eslint import/order: ["error", {"warnOnUnassignedImports": true}] */
import fs from 'fs';
import './styles.css';
@@ -297,7 +343,7 @@ import path from 'path';
While this will pass:
-```js
+```ts
/* eslint import/order: ["error", {"warnOnUnassignedImports": true}] */
import fs from 'fs';
import path from 'path';
diff --git a/node_modules/eslint-plugin-import/docs/rules/prefer-default-export.md b/node_modules/eslint-plugin-import/docs/rules/prefer-default-export.md
index 23e584bcc..5d335f4c1 100644
--- a/node_modules/eslint-plugin-import/docs/rules/prefer-default-export.md
+++ b/node_modules/eslint-plugin-import/docs/rules/prefer-default-export.md
@@ -1,9 +1,45 @@
# import/prefer-default-export
-When there is only a single export from a module, prefer using default export over named export.
+
+
+In exporting files, this rule checks if there is default export or not.
## Rule Details
+##### rule schema:
+
+```javascript
+"import/prefer-default-export": [
+ ( "off" | "warn" | "error" ),
+ { "target": "single" | "any" } // default is "single"
+]
+```
+
+### Config Options
+
+There are two options available: `single` and `any`. By default, if you do not specify the option, rule will assume it is `single`.
+
+#### single
+
+**Definition**: When there is only a single export from a module, prefer using default export over named export.
+
+How to setup config file for this rule:
+
+```javascript
+// you can manually specify it
+"rules": {
+ "import/prefer-default-export": [
+ ( "off" | "warn" | "error" ),
+ { "target": "single" }
+ ]
+}
+
+// config setup below will also work
+"rules": {
+ "import/prefer-default-export": "off" | "warn" | "error"
+}
+```
+
The following patterns are considered warnings:
```javascript
@@ -22,7 +58,7 @@ The following patterns are not warnings:
// There is a default export.
export const foo = 'foo';
const bar = 'bar';
-export default 'bar';
+export default bar;
```
```javascript
@@ -56,3 +92,95 @@ export { foo as default }
// Any batch export will disable this rule. The remote module is not inspected.
export * from './other-module'
```
+
+#### any
+
+**Definition**: any exporting file must contain a default export.
+
+How to setup config file for this rule:
+
+```javascript
+// you have to manually specify it
+"rules": {
+ "import/prefer-default-export": [
+ ( "off" | "warn" | "error" ),
+ { "target": "any" }
+ ]
+}
+```
+
+
+The following patterns are *not* considered warnings:
+
+```javascript
+// good1.js
+
+//has default export
+export default function bar() {};
+```
+
+```javascript
+// good2.js
+
+// has default export
+let foo;
+export { foo as default }
+```
+
+```javascript
+// good3.js
+
+//contains multiple exports AND default export
+export const a = 5;
+export function bar(){};
+let foo;
+export { foo as default }
+```
+
+```javascript
+// good4.js
+
+// does not contain any exports => file is not checked by the rule
+import * as foo from './foo';
+```
+
+```javascript
+// export-star.js
+
+// Any batch export will disable this rule. The remote module is not inspected.
+export * from './other-module'
+```
+
+The following patterns are considered warnings:
+
+```javascript
+// bad1.js
+
+//has 2 named exports, but no default export
+export const foo = 'foo';
+export const bar = 'bar';
+```
+
+```javascript
+// bad2.js
+
+// does not have default export
+let foo, bar;
+export { foo, bar }
+```
+
+```javascript
+// bad3.js
+
+// does not have default export
+export { a, b } from "foo.js"
+```
+
+```javascript
+// bad4.js
+
+// does not have default export
+let item;
+export const foo = item;
+export { item };
+```
diff --git a/node_modules/eslint-plugin-import/docs/rules/unambiguous.md b/node_modules/eslint-plugin-import/docs/rules/unambiguous.md
index 7955c3fbc..da77a7453 100644
--- a/node_modules/eslint-plugin-import/docs/rules/unambiguous.md
+++ b/node_modules/eslint-plugin-import/docs/rules/unambiguous.md
@@ -1,5 +1,7 @@
# import/unambiguous
+
+
Warn if a `module` could be mistakenly parsed as a `script` by a consumer leveraging
[Unambiguous JavaScript Grammar] to determine correct parsing goal.
@@ -50,5 +52,5 @@ a `module`.
- [`parserOptions.sourceType`]
- [node-eps#13](https://github.com/nodejs/node-eps/issues/13)
-[`parserOptions.sourceType`]: http://eslint.org/docs/user-guide/configuring#specifying-parser-options
-[Unambiguous JavaScript Grammar]: https://github.com/nodejs/node-eps/blob/master/002-es-modules.md#32-determining-if-source-is-an-es-module
+[`parserOptions.sourceType`]: https://eslint.org/docs/user-guide/configuring#specifying-parser-options
+[Unambiguous JavaScript Grammar]: https://github.com/nodejs/node-eps/blob/HEAD/002-es-modules.md#32-determining-if-source-is-an-es-module
diff --git a/node_modules/eslint-plugin-import/lib/ExportMap.js b/node_modules/eslint-plugin-import/lib/ExportMap.js
index 23cb07524..31ff19221 100644
--- a/node_modules/eslint-plugin-import/lib/ExportMap.js
+++ b/node_modules/eslint-plugin-import/lib/ExportMap.js
@@ -665,20 +665,105 @@
-recursivePatternCapture = recursivePatternCapture;var _fs = require('fs');var _fs2 = _interopRequireDefault(_fs);var _doctrine = require('doctrine');var _doctrine2 = _interopRequireDefault(_doctrine);var _debug = require('debug');var _debug2 = _interopRequireDefault(_debug);var _eslint = require('eslint');var _parse = require('eslint-module-utils/parse');var _parse2 = _interopRequireDefault(_parse);var _resolve = require('eslint-module-utils/resolve');var _resolve2 = _interopRequireDefault(_resolve);var _ignore = require('eslint-module-utils/ignore');var _ignore2 = _interopRequireDefault(_ignore);var _hash = require('eslint-module-utils/hash');var _unambiguous = require('eslint-module-utils/unambiguous');var unambiguous = _interopRequireWildcard(_unambiguous);var _tsconfigLoader = require('tsconfig-paths/lib/tsconfig-loader');var _arrayIncludes = require('array-includes');var _arrayIncludes2 = _interopRequireDefault(_arrayIncludes);function _interopRequireWildcard(obj) {if (obj && obj.__esModule) {return obj;} else {var newObj = {};if (obj != null) {for (var key in obj) {if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];}}newObj['default'] = obj;return newObj;}}function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}var parseConfigFileTextToJson = void 0;var log = (0, _debug2['default'])('eslint-plugin-import:ExportMap');var exportCache = new Map();var tsConfigCache = new Map();var ExportMap = function () {function ExportMap(path) {_classCallCheck(this, ExportMap);this.path = path;this.namespace = new Map(); // todo: restructure to key on path, value is resolver + map of names
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+recursivePatternCapture = recursivePatternCapture;var _fs = require('fs');var _fs2 = _interopRequireDefault(_fs);var _path = require('path');var _doctrine = require('doctrine');var _doctrine2 = _interopRequireDefault(_doctrine);var _debug = require('debug');var _debug2 = _interopRequireDefault(_debug);var _eslint = require('eslint');var _parse = require('eslint-module-utils/parse');var _parse2 = _interopRequireDefault(_parse);var _visit = require('eslint-module-utils/visit');var _visit2 = _interopRequireDefault(_visit);var _resolve = require('eslint-module-utils/resolve');var _resolve2 = _interopRequireDefault(_resolve);var _ignore = require('eslint-module-utils/ignore');var _ignore2 = _interopRequireDefault(_ignore);var _hash = require('eslint-module-utils/hash');var _unambiguous = require('eslint-module-utils/unambiguous');var unambiguous = _interopRequireWildcard(_unambiguous);var _tsconfigLoader = require('tsconfig-paths/lib/tsconfig-loader');var _arrayIncludes = require('array-includes');var _arrayIncludes2 = _interopRequireDefault(_arrayIncludes);function _interopRequireWildcard(obj) {if (obj && obj.__esModule) {return obj;} else {var newObj = {};if (obj != null) {for (var key in obj) {if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];}}newObj['default'] = obj;return newObj;}}function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}var ts = void 0;var log = (0, _debug2['default'])('eslint-plugin-import:ExportMap');var exportCache = new Map();var tsConfigCache = new Map();var ExportMap = function () {function ExportMap(path) {_classCallCheck(this, ExportMap);this.path = path;this.namespace = new Map(); // todo: restructure to key on path, value is resolver + map of names
this.reexports = new Map(); /**
* star-exports
* @type {Set} of () => ExportMap
*/this.dependencies = new Set(); /**
* dependencies of this module that are not explicitly re-exported
* @type {Map} from path = () => ExportMap
- */this.imports = new Map();this.errors = [];}_createClass(ExportMap, [{ key: 'has', /**
- * Note that this does not check explicitly re-exported names for existence
- * in the base namespace, but it will expand all `export * from '...'` exports
- * if not found in the explicit namespace.
- * @param {string} name
- * @return {Boolean} true if `name` is exported by this module.
- */value: function () {function has(name) {if (this.namespace.has(name)) return true;if (this.reexports.has(name)) return true; // default exports must be explicitly re-exported (#328)
+ */this.imports = new Map();this.errors = []; /**
+ * type {'ambiguous' | 'Module' | 'Script'}
+ */this.parseGoal = 'ambiguous';}_createClass(ExportMap, [{ key: 'has', /**
+ * Note that this does not check explicitly re-exported names for existence
+ * in the base namespace, but it will expand all `export * from '...'` exports
+ * if not found in the explicit namespace.
+ * @param {string} name
+ * @return {Boolean} true if `name` is exported by this module.
+ */value: function () {function has(name) {if (this.namespace.has(name)) return true;if (this.reexports.has(name)) return true; // default exports must be explicitly re-exported (#328)
if (name !== 'default') {var _iteratorNormalCompletion = true;var _didIteratorError = false;var _iteratorError = undefined;try {for (var _iterator = this.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {var dep = _step.value;var innerMap = dep(); // todo: report as unresolved?
if (!innerMap) continue;if (innerMap.has(name)) return true;}} catch (err) {_didIteratorError = true;_iteratorError = err;} finally {try {if (!_iteratorNormalCompletion && _iterator['return']) {_iterator['return']();}} finally {if (_didIteratorError) {throw _iteratorError;}}}}return false;}return has;}() /**
* ensure that imported name fully resolves.
@@ -720,37 +805,46 @@ recursivePatternCapture = recursivePatternCapture;var _fs = require('fs');var _f
if (!(0, _ignore.hasValidExtension)(path, context)) {exportCache.set(cacheKey, null);return null;} // check for and cache ignore
if ((0, _ignore2['default'])(path, context)) {log('ignored path due to ignore settings:', path);exportCache.set(cacheKey, null);return null;}var content = _fs2['default'].readFileSync(path, { encoding: 'utf8' }); // check for and cache unambiguous modules
if (!unambiguous.test(content)) {log('ignored path due to unambiguous regex:', path);exportCache.set(cacheKey, null);return null;}log('cache miss', cacheKey, 'for path', path);exportMap = ExportMap.parse(path, content, context); // ambiguous modules return null
- if (exportMap == null) return null;exportMap.mtime = stats.mtime;exportCache.set(cacheKey, exportMap);return exportMap;};ExportMap.parse = function (path, content, context) {var m = new ExportMap(path);var ast = void 0;try {ast = (0, _parse2['default'])(path, content, context);} catch (err) {log('parse error:', path, err);m.errors.push(err);return m; // can't continue
- }if (!unambiguous.isModule(ast)) return null;var docstyle = context.settings && context.settings['import/docstyle'] || ['jsdoc'];var docStyleParsers = {};docstyle.forEach(function (style) {docStyleParsers[style] = availableDocStyleParsers[style];}); // attempt to collect module doc
- if (ast.comments) {ast.comments.some(function (c) {if (c.type !== 'Block') return false;try {var doc = _doctrine2['default'].parse(c.value, { unwrap: true });if (doc.tags.some(function (t) {return t.title === 'module';})) {m.doc = doc;return true;}} catch (err) {/* ignore */}return false;});}var namespaces = new Map();function remotePath(value) {return _resolve2['default'].relative(value, path, context.settings);}function resolveImport(value) {var rp = remotePath(value);if (rp == null) return null;return ExportMap['for'](childContext(rp, context));}function getNamespace(identifier) {if (!namespaces.has(identifier.name)) return;return function () {return resolveImport(namespaces.get(identifier.name));};}function addNamespace(object, identifier) {var nsfn = getNamespace(identifier);if (nsfn) {Object.defineProperty(object, 'namespace', { get: nsfn });}return object;}function captureDependency(_ref, isOnlyImportingTypes) {var source = _ref.source;var importedSpecifiers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set();if (source == null) return null;var p = remotePath(source.value);if (p == null) return null;var declarationMetadata = { // capturing actual node reference holds full AST in memory!
- source: { value: source.value, loc: source.loc }, isOnlyImportingTypes: isOnlyImportingTypes, importedSpecifiers: importedSpecifiers };var existing = m.imports.get(p);if (existing != null) {existing.declarations.add(declarationMetadata);return existing.getter;}var getter = thunkFor(p, context);m.imports.set(p, { getter: getter, declarations: new Set([declarationMetadata]) });return getter;}var source = makeSourceCode(content, ast);function readTsConfig() {var tsConfigInfo = (0, _tsconfigLoader.tsConfigLoader)({ cwd: context.parserOptions && context.parserOptions.tsconfigRootDir || process.cwd(), getEnv: function () {function getEnv(key) {return process.env[key];}return getEnv;}() });try {if (tsConfigInfo.tsConfigPath !== undefined) {var jsonText = _fs2['default'].readFileSync(tsConfigInfo.tsConfigPath).toString();if (!parseConfigFileTextToJson) {var _require = require('typescript'); // this is because projects not using TypeScript won't have typescript installed
- parseConfigFileTextToJson = _require.parseConfigFileTextToJson;}return parseConfigFileTextToJson(tsConfigInfo.tsConfigPath, jsonText).config;}} catch (e) {// Catch any errors
- }return null;}function isEsModuleInterop() {var cacheKey = (0, _hash.hashObject)({ tsconfigRootDir: context.parserOptions && context.parserOptions.tsconfigRootDir }).digest('hex');var tsConfig = tsConfigCache.get(cacheKey);if (typeof tsConfig === 'undefined') {tsConfig = readTsConfig();tsConfigCache.set(cacheKey, tsConfig);}return tsConfig && tsConfig.compilerOptions ? tsConfig.compilerOptions.esModuleInterop : false;}ast.body.forEach(function (n) {if (n.type === 'ExportDefaultDeclaration') {var exportMeta = captureDoc(source, docStyleParsers, n);if (n.declaration.type === 'Identifier') {addNamespace(exportMeta, n.declaration);}m.namespace.set('default', exportMeta);return;}if (n.type === 'ExportAllDeclaration') {var getter = captureDependency(n, n.exportKind === 'type');if (getter) m.dependencies.add(getter);return;} // capture namespaces in case of later export
- if (n.type === 'ImportDeclaration') {// import type { Foo } (TS and Flow)
- var declarationIsType = n.importKind === 'type'; // import './foo' or import {} from './foo' (both 0 specifiers) is a side effect and
- // shouldn't be considered to be just importing types
- var specifiersOnlyImportingTypes = n.specifiers.length;var importedSpecifiers = new Set();n.specifiers.forEach(function (specifier) {if (supportedImportTypes.has(specifier.type)) {importedSpecifiers.add(specifier.type);}if (specifier.type === 'ImportSpecifier') {importedSpecifiers.add(specifier.imported.name);} // import { type Foo } (Flow)
- specifiersOnlyImportingTypes = specifiersOnlyImportingTypes && specifier.importKind === 'type';});captureDependency(n, declarationIsType || specifiersOnlyImportingTypes, importedSpecifiers);var ns = n.specifiers.find(function (s) {return s.type === 'ImportNamespaceSpecifier';});if (ns) {namespaces.set(ns.local.name, n.source.value);}return;}if (n.type === 'ExportNamedDeclaration') {// capture declaration
+ if (exportMap == null) {log('ignored path due to ambiguous parse:', path);exportCache.set(cacheKey, null);return null;}exportMap.mtime = stats.mtime;exportCache.set(cacheKey, exportMap);return exportMap;};ExportMap.parse = function (path, content, context) {var m = new ExportMap(path);var isEsModuleInteropTrue = isEsModuleInterop();var ast = void 0;var visitorKeys = void 0;try {var result = (0, _parse2['default'])(path, content, context);ast = result.ast;visitorKeys = result.visitorKeys;} catch (err) {m.errors.push(err);return m; // can't continue
+ }m.visitorKeys = visitorKeys;var hasDynamicImports = false;function processDynamicImport(source) {hasDynamicImports = true;if (source.type !== 'Literal') {return null;}var p = remotePath(source.value);if (p == null) {return null;}var importedSpecifiers = new Set();importedSpecifiers.add('ImportNamespaceSpecifier');var getter = thunkFor(p, context);m.imports.set(p, { getter: getter, declarations: new Set([{ source: { // capturing actual node reference holds full AST in memory!
+ value: source.value, loc: source.loc }, importedSpecifiers: importedSpecifiers, dynamic: true }]) });}(0, _visit2['default'])(ast, visitorKeys, { ImportExpression: function () {function ImportExpression(node) {processDynamicImport(node.source);}return ImportExpression;}(), CallExpression: function () {function CallExpression(node) {if (node.callee.type === 'Import') {processDynamicImport(node.arguments[0]);}}return CallExpression;}() });var unambiguouslyESM = unambiguous.isModule(ast);if (!unambiguouslyESM && !hasDynamicImports) return null;var docstyle = context.settings && context.settings['import/docstyle'] || ['jsdoc'];var docStyleParsers = {};docstyle.forEach(function (style) {docStyleParsers[style] = availableDocStyleParsers[style];}); // attempt to collect module doc
+ if (ast.comments) {ast.comments.some(function (c) {if (c.type !== 'Block') return false;try {var doc = _doctrine2['default'].parse(c.value, { unwrap: true });if (doc.tags.some(function (t) {return t.title === 'module';})) {m.doc = doc;return true;}} catch (err) {/* ignore */}return false;});}var namespaces = new Map();function remotePath(value) {return _resolve2['default'].relative(value, path, context.settings);}function resolveImport(value) {var rp = remotePath(value);if (rp == null) return null;return ExportMap['for'](childContext(rp, context));}function getNamespace(identifier) {if (!namespaces.has(identifier.name)) return;return function () {return resolveImport(namespaces.get(identifier.name));};}function addNamespace(object, identifier) {var nsfn = getNamespace(identifier);if (nsfn) {Object.defineProperty(object, 'namespace', { get: nsfn });}return object;}function processSpecifier(s, n, m) {var nsource = n.source && n.source.value;var exportMeta = {};var local = void 0;switch (s.type) {case 'ExportDefaultSpecifier':if (!nsource) return;local = 'default';break;case 'ExportNamespaceSpecifier':m.namespace.set(s.exported.name, Object.defineProperty(exportMeta, 'namespace', { get: function () {function get() {return resolveImport(nsource);}return get;}() }));return;case 'ExportAllDeclaration':m.namespace.set(s.exported.name || s.exported.value, addNamespace(exportMeta, s.source.value));return;case 'ExportSpecifier':if (!n.source) {m.namespace.set(s.exported.name || s.exported.value, addNamespace(exportMeta, s.local));return;} // else falls through
+ default:local = s.local.name;break;} // todo: JSDoc
+ m.reexports.set(s.exported.name, { local: local, getImport: function () {function getImport() {return resolveImport(nsource);}return getImport;}() });}function captureDependencyWithSpecifiers(n) {// import type { Foo } (TS and Flow); import typeof { Foo } (Flow)
+ var declarationIsType = n.importKind === 'type' || n.importKind === 'typeof'; // import './foo' or import {} from './foo' (both 0 specifiers) is a side effect and
+ // shouldn't be considered to be just importing types
+ var specifiersOnlyImportingTypes = n.specifiers.length > 0;var importedSpecifiers = new Set();n.specifiers.forEach(function (specifier) {if (specifier.type === 'ImportSpecifier') {importedSpecifiers.add(specifier.imported.name || specifier.imported.value);} else if (supportedImportTypes.has(specifier.type)) {importedSpecifiers.add(specifier.type);} // import { type Foo } (Flow); import { typeof Foo } (Flow)
+ specifiersOnlyImportingTypes = specifiersOnlyImportingTypes && (specifier.importKind === 'type' || specifier.importKind === 'typeof');});captureDependency(n, declarationIsType || specifiersOnlyImportingTypes, importedSpecifiers);}function captureDependency(_ref, isOnlyImportingTypes) {var source = _ref.source;var importedSpecifiers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set();if (source == null) return null;var p = remotePath(source.value);if (p == null) return null;var declarationMetadata = { // capturing actual node reference holds full AST in memory!
+ source: { value: source.value, loc: source.loc }, isOnlyImportingTypes: isOnlyImportingTypes, importedSpecifiers: importedSpecifiers };var existing = m.imports.get(p);if (existing != null) {existing.declarations.add(declarationMetadata);return existing.getter;}var getter = thunkFor(p, context);m.imports.set(p, { getter: getter, declarations: new Set([declarationMetadata]) });return getter;}var source = makeSourceCode(content, ast);function readTsConfig(context) {var tsConfigInfo = (0, _tsconfigLoader.tsConfigLoader)({ cwd: context.parserOptions && context.parserOptions.tsconfigRootDir || process.cwd(), getEnv: function () {function getEnv(key) {return process.env[key];}return getEnv;}() });try {if (tsConfigInfo.tsConfigPath !== undefined) {// Projects not using TypeScript won't have `typescript` installed.
+ if (!ts) {ts = require('typescript');} // eslint-disable-line import/no-extraneous-dependencies
+ var configFile = ts.readConfigFile(tsConfigInfo.tsConfigPath, ts.sys.readFile);return ts.parseJsonConfigFileContent(configFile.config, ts.sys, (0, _path.dirname)(tsConfigInfo.tsConfigPath));}} catch (e) {// Catch any errors
+ }return null;}function isEsModuleInterop() {var cacheKey = (0, _hash.hashObject)({ tsconfigRootDir: context.parserOptions && context.parserOptions.tsconfigRootDir }).digest('hex');var tsConfig = tsConfigCache.get(cacheKey);if (typeof tsConfig === 'undefined') {tsConfig = readTsConfig(context);tsConfigCache.set(cacheKey, tsConfig);}return tsConfig && tsConfig.options ? tsConfig.options.esModuleInterop : false;}ast.body.forEach(function (n) {if (n.type === 'ExportDefaultDeclaration') {var exportMeta = captureDoc(source, docStyleParsers, n);if (n.declaration.type === 'Identifier') {addNamespace(exportMeta, n.declaration);}m.namespace.set('default', exportMeta);return;}if (n.type === 'ExportAllDeclaration') {var getter = captureDependency(n, n.exportKind === 'type');if (getter) m.dependencies.add(getter);if (n.exported) {processSpecifier(n, n.exported, m);}return;} // capture namespaces in case of later export
+ if (n.type === 'ImportDeclaration') {captureDependencyWithSpecifiers(n);var ns = n.specifiers.find(function (s) {return s.type === 'ImportNamespaceSpecifier';});if (ns) {namespaces.set(ns.local.name, n.source.value);}return;}if (n.type === 'ExportNamedDeclaration') {captureDependencyWithSpecifiers(n); // capture declaration
if (n.declaration != null) {switch (n.declaration.type) {case 'FunctionDeclaration':case 'ClassDeclaration':case 'TypeAlias': // flowtype with babel-eslint parser
- case 'InterfaceDeclaration':case 'DeclareFunction':case 'TSDeclareFunction':case 'TSEnumDeclaration':case 'TSTypeAliasDeclaration':case 'TSInterfaceDeclaration':case 'TSAbstractClassDeclaration':case 'TSModuleDeclaration':m.namespace.set(n.declaration.id.name, captureDoc(source, docStyleParsers, n));break;case 'VariableDeclaration':n.declaration.declarations.forEach(function (d) {return recursivePatternCapture(d.id, function (id) {return m.namespace.set(id.name, captureDoc(source, docStyleParsers, d, n));});});break;}}var nsource = n.source && n.source.value;n.specifiers.forEach(function (s) {var exportMeta = {};var local = void 0;switch (s.type) {case 'ExportDefaultSpecifier':if (!n.source) return;local = 'default';break;case 'ExportNamespaceSpecifier':m.namespace.set(s.exported.name, Object.defineProperty(exportMeta, 'namespace', { get: function () {function get() {return resolveImport(nsource);}return get;}() }));return;case 'ExportSpecifier':if (!n.source) {m.namespace.set(s.exported.name, addNamespace(exportMeta, s.local));return;} // else falls through
- default:local = s.local.name;break;} // todo: JSDoc
- m.reexports.set(s.exported.name, { local: local, getImport: function () {function getImport() {return resolveImport(nsource);}return getImport;}() });});}var isEsModuleInteropTrue = isEsModuleInterop();var exports = ['TSExportAssignment'];if (isEsModuleInteropTrue) {exports.push('TSNamespaceExportDeclaration');} // This doesn't declare anything, but changes what's being exported.
- if ((0, _arrayIncludes2['default'])(exports, n.type)) {var exportedName = n.type === 'TSNamespaceExportDeclaration' ? n.id.name : n.expression && n.expression.name || n.expression.id && n.expression.id.name || null;var declTypes = ['VariableDeclaration', 'ClassDeclaration', 'TSDeclareFunction', 'TSEnumDeclaration', 'TSTypeAliasDeclaration', 'TSInterfaceDeclaration', 'TSAbstractClassDeclaration', 'TSModuleDeclaration'];var exportedDecls = ast.body.filter(function (_ref2) {var type = _ref2.type,id = _ref2.id,declarations = _ref2.declarations;return (0, _arrayIncludes2['default'])(declTypes, type) && (id && id.name === exportedName || declarations && declarations.find(function (d) {return d.id.name === exportedName;}));});if (exportedDecls.length === 0) {// Export is not referencing any local declaration, must be re-exporting
- m.namespace.set('default', captureDoc(source, docStyleParsers, n));return;}if (isEsModuleInteropTrue) {m.namespace.set('default', {});}exportedDecls.forEach(function (decl) {if (decl.type === 'TSModuleDeclaration') {if (decl.body && decl.body.type === 'TSModuleDeclaration') {m.namespace.set(decl.body.id.name, captureDoc(source, docStyleParsers, decl.body));} else if (decl.body && decl.body.body) {decl.body.body.forEach(function (moduleBlockNode) {// Export-assignment exports all members in the namespace,
+ case 'InterfaceDeclaration':case 'DeclareFunction':case 'TSDeclareFunction':case 'TSEnumDeclaration':case 'TSTypeAliasDeclaration':case 'TSInterfaceDeclaration':case 'TSAbstractClassDeclaration':case 'TSModuleDeclaration':m.namespace.set(n.declaration.id.name, captureDoc(source, docStyleParsers, n));break;case 'VariableDeclaration':n.declaration.declarations.forEach(function (d) {return recursivePatternCapture(d.id, function (id) {return m.namespace.set(id.name, captureDoc(source, docStyleParsers, d, n));});});break;}}n.specifiers.forEach(function (s) {return processSpecifier(s, n, m);});}var exports = ['TSExportAssignment'];if (isEsModuleInteropTrue) {exports.push('TSNamespaceExportDeclaration');} // This doesn't declare anything, but changes what's being exported.
+ if ((0, _arrayIncludes2['default'])(exports, n.type)) {var exportedName = n.type === 'TSNamespaceExportDeclaration' ? (n.id || n.name).name : n.expression && n.expression.name || n.expression.id && n.expression.id.name || null;var declTypes = ['VariableDeclaration', 'ClassDeclaration', 'TSDeclareFunction', 'TSEnumDeclaration', 'TSTypeAliasDeclaration', 'TSInterfaceDeclaration', 'TSAbstractClassDeclaration', 'TSModuleDeclaration'];var exportedDecls = ast.body.filter(function (_ref2) {var type = _ref2.type,id = _ref2.id,declarations = _ref2.declarations;return (0, _arrayIncludes2['default'])(declTypes, type) && (id && id.name === exportedName || declarations && declarations.find(function (d) {return d.id.name === exportedName;}));});if (exportedDecls.length === 0) {// Export is not referencing any local declaration, must be re-exporting
+ m.namespace.set('default', captureDoc(source, docStyleParsers, n));return;}if (isEsModuleInteropTrue // esModuleInterop is on in tsconfig
+ && !m.namespace.has('default') // and default isn't added already
+ ) {m.namespace.set('default', {}); // add default export
+ }exportedDecls.forEach(function (decl) {if (decl.type === 'TSModuleDeclaration') {if (decl.body && decl.body.type === 'TSModuleDeclaration') {m.namespace.set(decl.body.id.name, captureDoc(source, docStyleParsers, decl.body));} else if (decl.body && decl.body.body) {decl.body.body.forEach(function (moduleBlockNode) {// Export-assignment exports all members in the namespace,
// explicitly exported or not.
var namespaceDecl = moduleBlockNode.type === 'ExportNamedDeclaration' ? moduleBlockNode.declaration : moduleBlockNode;if (!namespaceDecl) {// TypeScript can check this for us; we needn't
} else if (namespaceDecl.type === 'VariableDeclaration') {namespaceDecl.declarations.forEach(function (d) {return recursivePatternCapture(d.id, function (id) {return m.namespace.set(id.name, captureDoc(source, docStyleParsers, decl, namespaceDecl, moduleBlockNode));});});} else {m.namespace.set(namespaceDecl.id.name, captureDoc(source, docStyleParsers, moduleBlockNode));}});}} else {// Export as default
- m.namespace.set('default', captureDoc(source, docStyleParsers, decl));}});}});return m;}; /**
- * The creation of this closure is isolated from other scopes
- * to avoid over-retention of unrelated variables, which has
- * caused memory leaks. See #1266.
- */function thunkFor(p, context) {return function () {return ExportMap['for'](childContext(p, context));};} /**
- * Traverse a pattern/identifier node, calling 'callback'
- * for each leaf identifier.
- * @param {node} pattern
- * @param {Function} callback
- * @return {void}
- */function recursivePatternCapture(pattern, callback) {switch (pattern.type) {case 'Identifier': // base case
+ m.namespace.set('default', captureDoc(source, docStyleParsers, decl));}});}});if (isEsModuleInteropTrue // esModuleInterop is on in tsconfig
+ && m.namespace.size > 0 // anything is exported
+ && !m.namespace.has('default') // and default isn't added already
+ ) {m.namespace.set('default', {}); // add default export
+ }if (unambiguouslyESM) {m.parseGoal = 'Module';}return m;}; /**
+ * The creation of this closure is isolated from other scopes
+ * to avoid over-retention of unrelated variables, which has
+ * caused memory leaks. See #1266.
+ */function thunkFor(p, context) {return function () {return ExportMap['for'](childContext(p, context));};} /**
+ * Traverse a pattern/identifier node, calling 'callback'
+ * for each leaf identifier.
+ * @param {node} pattern
+ * @param {Function} callback
+ * @return {void}
+ */function recursivePatternCapture(pattern, callback) {switch (pattern.type) {case 'Identifier': // base case
callback(pattern);break;case 'ObjectPattern':pattern.properties.forEach(function (p) {if (p.type === 'ExperimentalRestProperty' || p.type === 'RestElement') {callback(p.argument);return;}recursivePatternCapture(p.value, callback);});break;case 'ArrayPattern':pattern.elements.forEach(function (element) {if (element == null) return;if (element.type === 'ExperimentalRestProperty' || element.type === 'RestElement') {callback(element.argument);return;}recursivePatternCapture(element, callback);});break;case 'AssignmentPattern':callback(pattern.left);break;}} /**
* don't hold full context object in memory, just grab what we need.
*/function childContext(path, context) {var settings = context.settings,parserOptions = context.parserOptions,parserPath = context.parserPath;return { settings: settings, parserOptions: parserOptions, parserPath: parserPath, path: path };} /**
@@ -758,4 +852,4 @@ recursivePatternCapture = recursivePatternCapture;var _fs = require('fs');var _f
*/function makeSourceCode(text, ast) {if (_eslint.SourceCode.length > 1) {// ESLint 3
return new _eslint.SourceCode(text, ast);} else {// ESLint 4, 5
return new _eslint.SourceCode({ text: text, ast: ast });}}
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9FeHBvcnRNYXAuanMiXSwibmFtZXMiOlsicmVjdXJzaXZlUGF0dGVybkNhcHR1cmUiLCJ1bmFtYmlndW91cyIsInBhcnNlQ29uZmlnRmlsZVRleHRUb0pzb24iLCJsb2ciLCJleHBvcnRDYWNoZSIsIk1hcCIsInRzQ29uZmlnQ2FjaGUiLCJFeHBvcnRNYXAiLCJwYXRoIiwibmFtZXNwYWNlIiwicmVleHBvcnRzIiwiZGVwZW5kZW5jaWVzIiwiU2V0IiwiaW1wb3J0cyIsImVycm9ycyIsIm5hbWUiLCJoYXMiLCJkZXAiLCJpbm5lck1hcCIsImZvdW5kIiwiZ2V0IiwiaW1wb3J0ZWQiLCJnZXRJbXBvcnQiLCJsb2NhbCIsImRlZXAiLCJoYXNEZWVwIiwidW5zaGlmdCIsImlubmVyVmFsdWUiLCJ1bmRlZmluZWQiLCJjYWxsYmFjayIsInRoaXNBcmciLCJmb3JFYWNoIiwidiIsIm4iLCJjYWxsIiwicmVleHBvcnRlZCIsImQiLCJjb250ZXh0IiwiZGVjbGFyYXRpb24iLCJyZXBvcnQiLCJub2RlIiwic291cmNlIiwibWVzc2FnZSIsInZhbHVlIiwibWFwIiwiZSIsImxpbmVOdW1iZXIiLCJjb2x1bW4iLCJqb2luIiwic2l6ZSIsImNhcHR1cmVEb2MiLCJkb2NTdHlsZVBhcnNlcnMiLCJtZXRhZGF0YSIsIm5vZGVzIiwic29tZSIsImxlYWRpbmdDb21tZW50cyIsInJhbmdlIiwiZ2V0Q29tbWVudHNCZWZvcmUiLCJsZW5ndGgiLCJkb2MiLCJlcnIiLCJhdmFpbGFibGVEb2NTdHlsZVBhcnNlcnMiLCJqc2RvYyIsImNhcHR1cmVKc0RvYyIsInRvbWRvYyIsImNhcHR1cmVUb21Eb2MiLCJjb21tZW50cyIsImNvbW1lbnQiLCJ0eXBlIiwiZG9jdHJpbmUiLCJwYXJzZSIsInVud3JhcCIsImxpbmVzIiwiaSIsIm1hdGNoIiwicHVzaCIsInRyaW0iLCJzdGF0dXNNYXRjaCIsImRlc2NyaXB0aW9uIiwidGFncyIsInRpdGxlIiwidG9Mb3dlckNhc2UiLCJzdXBwb3J0ZWRJbXBvcnRUeXBlcyIsImNoaWxkQ29udGV4dCIsImNhY2hlS2V5IiwiZGlnZXN0IiwiZXhwb3J0TWFwIiwic3RhdHMiLCJmcyIsInN0YXRTeW5jIiwibXRpbWUiLCJzZXQiLCJjb250ZW50IiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJ0ZXN0IiwibSIsImFzdCIsImlzTW9kdWxlIiwiZG9jc3R5bGUiLCJzZXR0aW5ncyIsInN0eWxlIiwiYyIsInQiLCJuYW1lc3BhY2VzIiwicmVtb3RlUGF0aCIsInJlc29sdmUiLCJyZWxhdGl2ZSIsInJlc29sdmVJbXBvcnQiLCJycCIsImdldE5hbWVzcGFjZSIsImlkZW50aWZpZXIiLCJhZGROYW1lc3BhY2UiLCJvYmplY3QiLCJuc2ZuIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJjYXB0dXJlRGVwZW5kZW5jeSIsImlzT25seUltcG9ydGluZ1R5cGVzIiwiaW1wb3J0ZWRTcGVjaWZpZXJzIiwicCIsImRlY2xhcmF0aW9uTWV0YWRhdGEiLCJsb2MiLCJleGlzdGluZyIsImRlY2xhcmF0aW9ucyIsImFkZCIsImdldHRlciIsInRodW5rRm9yIiwibWFrZVNvdXJjZUNvZGUiLCJyZWFkVHNDb25maWciLCJ0c0NvbmZpZ0luZm8iLCJjd2QiLCJwYXJzZXJPcHRpb25zIiwidHNjb25maWdSb290RGlyIiwicHJvY2VzcyIsImdldEVudiIsImtleSIsImVudiIsInRzQ29uZmlnUGF0aCIsImpzb25UZXh0IiwidG9TdHJpbmciLCJyZXF1aXJlIiwiY29uZmlnIiwiaXNFc01vZHVsZUludGVyb3AiLCJ0c0NvbmZpZyIsImNvbXBpbGVyT3B0aW9ucyIsImVzTW9kdWxlSW50ZXJvcCIsImJvZHkiLCJleHBvcnRNZXRhIiwiZXhwb3J0S2luZCIsImRlY2xhcmF0aW9uSXNUeXBlIiwiaW1wb3J0S2luZCIsInNwZWNpZmllcnNPbmx5SW1wb3J0aW5nVHlwZXMiLCJzcGVjaWZpZXJzIiwic3BlY2lmaWVyIiwibnMiLCJmaW5kIiwicyIsImlkIiwibnNvdXJjZSIsImV4cG9ydGVkIiwiaXNFc01vZHVsZUludGVyb3BUcnVlIiwiZXhwb3J0cyIsImV4cG9ydGVkTmFtZSIsImV4cHJlc3Npb24iLCJkZWNsVHlwZXMiLCJleHBvcnRlZERlY2xzIiwiZmlsdGVyIiwiZGVjbCIsIm1vZHVsZUJsb2NrTm9kZSIsIm5hbWVzcGFjZURlY2wiLCJwYXR0ZXJuIiwicHJvcGVydGllcyIsImFyZ3VtZW50IiwiZWxlbWVudHMiLCJlbGVtZW50IiwibGVmdCIsInBhcnNlclBhdGgiLCJ0ZXh0IiwiU291cmNlQ29kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJwQmdCQSx1QixHQUFBQSx1QixDQTNwQmhCLHdCLHVDQUVBLG9DLG1EQUVBLDhCLDZDQUVBLGdDQUVBLGtELDZDQUNBLHNELGlEQUNBLG9ELCtDQUVBLGdEQUNBLDhELElBQVlDLFcseUNBRVosb0VBRUEsK0Msb2pCQUVBLElBQUlDLGtDQUFKLENBRUEsSUFBTUMsTUFBTSx3QkFBTSxnQ0FBTixDQUFaLENBRUEsSUFBTUMsY0FBYyxJQUFJQyxHQUFKLEVBQXBCLENBQ0EsSUFBTUMsZ0JBQWdCLElBQUlELEdBQUosRUFBdEIsQyxJQUVxQkUsUyxnQkFDbkIsbUJBQVlDLElBQVosRUFBa0Isa0NBQ2hCLEtBQUtBLElBQUwsR0FBWUEsSUFBWixDQUNBLEtBQUtDLFNBQUwsR0FBaUIsSUFBSUosR0FBSixFQUFqQixDQUZnQixDQUdoQjtBQUNBLFNBQUtLLFNBQUwsR0FBaUIsSUFBSUwsR0FBSixFQUFqQixDQUpnQixDQUtoQjs7O21DQUlBLEtBQUtNLFlBQUwsR0FBb0IsSUFBSUMsR0FBSixFQUFwQixDQVRnQixDQVVoQjs7O3FFQUlBLEtBQUtDLE9BQUwsR0FBZSxJQUFJUixHQUFKLEVBQWYsQ0FDQSxLQUFLUyxNQUFMLEdBQWMsRUFBZCxDQUNELEMsdUNBZUQ7Ozs7OzsyTEFPSUMsSSxFQUFNLENBQ1IsSUFBSSxLQUFLTixTQUFMLENBQWVPLEdBQWYsQ0FBbUJELElBQW5CLENBQUosRUFBOEIsT0FBTyxJQUFQLENBQzlCLElBQUksS0FBS0wsU0FBTCxDQUFlTSxHQUFmLENBQW1CRCxJQUFuQixDQUFKLEVBQThCLE9BQU8sSUFBUCxDQUZ0QixDQUlSO0FBQ0EsWUFBSUEsU0FBUyxTQUFiLEVBQXdCLHdHQUN0QixxQkFBa0IsS0FBS0osWUFBdkIsOEhBQXFDLEtBQTFCTSxHQUEwQixlQUNuQyxJQUFNQyxXQUFXRCxLQUFqQixDQURtQyxDQUduQztBQUNBLGtCQUFJLENBQUNDLFFBQUwsRUFBZSxTQUVmLElBQUlBLFNBQVNGLEdBQVQsQ0FBYUQsSUFBYixDQUFKLEVBQXdCLE9BQU8sSUFBUCxDQUN6QixDQVJxQix1TkFTdkIsQ0FFRCxPQUFPLEtBQVAsQ0FDRCxDLGVBRUQ7Ozs7OFhBS1FBLEksRUFBTSxDQUNaLElBQUksS0FBS04sU0FBTCxDQUFlTyxHQUFmLENBQW1CRCxJQUFuQixDQUFKLEVBQThCLE9BQU8sRUFBRUksT0FBTyxJQUFULEVBQWVYLE1BQU0sQ0FBQyxJQUFELENBQXJCLEVBQVAsQ0FFOUIsSUFBSSxLQUFLRSxTQUFMLENBQWVNLEdBQWYsQ0FBbUJELElBQW5CLENBQUosRUFBOEIsQ0FDNUIsSUFBTUwsWUFBWSxLQUFLQSxTQUFMLENBQWVVLEdBQWYsQ0FBbUJMLElBQW5CLENBQWxCLENBQ0EsSUFBTU0sV0FBV1gsVUFBVVksU0FBVixFQUFqQixDQUY0QixDQUk1QjtBQUNBLGNBQUlELFlBQVksSUFBaEIsRUFBc0IsT0FBTyxFQUFFRixPQUFPLElBQVQsRUFBZVgsTUFBTSxDQUFDLElBQUQsQ0FBckIsRUFBUCxDQUxNLENBTzVCO0FBQ0EsY0FBSWEsU0FBU2IsSUFBVCxLQUFrQixLQUFLQSxJQUF2QixJQUErQkUsVUFBVWEsS0FBVixLQUFvQlIsSUFBdkQsRUFBNkQsQ0FDM0QsT0FBTyxFQUFFSSxPQUFPLEtBQVQsRUFBZ0JYLE1BQU0sQ0FBQyxJQUFELENBQXRCLEVBQVAsQ0FDRCxDQUVELElBQU1nQixPQUFPSCxTQUFTSSxPQUFULENBQWlCZixVQUFVYSxLQUEzQixDQUFiLENBQ0FDLEtBQUtoQixJQUFMLENBQVVrQixPQUFWLENBQWtCLElBQWxCLEVBRUEsT0FBT0YsSUFBUCxDQUNELENBbkJXLENBc0JaO0FBQ0EsWUFBSVQsU0FBUyxTQUFiLEVBQXdCLDJHQUN0QixzQkFBa0IsS0FBS0osWUFBdkIsbUlBQXFDLEtBQTFCTSxHQUEwQixnQkFDbkMsSUFBTUMsV0FBV0QsS0FBakIsQ0FDQSxJQUFJQyxZQUFZLElBQWhCLEVBQXNCLE9BQU8sRUFBRUMsT0FBTyxJQUFULEVBQWVYLE1BQU0sQ0FBQyxJQUFELENBQXJCLEVBQVAsQ0FGYSxDQUduQztBQUNBLGtCQUFJLENBQUNVLFFBQUwsRUFBZSxTQUpvQixDQU1uQztBQUNBLGtCQUFJQSxTQUFTVixJQUFULEtBQWtCLEtBQUtBLElBQTNCLEVBQWlDLFNBRWpDLElBQU1tQixhQUFhVCxTQUFTTyxPQUFULENBQWlCVixJQUFqQixDQUFuQixDQUNBLElBQUlZLFdBQVdSLEtBQWYsRUFBc0IsQ0FDcEJRLFdBQVduQixJQUFYLENBQWdCa0IsT0FBaEIsQ0FBd0IsSUFBeEIsRUFDQSxPQUFPQyxVQUFQLENBQ0QsQ0FDRixDQWZxQiw4TkFnQnZCLENBRUQsT0FBTyxFQUFFUixPQUFPLEtBQVQsRUFBZ0JYLE1BQU0sQ0FBQyxJQUFELENBQXRCLEVBQVAsQ0FDRCxDLHFFQUVHTyxJLEVBQU0sQ0FDUixJQUFJLEtBQUtOLFNBQUwsQ0FBZU8sR0FBZixDQUFtQkQsSUFBbkIsQ0FBSixFQUE4QixPQUFPLEtBQUtOLFNBQUwsQ0FBZVcsR0FBZixDQUFtQkwsSUFBbkIsQ0FBUCxDQUU5QixJQUFJLEtBQUtMLFNBQUwsQ0FBZU0sR0FBZixDQUFtQkQsSUFBbkIsQ0FBSixFQUE4QixDQUM1QixJQUFNTCxZQUFZLEtBQUtBLFNBQUwsQ0FBZVUsR0FBZixDQUFtQkwsSUFBbkIsQ0FBbEIsQ0FDQSxJQUFNTSxXQUFXWCxVQUFVWSxTQUFWLEVBQWpCLENBRjRCLENBSTVCO0FBQ0EsY0FBSUQsWUFBWSxJQUFoQixFQUFzQixPQUFPLElBQVAsQ0FMTSxDQU81QjtBQUNBLGNBQUlBLFNBQVNiLElBQVQsS0FBa0IsS0FBS0EsSUFBdkIsSUFBK0JFLFVBQVVhLEtBQVYsS0FBb0JSLElBQXZELEVBQTZELE9BQU9hLFNBQVAsQ0FFN0QsT0FBT1AsU0FBU0QsR0FBVCxDQUFhVixVQUFVYSxLQUF2QixDQUFQLENBQ0QsQ0FkTyxDQWdCUjtBQUNBLFlBQUlSLFNBQVMsU0FBYixFQUF3QiwyR0FDdEIsc0JBQWtCLEtBQUtKLFlBQXZCLG1JQUFxQyxLQUExQk0sR0FBMEIsZ0JBQ25DLElBQU1DLFdBQVdELEtBQWpCLENBRG1DLENBRW5DO0FBQ0Esa0JBQUksQ0FBQ0MsUUFBTCxFQUFlLFNBSG9CLENBS25DO0FBQ0Esa0JBQUlBLFNBQVNWLElBQVQsS0FBa0IsS0FBS0EsSUFBM0IsRUFBaUMsU0FFakMsSUFBTW1CLGFBQWFULFNBQVNFLEdBQVQsQ0FBYUwsSUFBYixDQUFuQixDQUNBLElBQUlZLGVBQWVDLFNBQW5CLEVBQThCLE9BQU9ELFVBQVAsQ0FDL0IsQ0FYcUIsOE5BWXZCLENBRUQsT0FBT0MsU0FBUCxDQUNELEMseUVBRU9DLFEsRUFBVUMsTyxFQUFTLGtCQUN6QixLQUFLckIsU0FBTCxDQUFlc0IsT0FBZixDQUF1QixVQUFDQyxDQUFELEVBQUlDLENBQUosVUFDckJKLFNBQVNLLElBQVQsQ0FBY0osT0FBZCxFQUF1QkUsQ0FBdkIsRUFBMEJDLENBQTFCLEVBQTZCLEtBQTdCLENBRHFCLEVBQXZCLEVBR0EsS0FBS3ZCLFNBQUwsQ0FBZXFCLE9BQWYsQ0FBdUIsVUFBQ3JCLFNBQUQsRUFBWUssSUFBWixFQUFxQixDQUMxQyxJQUFNb0IsYUFBYXpCLFVBQVVZLFNBQVYsRUFBbkIsQ0FEMEMsQ0FFMUM7QUFDQU8sbUJBQVNLLElBQVQsQ0FBY0osT0FBZCxFQUF1QkssY0FBY0EsV0FBV2YsR0FBWCxDQUFlVixVQUFVYSxLQUF6QixDQUFyQyxFQUFzRVIsSUFBdEUsRUFBNEUsS0FBNUUsRUFDRCxDQUpELEVBTUEsS0FBS0osWUFBTCxDQUFrQm9CLE9BQWxCLENBQTBCLGVBQU8sQ0FDL0IsSUFBTUssSUFBSW5CLEtBQVYsQ0FEK0IsQ0FFL0I7QUFDQSxjQUFJbUIsS0FBSyxJQUFULEVBQWUsT0FFZkEsRUFBRUwsT0FBRixDQUFVLFVBQUNDLENBQUQsRUFBSUMsQ0FBSixVQUNSQSxNQUFNLFNBQU4sSUFBbUJKLFNBQVNLLElBQVQsQ0FBY0osT0FBZCxFQUF1QkUsQ0FBdkIsRUFBMEJDLENBQTFCLEVBQTZCLEtBQTdCLENBRFgsRUFBVixFQUVELENBUEQsRUFRRCxDLG1CQUVEO3NFQUVhSSxPLEVBQVNDLFcsRUFBYSxDQUNqQ0QsUUFBUUUsTUFBUixDQUFlLEVBQ2JDLE1BQU1GLFlBQVlHLE1BREwsRUFFYkMsU0FBUyw4Q0FBb0NKLFlBQVlHLE1BQVosQ0FBbUJFLEtBQXZELDBCQUNNLEtBQUs3QixNQUFMLENBQ0E4QixHQURBLENBQ0ksNEJBQVFDLEVBQUVILE9BQVYsa0JBQXNCRyxFQUFFQyxVQUF4QixpQkFBc0NELEVBQUVFLE1BQXhDLFNBREosRUFFQUMsSUFGQSxDQUVLLElBRkwsQ0FETixFQUZJLEVBQWYsRUFPRCxDLGlGQXhKZ0IsQ0FBRSxPQUFPLEtBQUs1QixHQUFMLENBQVMsU0FBVCxLQUF1QixJQUE5QixDQUFxQyxDLGVBQUM7cURBRTlDLENBQ1QsSUFBSTZCLE9BQU8sS0FBS3hDLFNBQUwsQ0FBZXdDLElBQWYsR0FBc0IsS0FBS3ZDLFNBQUwsQ0FBZXVDLElBQWhELENBQ0EsS0FBS3RDLFlBQUwsQ0FBa0JvQixPQUFsQixDQUEwQixlQUFPLENBQy9CLElBQU1LLElBQUluQixLQUFWLENBRCtCLENBRS9CO0FBQ0EsY0FBSW1CLEtBQUssSUFBVCxFQUFlLE9BQ2ZhLFFBQVFiLEVBQUVhLElBQVYsQ0FDRCxDQUxELEVBTUEsT0FBT0EsSUFBUCxDQUNELEMseUNBZ0pIOztnSUE5S3FCMUMsUyxDQWlMckIsU0FBUzJDLFVBQVQsQ0FBb0JULE1BQXBCLEVBQTRCVSxlQUE1QixFQUF1RCxDQUNyRCxJQUFNQyxXQUFXLEVBQWpCLENBRHFELENBR3JEO0FBSHFELG9DQUFQQyxLQUFPLG1FQUFQQSxLQUFPLDhCQUlyREEsTUFBTUMsSUFBTixDQUFXLGFBQUssQ0FDZCxJQUFJLENBRUYsSUFBSUMsd0JBQUosQ0FGRSxDQUlGO0FBQ0EsVUFBSSxxQkFBcUJ0QixDQUF6QixFQUE0QixDQUMxQnNCLGtCQUFrQnRCLEVBQUVzQixlQUFwQixDQUNELENBRkQsTUFFTyxJQUFJdEIsRUFBRXVCLEtBQU4sRUFBYSxDQUNsQkQsa0JBQWtCZCxPQUFPZ0IsaUJBQVAsQ0FBeUJ4QixDQUF6QixDQUFsQixDQUNELENBRUQsSUFBSSxDQUFDc0IsZUFBRCxJQUFvQkEsZ0JBQWdCRyxNQUFoQixLQUEyQixDQUFuRCxFQUFzRCxPQUFPLEtBQVAsQ0FFdEQsS0FBSyxJQUFNM0MsSUFBWCxJQUFtQm9DLGVBQW5CLEVBQW9DLENBQ2xDLElBQU1RLE1BQU1SLGdCQUFnQnBDLElBQWhCLEVBQXNCd0MsZUFBdEIsQ0FBWixDQUNBLElBQUlJLEdBQUosRUFBUyxDQUNQUCxTQUFTTyxHQUFULEdBQWVBLEdBQWYsQ0FDRCxDQUNGLENBRUQsT0FBTyxJQUFQLENBQ0QsQ0FyQkQsQ0FxQkUsT0FBT0MsR0FBUCxFQUFZLENBQ1osT0FBTyxLQUFQLENBQ0QsQ0FDRixDQXpCRCxFQTJCQSxPQUFPUixRQUFQLENBQ0QsQ0FFRCxJQUFNUywyQkFBMkIsRUFDL0JDLE9BQU9DLFlBRHdCLEVBRS9CQyxRQUFRQyxhQUZ1QixFQUFqQyxDLENBS0E7Ozs7Z2RBS0EsU0FBU0YsWUFBVCxDQUFzQkcsUUFBdEIsRUFBZ0MsQ0FDOUIsSUFBSVAsWUFBSixDQUQ4QixDQUc5QjtBQUNBTyxXQUFTbkMsT0FBVCxDQUFpQixtQkFBVyxDQUMxQjtBQUNBLFFBQUlvQyxRQUFRQyxJQUFSLEtBQWlCLE9BQXJCLEVBQThCLE9BQzlCLElBQUksQ0FDRlQsTUFBTVUsc0JBQVNDLEtBQVQsQ0FBZUgsUUFBUXhCLEtBQXZCLEVBQThCLEVBQUU0QixRQUFRLElBQVYsRUFBOUIsQ0FBTixDQUNELENBRkQsQ0FFRSxPQUFPWCxHQUFQLEVBQVksQ0FDWixpREFDRCxDQUNGLENBUkQsRUFVQSxPQUFPRCxHQUFQLENBQ0QsQyxDQUVEOztzTUFHQSxTQUFTTSxhQUFULENBQXVCQyxRQUF2QixFQUFpQyxDQUMvQjtBQUNBLE1BQU1NLFFBQVEsRUFBZCxDQUNBLEtBQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJUCxTQUFTUixNQUE3QixFQUFxQ2UsR0FBckMsRUFBMEMsQ0FDeEMsSUFBTU4sVUFBVUQsU0FBU08sQ0FBVCxDQUFoQixDQUNBLElBQUlOLFFBQVF4QixLQUFSLENBQWMrQixLQUFkLENBQW9CLE9BQXBCLENBQUosRUFBa0MsTUFDbENGLE1BQU1HLElBQU4sQ0FBV1IsUUFBUXhCLEtBQVIsQ0FBY2lDLElBQWQsRUFBWCxFQUNELENBUDhCLENBUy9CO0FBQ0EsTUFBTUMsY0FBY0wsTUFBTXhCLElBQU4sQ0FBVyxHQUFYLEVBQWdCMEIsS0FBaEIsQ0FBc0IsdUNBQXRCLENBQXBCLENBQ0EsSUFBSUcsV0FBSixFQUFpQixDQUNmLE9BQU8sRUFDTEMsYUFBYUQsWUFBWSxDQUFaLENBRFIsRUFFTEUsTUFBTSxDQUFDLEVBQ0xDLE9BQU9ILFlBQVksQ0FBWixFQUFlSSxXQUFmLEVBREYsRUFFTEgsYUFBYUQsWUFBWSxDQUFaLENBRlIsRUFBRCxDQUZELEVBQVAsQ0FPRCxDQUNGLENBRUQsSUFBTUssdUJBQXVCLElBQUl0RSxHQUFKLENBQVEsQ0FBQyx3QkFBRCxFQUEyQiwwQkFBM0IsQ0FBUixDQUE3QixDQUVBTCxVQUFVYSxHQUFWLEdBQWdCLFVBQVVxQixNQUFWLEVBQWtCSixPQUFsQixFQUEyQixDQUN6QyxJQUFNN0IsT0FBTywwQkFBUWlDLE1BQVIsRUFBZ0JKLE9BQWhCLENBQWIsQ0FDQSxJQUFJN0IsUUFBUSxJQUFaLEVBQWtCLE9BQU8sSUFBUCxDQUVsQixPQUFPRCxpQkFBYzRFLGFBQWEzRSxJQUFiLEVBQW1CNkIsT0FBbkIsQ0FBZCxDQUFQLENBQ0QsQ0FMRCxDQU9BOUIsbUJBQWdCLFVBQVU4QixPQUFWLEVBQW1CLEtBQ3pCN0IsSUFEeUIsR0FDaEI2QixPQURnQixDQUN6QjdCLElBRHlCLENBR2pDLElBQU00RSxXQUFXLHNCQUFXL0MsT0FBWCxFQUFvQmdELE1BQXBCLENBQTJCLEtBQTNCLENBQWpCLENBQ0EsSUFBSUMsWUFBWWxGLFlBQVlnQixHQUFaLENBQWdCZ0UsUUFBaEIsQ0FBaEIsQ0FKaUMsQ0FNakM7QUFDQSxNQUFJRSxjQUFjLElBQWxCLEVBQXdCLE9BQU8sSUFBUCxDQUV4QixJQUFNQyxRQUFRQyxnQkFBR0MsUUFBSCxDQUFZakYsSUFBWixDQUFkLENBQ0EsSUFBSThFLGFBQWEsSUFBakIsRUFBdUIsQ0FDckI7QUFDQSxRQUFJQSxVQUFVSSxLQUFWLEdBQWtCSCxNQUFNRyxLQUF4QixLQUFrQyxDQUF0QyxFQUF5QyxDQUN2QyxPQUFPSixTQUFQLENBQ0QsQ0FKb0IsQ0FLckI7QUFDRCxHQWhCZ0MsQ0FrQmpDO0FBQ0EsTUFBSSxDQUFDLCtCQUFrQjlFLElBQWxCLEVBQXdCNkIsT0FBeEIsQ0FBTCxFQUF1QyxDQUNyQ2pDLFlBQVl1RixHQUFaLENBQWdCUCxRQUFoQixFQUEwQixJQUExQixFQUNBLE9BQU8sSUFBUCxDQUNELENBdEJnQyxDQXdCakM7QUFDQSxNQUFJLHlCQUFVNUUsSUFBVixFQUFnQjZCLE9BQWhCLENBQUosRUFBOEIsQ0FDNUJsQyxJQUFJLHNDQUFKLEVBQTRDSyxJQUE1QyxFQUNBSixZQUFZdUYsR0FBWixDQUFnQlAsUUFBaEIsRUFBMEIsSUFBMUIsRUFDQSxPQUFPLElBQVAsQ0FDRCxDQUVELElBQU1RLFVBQVVKLGdCQUFHSyxZQUFILENBQWdCckYsSUFBaEIsRUFBc0IsRUFBRXNGLFVBQVUsTUFBWixFQUF0QixDQUFoQixDQS9CaUMsQ0FpQ2pDO0FBQ0EsTUFBSSxDQUFDN0YsWUFBWThGLElBQVosQ0FBaUJILE9BQWpCLENBQUwsRUFBZ0MsQ0FDOUJ6RixJQUFJLHdDQUFKLEVBQThDSyxJQUE5QyxFQUNBSixZQUFZdUYsR0FBWixDQUFnQlAsUUFBaEIsRUFBMEIsSUFBMUIsRUFDQSxPQUFPLElBQVAsQ0FDRCxDQUVEakYsSUFBSSxZQUFKLEVBQWtCaUYsUUFBbEIsRUFBNEIsVUFBNUIsRUFBd0M1RSxJQUF4QyxFQUNBOEUsWUFBWS9FLFVBQVUrRCxLQUFWLENBQWdCOUQsSUFBaEIsRUFBc0JvRixPQUF0QixFQUErQnZELE9BQS9CLENBQVosQ0F6Q2lDLENBMkNqQztBQUNBLE1BQUlpRCxhQUFhLElBQWpCLEVBQXVCLE9BQU8sSUFBUCxDQUV2QkEsVUFBVUksS0FBVixHQUFrQkgsTUFBTUcsS0FBeEIsQ0FFQXRGLFlBQVl1RixHQUFaLENBQWdCUCxRQUFoQixFQUEwQkUsU0FBMUIsRUFDQSxPQUFPQSxTQUFQLENBQ0QsQ0FsREQsQ0FxREEvRSxVQUFVK0QsS0FBVixHQUFrQixVQUFVOUQsSUFBVixFQUFnQm9GLE9BQWhCLEVBQXlCdkQsT0FBekIsRUFBa0MsQ0FDbEQsSUFBTTJELElBQUksSUFBSXpGLFNBQUosQ0FBY0MsSUFBZCxDQUFWLENBRUEsSUFBSXlGLFlBQUosQ0FDQSxJQUFJLENBQ0ZBLE1BQU0sd0JBQU16RixJQUFOLEVBQVlvRixPQUFaLEVBQXFCdkQsT0FBckIsQ0FBTixDQUNELENBRkQsQ0FFRSxPQUFPdUIsR0FBUCxFQUFZLENBQ1p6RCxJQUFJLGNBQUosRUFBb0JLLElBQXBCLEVBQTBCb0QsR0FBMUIsRUFDQW9DLEVBQUVsRixNQUFGLENBQVM2RCxJQUFULENBQWNmLEdBQWQsRUFDQSxPQUFPb0MsQ0FBUCxDQUhZLENBR0Y7QUFDWCxHQUVELElBQUksQ0FBQy9GLFlBQVlpRyxRQUFaLENBQXFCRCxHQUFyQixDQUFMLEVBQWdDLE9BQU8sSUFBUCxDQUVoQyxJQUFNRSxXQUFZOUQsUUFBUStELFFBQVIsSUFBb0IvRCxRQUFRK0QsUUFBUixDQUFpQixpQkFBakIsQ0FBckIsSUFBNkQsQ0FBQyxPQUFELENBQTlFLENBQ0EsSUFBTWpELGtCQUFrQixFQUF4QixDQUNBZ0QsU0FBU3BFLE9BQVQsQ0FBaUIsaUJBQVMsQ0FDeEJvQixnQkFBZ0JrRCxLQUFoQixJQUF5QnhDLHlCQUF5QndDLEtBQXpCLENBQXpCLENBQ0QsQ0FGRCxFQWhCa0QsQ0FvQmxEO0FBQ0EsTUFBSUosSUFBSS9CLFFBQVIsRUFBa0IsQ0FDaEIrQixJQUFJL0IsUUFBSixDQUFhWixJQUFiLENBQWtCLGFBQUssQ0FDckIsSUFBSWdELEVBQUVsQyxJQUFGLEtBQVcsT0FBZixFQUF3QixPQUFPLEtBQVAsQ0FDeEIsSUFBSSxDQUNGLElBQU1ULE1BQU1VLHNCQUFTQyxLQUFULENBQWVnQyxFQUFFM0QsS0FBakIsRUFBd0IsRUFBRTRCLFFBQVEsSUFBVixFQUF4QixDQUFaLENBQ0EsSUFBSVosSUFBSW9CLElBQUosQ0FBU3pCLElBQVQsQ0FBYyxxQkFBS2lELEVBQUV2QixLQUFGLEtBQVksUUFBakIsRUFBZCxDQUFKLEVBQThDLENBQzVDZ0IsRUFBRXJDLEdBQUYsR0FBUUEsR0FBUixDQUNBLE9BQU8sSUFBUCxDQUNELENBQ0YsQ0FORCxDQU1FLE9BQU9DLEdBQVAsRUFBWSxDQUFFLFlBQWMsQ0FDOUIsT0FBTyxLQUFQLENBQ0QsQ0FWRCxFQVdELENBRUQsSUFBTTRDLGFBQWEsSUFBSW5HLEdBQUosRUFBbkIsQ0FFQSxTQUFTb0csVUFBVCxDQUFvQjlELEtBQXBCLEVBQTJCLENBQ3pCLE9BQU8rRCxxQkFBUUMsUUFBUixDQUFpQmhFLEtBQWpCLEVBQXdCbkMsSUFBeEIsRUFBOEI2QixRQUFRK0QsUUFBdEMsQ0FBUCxDQUNELENBRUQsU0FBU1EsYUFBVCxDQUF1QmpFLEtBQXZCLEVBQThCLENBQzVCLElBQU1rRSxLQUFLSixXQUFXOUQsS0FBWCxDQUFYLENBQ0EsSUFBSWtFLE1BQU0sSUFBVixFQUFnQixPQUFPLElBQVAsQ0FDaEIsT0FBT3RHLGlCQUFjNEUsYUFBYTBCLEVBQWIsRUFBaUJ4RSxPQUFqQixDQUFkLENBQVAsQ0FDRCxDQUVELFNBQVN5RSxZQUFULENBQXNCQyxVQUF0QixFQUFrQyxDQUNoQyxJQUFJLENBQUNQLFdBQVd4RixHQUFYLENBQWUrRixXQUFXaEcsSUFBMUIsQ0FBTCxFQUFzQyxPQUV0QyxPQUFPLFlBQVksQ0FDakIsT0FBTzZGLGNBQWNKLFdBQVdwRixHQUFYLENBQWUyRixXQUFXaEcsSUFBMUIsQ0FBZCxDQUFQLENBQ0QsQ0FGRCxDQUdELENBRUQsU0FBU2lHLFlBQVQsQ0FBc0JDLE1BQXRCLEVBQThCRixVQUE5QixFQUEwQyxDQUN4QyxJQUFNRyxPQUFPSixhQUFhQyxVQUFiLENBQWIsQ0FDQSxJQUFJRyxJQUFKLEVBQVUsQ0FDUkMsT0FBT0MsY0FBUCxDQUFzQkgsTUFBdEIsRUFBOEIsV0FBOUIsRUFBMkMsRUFBRTdGLEtBQUs4RixJQUFQLEVBQTNDLEVBQ0QsQ0FFRCxPQUFPRCxNQUFQLENBQ0QsQ0FFRCxTQUFTSSxpQkFBVCxPQUF1Q0Msb0JBQXZDLEVBQTZGLEtBQWhFN0UsTUFBZ0UsUUFBaEVBLE1BQWdFLEtBQWhDOEUsa0JBQWdDLHVFQUFYLElBQUkzRyxHQUFKLEVBQVcsQ0FDM0YsSUFBSTZCLFVBQVUsSUFBZCxFQUFvQixPQUFPLElBQVAsQ0FFcEIsSUFBTStFLElBQUlmLFdBQVdoRSxPQUFPRSxLQUFsQixDQUFWLENBQ0EsSUFBSTZFLEtBQUssSUFBVCxFQUFlLE9BQU8sSUFBUCxDQUVmLElBQU1DLHNCQUFzQixFQUMxQjtBQUNBaEYsY0FBUSxFQUFFRSxPQUFPRixPQUFPRSxLQUFoQixFQUF1QitFLEtBQUtqRixPQUFPaUYsR0FBbkMsRUFGa0IsRUFHMUJKLDBDQUgwQixFQUkxQkMsc0NBSjBCLEVBQTVCLENBT0EsSUFBTUksV0FBVzNCLEVBQUVuRixPQUFGLENBQVVPLEdBQVYsQ0FBY29HLENBQWQsQ0FBakIsQ0FDQSxJQUFJRyxZQUFZLElBQWhCLEVBQXNCLENBQ3BCQSxTQUFTQyxZQUFULENBQXNCQyxHQUF0QixDQUEwQkosbUJBQTFCLEVBQ0EsT0FBT0UsU0FBU0csTUFBaEIsQ0FDRCxDQUVELElBQU1BLFNBQVNDLFNBQVNQLENBQVQsRUFBWW5GLE9BQVosQ0FBZixDQUNBMkQsRUFBRW5GLE9BQUYsQ0FBVThFLEdBQVYsQ0FBYzZCLENBQWQsRUFBaUIsRUFBRU0sY0FBRixFQUFVRixjQUFjLElBQUloSCxHQUFKLENBQVEsQ0FBQzZHLG1CQUFELENBQVIsQ0FBeEIsRUFBakIsRUFDQSxPQUFPSyxNQUFQLENBQ0QsQ0FFRCxJQUFNckYsU0FBU3VGLGVBQWVwQyxPQUFmLEVBQXdCSyxHQUF4QixDQUFmLENBRUEsU0FBU2dDLFlBQVQsR0FBd0IsQ0FDdEIsSUFBTUMsZUFBZSxvQ0FBZSxFQUNsQ0MsS0FDRzlGLFFBQVErRixhQUFSLElBQXlCL0YsUUFBUStGLGFBQVIsQ0FBc0JDLGVBQWhELElBQ0FDLFFBQVFILEdBQVIsRUFIZ0MsRUFJbENJLHFCQUFRLGdCQUFDQyxHQUFELFVBQVNGLFFBQVFHLEdBQVIsQ0FBWUQsR0FBWixDQUFULEVBQVIsaUJBSmtDLEVBQWYsQ0FBckIsQ0FNQSxJQUFJLENBQ0YsSUFBSU4sYUFBYVEsWUFBYixLQUE4QjlHLFNBQWxDLEVBQTZDLENBQzNDLElBQU0rRyxXQUFXbkQsZ0JBQUdLLFlBQUgsQ0FBZ0JxQyxhQUFhUSxZQUE3QixFQUEyQ0UsUUFBM0MsRUFBakIsQ0FDQSxJQUFJLENBQUMxSSx5QkFBTCxFQUFnQyxnQkFFRzJJLFFBQVEsWUFBUixDQUZILEVBQzlCO0FBQ0czSSxtQ0FGMkIsWUFFM0JBLHlCQUYyQixDQUcvQixDQUNELE9BQU9BLDBCQUEwQmdJLGFBQWFRLFlBQXZDLEVBQXFEQyxRQUFyRCxFQUErREcsTUFBdEUsQ0FDRCxDQUNGLENBVEQsQ0FTRSxPQUFPakcsQ0FBUCxFQUFVLENBQ1Y7QUFDRCxLQUVELE9BQU8sSUFBUCxDQUNELENBRUQsU0FBU2tHLGlCQUFULEdBQTZCLENBQzNCLElBQU0zRCxXQUFXLHNCQUFXLEVBQzFCaUQsaUJBQWlCaEcsUUFBUStGLGFBQVIsSUFBeUIvRixRQUFRK0YsYUFBUixDQUFzQkMsZUFEdEMsRUFBWCxFQUVkaEQsTUFGYyxDQUVQLEtBRk8sQ0FBakIsQ0FHQSxJQUFJMkQsV0FBVzFJLGNBQWNjLEdBQWQsQ0FBa0JnRSxRQUFsQixDQUFmLENBQ0EsSUFBSSxPQUFPNEQsUUFBUCxLQUFvQixXQUF4QixFQUFxQyxDQUNuQ0EsV0FBV2YsY0FBWCxDQUNBM0gsY0FBY3FGLEdBQWQsQ0FBa0JQLFFBQWxCLEVBQTRCNEQsUUFBNUIsRUFDRCxDQUVELE9BQU9BLFlBQVlBLFNBQVNDLGVBQXJCLEdBQXVDRCxTQUFTQyxlQUFULENBQXlCQyxlQUFoRSxHQUFrRixLQUF6RixDQUNELENBRURqRCxJQUFJa0QsSUFBSixDQUFTcEgsT0FBVCxDQUFpQixVQUFVRSxDQUFWLEVBQWEsQ0FDNUIsSUFBSUEsRUFBRW1DLElBQUYsS0FBVywwQkFBZixFQUEyQyxDQUN6QyxJQUFNZ0YsYUFBYWxHLFdBQVdULE1BQVgsRUFBbUJVLGVBQW5CLEVBQW9DbEIsQ0FBcEMsQ0FBbkIsQ0FDQSxJQUFJQSxFQUFFSyxXQUFGLENBQWM4QixJQUFkLEtBQXVCLFlBQTNCLEVBQXlDLENBQ3ZDNEMsYUFBYW9DLFVBQWIsRUFBeUJuSCxFQUFFSyxXQUEzQixFQUNELENBQ0QwRCxFQUFFdkYsU0FBRixDQUFZa0YsR0FBWixDQUFnQixTQUFoQixFQUEyQnlELFVBQTNCLEVBQ0EsT0FDRCxDQUVELElBQUluSCxFQUFFbUMsSUFBRixLQUFXLHNCQUFmLEVBQXVDLENBQ3JDLElBQU0wRCxTQUFTVCxrQkFBa0JwRixDQUFsQixFQUFxQkEsRUFBRW9ILFVBQUYsS0FBaUIsTUFBdEMsQ0FBZixDQUNBLElBQUl2QixNQUFKLEVBQVk5QixFQUFFckYsWUFBRixDQUFla0gsR0FBZixDQUFtQkMsTUFBbkIsRUFDWixPQUNELENBZDJCLENBZ0I1QjtBQUNBLFFBQUk3RixFQUFFbUMsSUFBRixLQUFXLG1CQUFmLEVBQW9DLENBQ2xDO0FBQ0EsVUFBTWtGLG9CQUFvQnJILEVBQUVzSCxVQUFGLEtBQWlCLE1BQTNDLENBRmtDLENBR2xDO0FBQ0E7QUFDQSxVQUFJQywrQkFBK0J2SCxFQUFFd0gsVUFBRixDQUFhL0YsTUFBaEQsQ0FDQSxJQUFNNkQscUJBQXFCLElBQUkzRyxHQUFKLEVBQTNCLENBQ0FxQixFQUFFd0gsVUFBRixDQUFhMUgsT0FBYixDQUFxQixxQkFBYSxDQUNoQyxJQUFJbUQscUJBQXFCbEUsR0FBckIsQ0FBeUIwSSxVQUFVdEYsSUFBbkMsQ0FBSixFQUE4QyxDQUM1Q21ELG1CQUFtQk0sR0FBbkIsQ0FBdUI2QixVQUFVdEYsSUFBakMsRUFDRCxDQUNELElBQUlzRixVQUFVdEYsSUFBVixLQUFtQixpQkFBdkIsRUFBMEMsQ0FDeENtRCxtQkFBbUJNLEdBQW5CLENBQXVCNkIsVUFBVXJJLFFBQVYsQ0FBbUJOLElBQTFDLEVBQ0QsQ0FOK0IsQ0FRaEM7QUFDQXlJLHVDQUNFQSxnQ0FBZ0NFLFVBQVVILFVBQVYsS0FBeUIsTUFEM0QsQ0FFRCxDQVhELEVBWUFsQyxrQkFBa0JwRixDQUFsQixFQUFxQnFILHFCQUFxQkUsNEJBQTFDLEVBQXdFakMsa0JBQXhFLEVBRUEsSUFBTW9DLEtBQUsxSCxFQUFFd0gsVUFBRixDQUFhRyxJQUFiLENBQWtCLHFCQUFLQyxFQUFFekYsSUFBRixLQUFXLDBCQUFoQixFQUFsQixDQUFYLENBQ0EsSUFBSXVGLEVBQUosRUFBUSxDQUNObkQsV0FBV2IsR0FBWCxDQUFlZ0UsR0FBR3BJLEtBQUgsQ0FBU1IsSUFBeEIsRUFBOEJrQixFQUFFUSxNQUFGLENBQVNFLEtBQXZDLEVBQ0QsQ0FDRCxPQUNELENBRUQsSUFBSVYsRUFBRW1DLElBQUYsS0FBVyx3QkFBZixFQUF5QyxDQUN2QztBQUNBLFVBQUluQyxFQUFFSyxXQUFGLElBQWlCLElBQXJCLEVBQTJCLENBQ3pCLFFBQVFMLEVBQUVLLFdBQUYsQ0FBYzhCLElBQXRCLEdBQ0EsS0FBSyxxQkFBTCxDQUNBLEtBQUssa0JBQUwsQ0FDQSxLQUFLLFdBQUwsQ0FIQSxDQUdrQjtBQUNsQixlQUFLLHNCQUFMLENBQ0EsS0FBSyxpQkFBTCxDQUNBLEtBQUssbUJBQUwsQ0FDQSxLQUFLLG1CQUFMLENBQ0EsS0FBSyx3QkFBTCxDQUNBLEtBQUssd0JBQUwsQ0FDQSxLQUFLLDRCQUFMLENBQ0EsS0FBSyxxQkFBTCxDQUNFNEIsRUFBRXZGLFNBQUYsQ0FBWWtGLEdBQVosQ0FBZ0IxRCxFQUFFSyxXQUFGLENBQWN3SCxFQUFkLENBQWlCL0ksSUFBakMsRUFBdUNtQyxXQUFXVCxNQUFYLEVBQW1CVSxlQUFuQixFQUFvQ2xCLENBQXBDLENBQXZDLEVBQ0EsTUFDRixLQUFLLHFCQUFMLENBQ0VBLEVBQUVLLFdBQUYsQ0FBY3NGLFlBQWQsQ0FBMkI3RixPQUEzQixDQUFtQyxVQUFDSyxDQUFELFVBQ2pDcEMsd0JBQXdCb0MsRUFBRTBILEVBQTFCLEVBQ0Usc0JBQU05RCxFQUFFdkYsU0FBRixDQUFZa0YsR0FBWixDQUFnQm1FLEdBQUcvSSxJQUFuQixFQUF5Qm1DLFdBQVdULE1BQVgsRUFBbUJVLGVBQW5CLEVBQW9DZixDQUFwQyxFQUF1Q0gsQ0FBdkMsQ0FBekIsQ0FBTixFQURGLENBRGlDLEVBQW5DLEVBR0EsTUFsQkYsQ0FvQkQsQ0FFRCxJQUFNOEgsVUFBVTlILEVBQUVRLE1BQUYsSUFBWVIsRUFBRVEsTUFBRixDQUFTRSxLQUFyQyxDQUNBVixFQUFFd0gsVUFBRixDQUFhMUgsT0FBYixDQUFxQixVQUFDOEgsQ0FBRCxFQUFPLENBQzFCLElBQU1ULGFBQWEsRUFBbkIsQ0FDQSxJQUFJN0gsY0FBSixDQUVBLFFBQVFzSSxFQUFFekYsSUFBVixHQUNBLEtBQUssd0JBQUwsQ0FDRSxJQUFJLENBQUNuQyxFQUFFUSxNQUFQLEVBQWUsT0FDZmxCLFFBQVEsU0FBUixDQUNBLE1BQ0YsS0FBSywwQkFBTCxDQUNFeUUsRUFBRXZGLFNBQUYsQ0FBWWtGLEdBQVosQ0FBZ0JrRSxFQUFFRyxRQUFGLENBQVdqSixJQUEzQixFQUFpQ29HLE9BQU9DLGNBQVAsQ0FBc0JnQyxVQUF0QixFQUFrQyxXQUFsQyxFQUErQyxFQUM5RWhJLEdBRDhFLDhCQUN4RSxDQUFFLE9BQU93RixjQUFjbUQsT0FBZCxDQUFQLENBQWdDLENBRHNDLGdCQUEvQyxDQUFqQyxFQUdBLE9BQ0YsS0FBSyxpQkFBTCxDQUNFLElBQUksQ0FBQzlILEVBQUVRLE1BQVAsRUFBZSxDQUNidUQsRUFBRXZGLFNBQUYsQ0FBWWtGLEdBQVosQ0FBZ0JrRSxFQUFFRyxRQUFGLENBQVdqSixJQUEzQixFQUFpQ2lHLGFBQWFvQyxVQUFiLEVBQXlCUyxFQUFFdEksS0FBM0IsQ0FBakMsRUFDQSxPQUNELENBZEgsQ0FlRTtBQUNGLGtCQUNFQSxRQUFRc0ksRUFBRXRJLEtBQUYsQ0FBUVIsSUFBaEIsQ0FDQSxNQWxCRixDQUowQixDQXlCMUI7QUFDQWlGLFVBQUV0RixTQUFGLENBQVlpRixHQUFaLENBQWdCa0UsRUFBRUcsUUFBRixDQUFXakosSUFBM0IsRUFBaUMsRUFBRVEsWUFBRixFQUFTRCx3QkFBVyw2QkFBTXNGLGNBQWNtRCxPQUFkLENBQU4sRUFBWCxvQkFBVCxFQUFqQyxFQUNELENBM0JELEVBNEJELENBRUQsSUFBTUUsd0JBQXdCbEIsbUJBQTlCLENBRUEsSUFBTW1CLFVBQVUsQ0FBQyxvQkFBRCxDQUFoQixDQUNBLElBQUlELHFCQUFKLEVBQTJCLENBQ3pCQyxRQUFRdkYsSUFBUixDQUFhLDhCQUFiLEVBQ0QsQ0ExRzJCLENBNEc1QjtBQUNBLFFBQUksZ0NBQVN1RixPQUFULEVBQWtCakksRUFBRW1DLElBQXBCLENBQUosRUFBK0IsQ0FDN0IsSUFBTStGLGVBQWVsSSxFQUFFbUMsSUFBRixLQUFXLDhCQUFYLEdBQ2pCbkMsRUFBRTZILEVBQUYsQ0FBSy9JLElBRFksR0FFaEJrQixFQUFFbUksVUFBRixJQUFnQm5JLEVBQUVtSSxVQUFGLENBQWFySixJQUE3QixJQUFzQ2tCLEVBQUVtSSxVQUFGLENBQWFOLEVBQWIsSUFBbUI3SCxFQUFFbUksVUFBRixDQUFhTixFQUFiLENBQWdCL0ksSUFBekUsSUFBa0YsSUFGdkYsQ0FHQSxJQUFNc0osWUFBWSxDQUNoQixxQkFEZ0IsRUFFaEIsa0JBRmdCLEVBR2hCLG1CQUhnQixFQUloQixtQkFKZ0IsRUFLaEIsd0JBTGdCLEVBTWhCLHdCQU5nQixFQU9oQiw0QkFQZ0IsRUFRaEIscUJBUmdCLENBQWxCLENBVUEsSUFBTUMsZ0JBQWdCckUsSUFBSWtELElBQUosQ0FBU29CLE1BQVQsQ0FBZ0Isc0JBQUduRyxJQUFILFNBQUdBLElBQUgsQ0FBUzBGLEVBQVQsU0FBU0EsRUFBVCxDQUFhbEMsWUFBYixTQUFhQSxZQUFiLFFBQWdDLGdDQUFTeUMsU0FBVCxFQUFvQmpHLElBQXBCLE1BQ25FMEYsTUFBTUEsR0FBRy9JLElBQUgsS0FBWW9KLFlBQW5CLElBQXFDdkMsZ0JBQWdCQSxhQUFhZ0MsSUFBYixDQUFrQixVQUFDeEgsQ0FBRCxVQUFPQSxFQUFFMEgsRUFBRixDQUFLL0ksSUFBTCxLQUFjb0osWUFBckIsRUFBbEIsQ0FEZSxDQUFoQyxFQUFoQixDQUF0QixDQUdBLElBQUlHLGNBQWM1RyxNQUFkLEtBQXlCLENBQTdCLEVBQWdDLENBQzlCO0FBQ0FzQyxVQUFFdkYsU0FBRixDQUFZa0YsR0FBWixDQUFnQixTQUFoQixFQUEyQnpDLFdBQVdULE1BQVgsRUFBbUJVLGVBQW5CLEVBQW9DbEIsQ0FBcEMsQ0FBM0IsRUFDQSxPQUNELENBQ0QsSUFBSWdJLHFCQUFKLEVBQTJCLENBQ3pCakUsRUFBRXZGLFNBQUYsQ0FBWWtGLEdBQVosQ0FBZ0IsU0FBaEIsRUFBMkIsRUFBM0IsRUFDRCxDQUNEMkUsY0FBY3ZJLE9BQWQsQ0FBc0IsVUFBQ3lJLElBQUQsRUFBVSxDQUM5QixJQUFJQSxLQUFLcEcsSUFBTCxLQUFjLHFCQUFsQixFQUF5QyxDQUN2QyxJQUFJb0csS0FBS3JCLElBQUwsSUFBYXFCLEtBQUtyQixJQUFMLENBQVUvRSxJQUFWLEtBQW1CLHFCQUFwQyxFQUEyRCxDQUN6RDRCLEVBQUV2RixTQUFGLENBQVlrRixHQUFaLENBQWdCNkUsS0FBS3JCLElBQUwsQ0FBVVcsRUFBVixDQUFhL0ksSUFBN0IsRUFBbUNtQyxXQUFXVCxNQUFYLEVBQW1CVSxlQUFuQixFQUFvQ3FILEtBQUtyQixJQUF6QyxDQUFuQyxFQUNELENBRkQsTUFFTyxJQUFJcUIsS0FBS3JCLElBQUwsSUFBYXFCLEtBQUtyQixJQUFMLENBQVVBLElBQTNCLEVBQWlDLENBQ3RDcUIsS0FBS3JCLElBQUwsQ0FBVUEsSUFBVixDQUFlcEgsT0FBZixDQUF1QixVQUFDMEksZUFBRCxFQUFxQixDQUMxQztBQUNBO0FBQ0Esa0JBQU1DLGdCQUFnQkQsZ0JBQWdCckcsSUFBaEIsS0FBeUIsd0JBQXpCLEdBQ3BCcUcsZ0JBQWdCbkksV0FESSxHQUVwQm1JLGVBRkYsQ0FJQSxJQUFJLENBQUNDLGFBQUwsRUFBb0IsQ0FDbEI7QUFDRCxlQUZELE1BRU8sSUFBSUEsY0FBY3RHLElBQWQsS0FBdUIscUJBQTNCLEVBQWtELENBQ3ZEc0csY0FBYzlDLFlBQWQsQ0FBMkI3RixPQUEzQixDQUFtQyxVQUFDSyxDQUFELFVBQ2pDcEMsd0JBQXdCb0MsRUFBRTBILEVBQTFCLEVBQThCLFVBQUNBLEVBQUQsVUFBUTlELEVBQUV2RixTQUFGLENBQVlrRixHQUFaLENBQ3BDbUUsR0FBRy9JLElBRGlDLEVBRXBDbUMsV0FBV1QsTUFBWCxFQUFtQlUsZUFBbkIsRUFBb0NxSCxJQUFwQyxFQUEwQ0UsYUFBMUMsRUFBeURELGVBQXpELENBRm9DLENBQVIsRUFBOUIsQ0FEaUMsRUFBbkMsRUFNRCxDQVBNLE1BT0EsQ0FDTHpFLEVBQUV2RixTQUFGLENBQVlrRixHQUFaLENBQ0UrRSxjQUFjWixFQUFkLENBQWlCL0ksSUFEbkIsRUFFRW1DLFdBQVdULE1BQVgsRUFBbUJVLGVBQW5CLEVBQW9Dc0gsZUFBcEMsQ0FGRixFQUdELENBQ0YsQ0FyQkQsRUFzQkQsQ0FDRixDQTNCRCxNQTJCTyxDQUNMO0FBQ0F6RSxZQUFFdkYsU0FBRixDQUFZa0YsR0FBWixDQUFnQixTQUFoQixFQUEyQnpDLFdBQVdULE1BQVgsRUFBbUJVLGVBQW5CLEVBQW9DcUgsSUFBcEMsQ0FBM0IsRUFDRCxDQUNGLENBaENELEVBaUNELENBQ0YsQ0F4S0QsRUEwS0EsT0FBT3hFLENBQVAsQ0FDRCxDQXpTRCxDLENBMlNBOzs7O3VHQUtBLFNBQVMrQixRQUFULENBQWtCUCxDQUFsQixFQUFxQm5GLE9BQXJCLEVBQThCLENBQzVCLE9BQU8sb0JBQU05QixpQkFBYzRFLGFBQWFxQyxDQUFiLEVBQWdCbkYsT0FBaEIsQ0FBZCxDQUFOLEVBQVAsQ0FDRCxDLENBR0Q7Ozs7OzttTkFPTyxTQUFTckMsdUJBQVQsQ0FBaUMySyxPQUFqQyxFQUEwQzlJLFFBQTFDLEVBQW9ELENBQ3pELFFBQVE4SSxRQUFRdkcsSUFBaEIsR0FDQSxLQUFLLFlBQUwsRUFBbUI7QUFDakJ2QyxlQUFTOEksT0FBVCxFQUNBLE1BRUYsS0FBSyxlQUFMLENBQ0VBLFFBQVFDLFVBQVIsQ0FBbUI3SSxPQUFuQixDQUEyQixhQUFLLENBQzlCLElBQUl5RixFQUFFcEQsSUFBRixLQUFXLDBCQUFYLElBQXlDb0QsRUFBRXBELElBQUYsS0FBVyxhQUF4RCxFQUF1RSxDQUNyRXZDLFNBQVMyRixFQUFFcUQsUUFBWCxFQUNBLE9BQ0QsQ0FDRDdLLHdCQUF3QndILEVBQUU3RSxLQUExQixFQUFpQ2QsUUFBakMsRUFDRCxDQU5ELEVBT0EsTUFFRixLQUFLLGNBQUwsQ0FDRThJLFFBQVFHLFFBQVIsQ0FBaUIvSSxPQUFqQixDQUF5QixVQUFDZ0osT0FBRCxFQUFhLENBQ3BDLElBQUlBLFdBQVcsSUFBZixFQUFxQixPQUNyQixJQUFJQSxRQUFRM0csSUFBUixLQUFpQiwwQkFBakIsSUFBK0MyRyxRQUFRM0csSUFBUixLQUFpQixhQUFwRSxFQUFtRixDQUNqRnZDLFNBQVNrSixRQUFRRixRQUFqQixFQUNBLE9BQ0QsQ0FDRDdLLHdCQUF3QitLLE9BQXhCLEVBQWlDbEosUUFBakMsRUFDRCxDQVBELEVBUUEsTUFFRixLQUFLLG1CQUFMLENBQ0VBLFNBQVM4SSxRQUFRSyxJQUFqQixFQUNBLE1BNUJGLENBOEJELEMsQ0FFRDs7eWpCQUdBLFNBQVM3RixZQUFULENBQXNCM0UsSUFBdEIsRUFBNEI2QixPQUE1QixFQUFxQyxLQUMzQitELFFBRDJCLEdBQ2EvRCxPQURiLENBQzNCK0QsUUFEMkIsQ0FDakJnQyxhQURpQixHQUNhL0YsT0FEYixDQUNqQitGLGFBRGlCLENBQ0Y2QyxVQURFLEdBQ2E1SSxPQURiLENBQ0Y0SSxVQURFLENBRW5DLE9BQU8sRUFDTDdFLGtCQURLLEVBRUxnQyw0QkFGSyxFQUdMNkMsc0JBSEssRUFJTHpLLFVBSkssRUFBUCxDQU1ELEMsQ0FHRDs7MHlCQUdBLFNBQVN3SCxjQUFULENBQXdCa0QsSUFBeEIsRUFBOEJqRixHQUE5QixFQUFtQyxDQUNqQyxJQUFJa0YsbUJBQVd6SCxNQUFYLEdBQW9CLENBQXhCLEVBQTJCLENBQ3pCO0FBQ0EsV0FBTyxJQUFJeUgsa0JBQUosQ0FBZUQsSUFBZixFQUFxQmpGLEdBQXJCLENBQVAsQ0FDRCxDQUhELE1BR08sQ0FDTDtBQUNBLFdBQU8sSUFBSWtGLGtCQUFKLENBQWUsRUFBRUQsVUFBRixFQUFRakYsUUFBUixFQUFmLENBQVAsQ0FDRCxDQUNGIiwiZmlsZSI6IkV4cG9ydE1hcC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5cbmltcG9ydCBkb2N0cmluZSBmcm9tICdkb2N0cmluZSc7XG5cbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmltcG9ydCB7IFNvdXJjZUNvZGUgfSBmcm9tICdlc2xpbnQnO1xuXG5pbXBvcnQgcGFyc2UgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9wYXJzZSc7XG5pbXBvcnQgcmVzb2x2ZSBmcm9tICdlc2xpbnQtbW9kdWxlLXV0aWxzL3Jlc29sdmUnO1xuaW1wb3J0IGlzSWdub3JlZCwgeyBoYXNWYWxpZEV4dGVuc2lvbiB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvaWdub3JlJztcblxuaW1wb3J0IHsgaGFzaE9iamVjdCB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvaGFzaCc7XG5pbXBvcnQgKiBhcyB1bmFtYmlndW91cyBmcm9tICdlc2xpbnQtbW9kdWxlLXV0aWxzL3VuYW1iaWd1b3VzJztcblxuaW1wb3J0IHsgdHNDb25maWdMb2FkZXIgfSBmcm9tICd0c2NvbmZpZy1wYXRocy9saWIvdHNjb25maWctbG9hZGVyJztcblxuaW1wb3J0IGluY2x1ZGVzIGZyb20gJ2FycmF5LWluY2x1ZGVzJztcblxubGV0IHBhcnNlQ29uZmlnRmlsZVRleHRUb0pzb247XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdlc2xpbnQtcGx1Z2luLWltcG9ydDpFeHBvcnRNYXAnKTtcblxuY29uc3QgZXhwb3J0Q2FjaGUgPSBuZXcgTWFwKCk7XG5jb25zdCB0c0NvbmZpZ0NhY2hlID0gbmV3IE1hcCgpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHBvcnRNYXAge1xuICBjb25zdHJ1Y3RvcihwYXRoKSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5ldyBNYXAoKTtcbiAgICAvLyB0b2RvOiByZXN0cnVjdHVyZSB0byBrZXkgb24gcGF0aCwgdmFsdWUgaXMgcmVzb2x2ZXIgKyBtYXAgb2YgbmFtZXNcbiAgICB0aGlzLnJlZXhwb3J0cyA9IG5ldyBNYXAoKTtcbiAgICAvKipcbiAgICAgKiBzdGFyLWV4cG9ydHNcbiAgICAgKiBAdHlwZSB7U2V0fSBvZiAoKSA9PiBFeHBvcnRNYXBcbiAgICAgKi9cbiAgICB0aGlzLmRlcGVuZGVuY2llcyA9IG5ldyBTZXQoKTtcbiAgICAvKipcbiAgICAgKiBkZXBlbmRlbmNpZXMgb2YgdGhpcyBtb2R1bGUgdGhhdCBhcmUgbm90IGV4cGxpY2l0bHkgcmUtZXhwb3J0ZWRcbiAgICAgKiBAdHlwZSB7TWFwfSBmcm9tIHBhdGggPSAoKSA9PiBFeHBvcnRNYXBcbiAgICAgKi9cbiAgICB0aGlzLmltcG9ydHMgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgfVxuXG4gIGdldCBoYXNEZWZhdWx0KCkgeyByZXR1cm4gdGhpcy5nZXQoJ2RlZmF1bHQnKSAhPSBudWxsOyB9IC8vIHN0cm9uZ2VyIHRoYW4gdGhpcy5oYXNcblxuICBnZXQgc2l6ZSgpIHtcbiAgICBsZXQgc2l6ZSA9IHRoaXMubmFtZXNwYWNlLnNpemUgKyB0aGlzLnJlZXhwb3J0cy5zaXplO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2goZGVwID0+IHtcbiAgICAgIGNvbnN0IGQgPSBkZXAoKTtcbiAgICAgIC8vIENKUyAvIGlnbm9yZWQgZGVwZW5kZW5jaWVzIHdvbid0IGV4aXN0ICgjNzE3KVxuICAgICAgaWYgKGQgPT0gbnVsbCkgcmV0dXJuO1xuICAgICAgc2l6ZSArPSBkLnNpemU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNpemU7XG4gIH1cblxuICAvKipcbiAgICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgY2hlY2sgZXhwbGljaXRseSByZS1leHBvcnRlZCBuYW1lcyBmb3IgZXhpc3RlbmNlXG4gICAqIGluIHRoZSBiYXNlIG5hbWVzcGFjZSwgYnV0IGl0IHdpbGwgZXhwYW5kIGFsbCBgZXhwb3J0ICogZnJvbSAnLi4uJ2AgZXhwb3J0c1xuICAgKiBpZiBub3QgZm91bmQgaW4gdGhlIGV4cGxpY2l0IG5hbWVzcGFjZS5cbiAgICogQHBhcmFtICB7c3RyaW5nfSAgbmFtZVxuICAgKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIGlmIGBuYW1lYCBpcyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS5cbiAgICovXG4gIGhhcyhuYW1lKSB7XG4gICAgaWYgKHRoaXMubmFtZXNwYWNlLmhhcyhuYW1lKSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKHRoaXMucmVleHBvcnRzLmhhcyhuYW1lKSkgcmV0dXJuIHRydWU7XG5cbiAgICAvLyBkZWZhdWx0IGV4cG9ydHMgbXVzdCBiZSBleHBsaWNpdGx5IHJlLWV4cG9ydGVkICgjMzI4KVxuICAgIGlmIChuYW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIGZvciAoY29uc3QgZGVwIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIGNvbnN0IGlubmVyTWFwID0gZGVwKCk7XG5cbiAgICAgICAgLy8gdG9kbzogcmVwb3J0IGFzIHVucmVzb2x2ZWQ/XG4gICAgICAgIGlmICghaW5uZXJNYXApIGNvbnRpbnVlO1xuXG4gICAgICAgIGlmIChpbm5lck1hcC5oYXMobmFtZSkpIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBlbnN1cmUgdGhhdCBpbXBvcnRlZCBuYW1lIGZ1bGx5IHJlc29sdmVzLlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IG5hbWVcbiAgICogQHJldHVybiB7eyBmb3VuZDogYm9vbGVhbiwgcGF0aDogRXhwb3J0TWFwW10gfX1cbiAgICovXG4gIGhhc0RlZXAobmFtZSkge1xuICAgIGlmICh0aGlzLm5hbWVzcGFjZS5oYXMobmFtZSkpIHJldHVybiB7IGZvdW5kOiB0cnVlLCBwYXRoOiBbdGhpc10gfTtcblxuICAgIGlmICh0aGlzLnJlZXhwb3J0cy5oYXMobmFtZSkpIHtcbiAgICAgIGNvbnN0IHJlZXhwb3J0cyA9IHRoaXMucmVleHBvcnRzLmdldChuYW1lKTtcbiAgICAgIGNvbnN0IGltcG9ydGVkID0gcmVleHBvcnRzLmdldEltcG9ydCgpO1xuXG4gICAgICAvLyBpZiBpbXBvcnQgaXMgaWdub3JlZCwgcmV0dXJuIGV4cGxpY2l0ICdudWxsJ1xuICAgICAgaWYgKGltcG9ydGVkID09IG51bGwpIHJldHVybiB7IGZvdW5kOiB0cnVlLCBwYXRoOiBbdGhpc10gfTtcblxuICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzLCBvbmx5IGlmIG5hbWUgbWF0Y2hlc1xuICAgICAgaWYgKGltcG9ydGVkLnBhdGggPT09IHRoaXMucGF0aCAmJiByZWV4cG9ydHMubG9jYWwgPT09IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHsgZm91bmQ6IGZhbHNlLCBwYXRoOiBbdGhpc10gfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVlcCA9IGltcG9ydGVkLmhhc0RlZXAocmVleHBvcnRzLmxvY2FsKTtcbiAgICAgIGRlZXAucGF0aC51bnNoaWZ0KHRoaXMpO1xuXG4gICAgICByZXR1cm4gZGVlcDtcbiAgICB9XG5cblxuICAgIC8vIGRlZmF1bHQgZXhwb3J0cyBtdXN0IGJlIGV4cGxpY2l0bHkgcmUtZXhwb3J0ZWQgKCMzMjgpXG4gICAgaWYgKG5hbWUgIT09ICdkZWZhdWx0Jykge1xuICAgICAgZm9yIChjb25zdCBkZXAgb2YgdGhpcy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgY29uc3QgaW5uZXJNYXAgPSBkZXAoKTtcbiAgICAgICAgaWYgKGlubmVyTWFwID09IG51bGwpIHJldHVybiB7IGZvdW5kOiB0cnVlLCBwYXRoOiBbdGhpc10gfTtcbiAgICAgICAgLy8gdG9kbzogcmVwb3J0IGFzIHVucmVzb2x2ZWQ/XG4gICAgICAgIGlmICghaW5uZXJNYXApIGNvbnRpbnVlO1xuXG4gICAgICAgIC8vIHNhZmVndWFyZCBhZ2FpbnN0IGN5Y2xlc1xuICAgICAgICBpZiAoaW5uZXJNYXAucGF0aCA9PT0gdGhpcy5wYXRoKSBjb250aW51ZTtcblxuICAgICAgICBjb25zdCBpbm5lclZhbHVlID0gaW5uZXJNYXAuaGFzRGVlcChuYW1lKTtcbiAgICAgICAgaWYgKGlubmVyVmFsdWUuZm91bmQpIHtcbiAgICAgICAgICBpbm5lclZhbHVlLnBhdGgudW5zaGlmdCh0aGlzKTtcbiAgICAgICAgICByZXR1cm4gaW5uZXJWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGZvdW5kOiBmYWxzZSwgcGF0aDogW3RoaXNdIH07XG4gIH1cblxuICBnZXQobmFtZSkge1xuICAgIGlmICh0aGlzLm5hbWVzcGFjZS5oYXMobmFtZSkpIHJldHVybiB0aGlzLm5hbWVzcGFjZS5nZXQobmFtZSk7XG5cbiAgICBpZiAodGhpcy5yZWV4cG9ydHMuaGFzKG5hbWUpKSB7XG4gICAgICBjb25zdCByZWV4cG9ydHMgPSB0aGlzLnJlZXhwb3J0cy5nZXQobmFtZSk7XG4gICAgICBjb25zdCBpbXBvcnRlZCA9IHJlZXhwb3J0cy5nZXRJbXBvcnQoKTtcblxuICAgICAgLy8gaWYgaW1wb3J0IGlzIGlnbm9yZWQsIHJldHVybiBleHBsaWNpdCAnbnVsbCdcbiAgICAgIGlmIChpbXBvcnRlZCA9PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzLCBvbmx5IGlmIG5hbWUgbWF0Y2hlc1xuICAgICAgaWYgKGltcG9ydGVkLnBhdGggPT09IHRoaXMucGF0aCAmJiByZWV4cG9ydHMubG9jYWwgPT09IG5hbWUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIHJldHVybiBpbXBvcnRlZC5nZXQocmVleHBvcnRzLmxvY2FsKTtcbiAgICB9XG5cbiAgICAvLyBkZWZhdWx0IGV4cG9ydHMgbXVzdCBiZSBleHBsaWNpdGx5IHJlLWV4cG9ydGVkICgjMzI4KVxuICAgIGlmIChuYW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIGZvciAoY29uc3QgZGVwIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIGNvbnN0IGlubmVyTWFwID0gZGVwKCk7XG4gICAgICAgIC8vIHRvZG86IHJlcG9ydCBhcyB1bnJlc29sdmVkP1xuICAgICAgICBpZiAoIWlubmVyTWFwKSBjb250aW51ZTtcblxuICAgICAgICAvLyBzYWZlZ3VhcmQgYWdhaW5zdCBjeWNsZXNcbiAgICAgICAgaWYgKGlubmVyTWFwLnBhdGggPT09IHRoaXMucGF0aCkgY29udGludWU7XG5cbiAgICAgICAgY29uc3QgaW5uZXJWYWx1ZSA9IGlubmVyTWFwLmdldChuYW1lKTtcbiAgICAgICAgaWYgKGlubmVyVmFsdWUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGlubmVyVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgICB0aGlzLm5hbWVzcGFjZS5mb3JFYWNoKCh2LCBuKSA9PlxuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB2LCBuLCB0aGlzKSk7XG5cbiAgICB0aGlzLnJlZXhwb3J0cy5mb3JFYWNoKChyZWV4cG9ydHMsIG5hbWUpID0+IHtcbiAgICAgIGNvbnN0IHJlZXhwb3J0ZWQgPSByZWV4cG9ydHMuZ2V0SW1wb3J0KCk7XG4gICAgICAvLyBjYW4ndCBsb29rIHVwIG1ldGEgZm9yIGlnbm9yZWQgcmUtZXhwb3J0cyAoIzM0OClcbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgcmVleHBvcnRlZCAmJiByZWV4cG9ydGVkLmdldChyZWV4cG9ydHMubG9jYWwpLCBuYW1lLCB0aGlzKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2goZGVwID0+IHtcbiAgICAgIGNvbnN0IGQgPSBkZXAoKTtcbiAgICAgIC8vIENKUyAvIGlnbm9yZWQgZGVwZW5kZW5jaWVzIHdvbid0IGV4aXN0ICgjNzE3KVxuICAgICAgaWYgKGQgPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICBkLmZvckVhY2goKHYsIG4pID0+XG4gICAgICAgIG4gIT09ICdkZWZhdWx0JyAmJiBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHYsIG4sIHRoaXMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHRvZG86IGtleXMsIHZhbHVlcywgZW50cmllcz9cblxuICByZXBvcnRFcnJvcnMoY29udGV4dCwgZGVjbGFyYXRpb24pIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBub2RlOiBkZWNsYXJhdGlvbi5zb3VyY2UsXG4gICAgICBtZXNzYWdlOiBgUGFyc2UgZXJyb3JzIGluIGltcG9ydGVkIG1vZHVsZSAnJHtkZWNsYXJhdGlvbi5zb3VyY2UudmFsdWV9JzogYCArXG4gICAgICAgICAgICAgICAgICBgJHt0aGlzLmVycm9yc1xuICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gYCR7ZS5tZXNzYWdlfSAoJHtlLmxpbmVOdW1iZXJ9OiR7ZS5jb2x1bW59KWApXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpfWAsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBwYXJzZSBkb2NzIGZyb20gdGhlIGZpcnN0IG5vZGUgdGhhdCBoYXMgbGVhZGluZyBjb21tZW50c1xuICovXG5mdW5jdGlvbiBjYXB0dXJlRG9jKHNvdXJjZSwgZG9jU3R5bGVQYXJzZXJzLCAuLi5ub2Rlcykge1xuICBjb25zdCBtZXRhZGF0YSA9IHt9O1xuXG4gIC8vICdzb21lJyBzaG9ydC1jaXJjdWl0cyBvbiBmaXJzdCAndHJ1ZSdcbiAgbm9kZXMuc29tZShuID0+IHtcbiAgICB0cnkge1xuXG4gICAgICBsZXQgbGVhZGluZ0NvbW1lbnRzO1xuXG4gICAgICAvLyBuLmxlYWRpbmdDb21tZW50cyBpcyBsZWdhY3kgYGF0dGFjaENvbW1lbnRzYCBiZWhhdmlvclxuICAgICAgaWYgKCdsZWFkaW5nQ29tbWVudHMnIGluIG4pIHtcbiAgICAgICAgbGVhZGluZ0NvbW1lbnRzID0gbi5sZWFkaW5nQ29tbWVudHM7XG4gICAgICB9IGVsc2UgaWYgKG4ucmFuZ2UpIHtcbiAgICAgICAgbGVhZGluZ0NvbW1lbnRzID0gc291cmNlLmdldENvbW1lbnRzQmVmb3JlKG4pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWxlYWRpbmdDb21tZW50cyB8fCBsZWFkaW5nQ29tbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBkb2NTdHlsZVBhcnNlcnMpIHtcbiAgICAgICAgY29uc3QgZG9jID0gZG9jU3R5bGVQYXJzZXJzW25hbWVdKGxlYWRpbmdDb21tZW50cyk7XG4gICAgICAgIGlmIChkb2MpIHtcbiAgICAgICAgICBtZXRhZGF0YS5kb2MgPSBkb2M7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59XG5cbmNvbnN0IGF2YWlsYWJsZURvY1N0eWxlUGFyc2VycyA9IHtcbiAganNkb2M6IGNhcHR1cmVKc0RvYyxcbiAgdG9tZG9jOiBjYXB0dXJlVG9tRG9jLFxufTtcblxuLyoqXG4gKiBwYXJzZSBKU0RvYyBmcm9tIGxlYWRpbmcgY29tbWVudHNcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNvbW1lbnRzXG4gKiBAcmV0dXJuIHt7IGRvYzogb2JqZWN0IH19XG4gKi9cbmZ1bmN0aW9uIGNhcHR1cmVKc0RvYyhjb21tZW50cykge1xuICBsZXQgZG9jO1xuXG4gIC8vIGNhcHR1cmUgWFNEb2NcbiAgY29tbWVudHMuZm9yRWFjaChjb21tZW50ID0+IHtcbiAgICAvLyBza2lwIG5vbi1ibG9jayBjb21tZW50c1xuICAgIGlmIChjb21tZW50LnR5cGUgIT09ICdCbG9jaycpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgZG9jID0gZG9jdHJpbmUucGFyc2UoY29tbWVudC52YWx1ZSwgeyB1bndyYXA6IHRydWUgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvKiBkb24ndCBjYXJlLCBmb3Igbm93PyBtYXliZSBhZGQgdG8gYGVycm9ycz9gICovXG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZG9jO1xufVxuXG4vKipcbiAgKiBwYXJzZSBUb21Eb2Mgc2VjdGlvbiBmcm9tIGNvbW1lbnRzXG4gICovXG5mdW5jdGlvbiBjYXB0dXJlVG9tRG9jKGNvbW1lbnRzKSB7XG4gIC8vIGNvbGxlY3QgbGluZXMgdXAgdG8gZmlyc3QgcGFyYWdyYXBoIGJyZWFrXG4gIGNvbnN0IGxpbmVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29tbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjb21tZW50ID0gY29tbWVudHNbaV07XG4gICAgaWYgKGNvbW1lbnQudmFsdWUubWF0Y2goL15cXHMqJC8pKSBicmVhaztcbiAgICBsaW5lcy5wdXNoKGNvbW1lbnQudmFsdWUudHJpbSgpKTtcbiAgfVxuXG4gIC8vIHJldHVybiBkb2N0cmluZS1saWtlIG9iamVjdFxuICBjb25zdCBzdGF0dXNNYXRjaCA9IGxpbmVzLmpvaW4oJyAnKS5tYXRjaCgvXihQdWJsaWN8SW50ZXJuYWx8RGVwcmVjYXRlZCk6XFxzKiguKykvKTtcbiAgaWYgKHN0YXR1c01hdGNoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBzdGF0dXNNYXRjaFsyXSxcbiAgICAgIHRhZ3M6IFt7XG4gICAgICAgIHRpdGxlOiBzdGF0dXNNYXRjaFsxXS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICBkZXNjcmlwdGlvbjogc3RhdHVzTWF0Y2hbMl0sXG4gICAgICB9XSxcbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IHN1cHBvcnRlZEltcG9ydFR5cGVzID0gbmV3IFNldChbJ0ltcG9ydERlZmF1bHRTcGVjaWZpZXInLCAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJ10pO1xuXG5FeHBvcnRNYXAuZ2V0ID0gZnVuY3Rpb24gKHNvdXJjZSwgY29udGV4dCkge1xuICBjb25zdCBwYXRoID0gcmVzb2x2ZShzb3VyY2UsIGNvbnRleHQpO1xuICBpZiAocGF0aCA9PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gRXhwb3J0TWFwLmZvcihjaGlsZENvbnRleHQocGF0aCwgY29udGV4dCkpO1xufTtcblxuRXhwb3J0TWFwLmZvciA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gIGNvbnN0IHsgcGF0aCB9ID0gY29udGV4dDtcblxuICBjb25zdCBjYWNoZUtleSA9IGhhc2hPYmplY3QoY29udGV4dCkuZGlnZXN0KCdoZXgnKTtcbiAgbGV0IGV4cG9ydE1hcCA9IGV4cG9ydENhY2hlLmdldChjYWNoZUtleSk7XG5cbiAgLy8gcmV0dXJuIGNhY2hlZCBpZ25vcmVcbiAgaWYgKGV4cG9ydE1hcCA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3Qgc3RhdHMgPSBmcy5zdGF0U3luYyhwYXRoKTtcbiAgaWYgKGV4cG9ydE1hcCAhPSBudWxsKSB7XG4gICAgLy8gZGF0ZSBlcXVhbGl0eSBjaGVja1xuICAgIGlmIChleHBvcnRNYXAubXRpbWUgLSBzdGF0cy5tdGltZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIGV4cG9ydE1hcDtcbiAgICB9XG4gICAgLy8gZnV0dXJlOiBjaGVjayBjb250ZW50IGVxdWFsaXR5P1xuICB9XG5cbiAgLy8gY2hlY2sgdmFsaWQgZXh0ZW5zaW9ucyBmaXJzdFxuICBpZiAoIWhhc1ZhbGlkRXh0ZW5zaW9uKHBhdGgsIGNvbnRleHQpKSB7XG4gICAgZXhwb3J0Q2FjaGUuc2V0KGNhY2hlS2V5LCBudWxsKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIGNoZWNrIGZvciBhbmQgY2FjaGUgaWdub3JlXG4gIGlmIChpc0lnbm9yZWQocGF0aCwgY29udGV4dCkpIHtcbiAgICBsb2coJ2lnbm9yZWQgcGF0aCBkdWUgdG8gaWdub3JlIHNldHRpbmdzOicsIHBhdGgpO1xuICAgIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgbnVsbCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHBhdGgsIHsgZW5jb2Rpbmc6ICd1dGY4JyB9KTtcblxuICAvLyBjaGVjayBmb3IgYW5kIGNhY2hlIHVuYW1iaWd1b3VzIG1vZHVsZXNcbiAgaWYgKCF1bmFtYmlndW91cy50ZXN0KGNvbnRlbnQpKSB7XG4gICAgbG9nKCdpZ25vcmVkIHBhdGggZHVlIHRvIHVuYW1iaWd1b3VzIHJlZ2V4OicsIHBhdGgpO1xuICAgIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgbnVsbCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBsb2coJ2NhY2hlIG1pc3MnLCBjYWNoZUtleSwgJ2ZvciBwYXRoJywgcGF0aCk7XG4gIGV4cG9ydE1hcCA9IEV4cG9ydE1hcC5wYXJzZShwYXRoLCBjb250ZW50LCBjb250ZXh0KTtcblxuICAvLyBhbWJpZ3VvdXMgbW9kdWxlcyByZXR1cm4gbnVsbFxuICBpZiAoZXhwb3J0TWFwID09IG51bGwpIHJldHVybiBudWxsO1xuXG4gIGV4cG9ydE1hcC5tdGltZSA9IHN0YXRzLm10aW1lO1xuXG4gIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgZXhwb3J0TWFwKTtcbiAgcmV0dXJuIGV4cG9ydE1hcDtcbn07XG5cblxuRXhwb3J0TWFwLnBhcnNlID0gZnVuY3Rpb24gKHBhdGgsIGNvbnRlbnQsIGNvbnRleHQpIHtcbiAgY29uc3QgbSA9IG5ldyBFeHBvcnRNYXAocGF0aCk7XG5cbiAgbGV0IGFzdDtcbiAgdHJ5IHtcbiAgICBhc3QgPSBwYXJzZShwYXRoLCBjb250ZW50LCBjb250ZXh0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nKCdwYXJzZSBlcnJvcjonLCBwYXRoLCBlcnIpO1xuICAgIG0uZXJyb3JzLnB1c2goZXJyKTtcbiAgICByZXR1cm4gbTsgLy8gY2FuJ3QgY29udGludWVcbiAgfVxuXG4gIGlmICghdW5hbWJpZ3VvdXMuaXNNb2R1bGUoYXN0KSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgZG9jc3R5bGUgPSAoY29udGV4dC5zZXR0aW5ncyAmJiBjb250ZXh0LnNldHRpbmdzWydpbXBvcnQvZG9jc3R5bGUnXSkgfHwgWydqc2RvYyddO1xuICBjb25zdCBkb2NTdHlsZVBhcnNlcnMgPSB7fTtcbiAgZG9jc3R5bGUuZm9yRWFjaChzdHlsZSA9PiB7XG4gICAgZG9jU3R5bGVQYXJzZXJzW3N0eWxlXSA9IGF2YWlsYWJsZURvY1N0eWxlUGFyc2Vyc1tzdHlsZV07XG4gIH0pO1xuXG4gIC8vIGF0dGVtcHQgdG8gY29sbGVjdCBtb2R1bGUgZG9jXG4gIGlmIChhc3QuY29tbWVudHMpIHtcbiAgICBhc3QuY29tbWVudHMuc29tZShjID0+IHtcbiAgICAgIGlmIChjLnR5cGUgIT09ICdCbG9jaycpIHJldHVybiBmYWxzZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRvYyA9IGRvY3RyaW5lLnBhcnNlKGMudmFsdWUsIHsgdW53cmFwOiB0cnVlIH0pO1xuICAgICAgICBpZiAoZG9jLnRhZ3Muc29tZSh0ID0+IHQudGl0bGUgPT09ICdtb2R1bGUnKSkge1xuICAgICAgICAgIG0uZG9jID0gZG9jO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHsgLyogaWdub3JlICovIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IG5hbWVzcGFjZXMgPSBuZXcgTWFwKCk7XG5cbiAgZnVuY3Rpb24gcmVtb3RlUGF0aCh2YWx1ZSkge1xuICAgIHJldHVybiByZXNvbHZlLnJlbGF0aXZlKHZhbHVlLCBwYXRoLCBjb250ZXh0LnNldHRpbmdzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc29sdmVJbXBvcnQodmFsdWUpIHtcbiAgICBjb25zdCBycCA9IHJlbW90ZVBhdGgodmFsdWUpO1xuICAgIGlmIChycCA9PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gRXhwb3J0TWFwLmZvcihjaGlsZENvbnRleHQocnAsIGNvbnRleHQpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE5hbWVzcGFjZShpZGVudGlmaWVyKSB7XG4gICAgaWYgKCFuYW1lc3BhY2VzLmhhcyhpZGVudGlmaWVyLm5hbWUpKSByZXR1cm47XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVJbXBvcnQobmFtZXNwYWNlcy5nZXQoaWRlbnRpZmllci5uYW1lKSk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZE5hbWVzcGFjZShvYmplY3QsIGlkZW50aWZpZXIpIHtcbiAgICBjb25zdCBuc2ZuID0gZ2V0TmFtZXNwYWNlKGlkZW50aWZpZXIpO1xuICAgIGlmIChuc2ZuKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnbmFtZXNwYWNlJywgeyBnZXQ6IG5zZm4gfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhcHR1cmVEZXBlbmRlbmN5KHsgc291cmNlIH0sIGlzT25seUltcG9ydGluZ1R5cGVzLCBpbXBvcnRlZFNwZWNpZmllcnMgPSBuZXcgU2V0KCkpIHtcbiAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgcCA9IHJlbW90ZVBhdGgoc291cmNlLnZhbHVlKTtcbiAgICBpZiAocCA9PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGRlY2xhcmF0aW9uTWV0YWRhdGEgPSB7XG4gICAgICAvLyBjYXB0dXJpbmcgYWN0dWFsIG5vZGUgcmVmZXJlbmNlIGhvbGRzIGZ1bGwgQVNUIGluIG1lbW9yeSFcbiAgICAgIHNvdXJjZTogeyB2YWx1ZTogc291cmNlLnZhbHVlLCBsb2M6IHNvdXJjZS5sb2MgfSxcbiAgICAgIGlzT25seUltcG9ydGluZ1R5cGVzLFxuICAgICAgaW1wb3J0ZWRTcGVjaWZpZXJzLFxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZyA9IG0uaW1wb3J0cy5nZXQocCk7XG4gICAgaWYgKGV4aXN0aW5nICE9IG51bGwpIHtcbiAgICAgIGV4aXN0aW5nLmRlY2xhcmF0aW9ucy5hZGQoZGVjbGFyYXRpb25NZXRhZGF0YSk7XG4gICAgICByZXR1cm4gZXhpc3RpbmcuZ2V0dGVyO1xuICAgIH1cblxuICAgIGNvbnN0IGdldHRlciA9IHRodW5rRm9yKHAsIGNvbnRleHQpO1xuICAgIG0uaW1wb3J0cy5zZXQocCwgeyBnZXR0ZXIsIGRlY2xhcmF0aW9uczogbmV3IFNldChbZGVjbGFyYXRpb25NZXRhZGF0YV0pIH0pO1xuICAgIHJldHVybiBnZXR0ZXI7XG4gIH1cblxuICBjb25zdCBzb3VyY2UgPSBtYWtlU291cmNlQ29kZShjb250ZW50LCBhc3QpO1xuXG4gIGZ1bmN0aW9uIHJlYWRUc0NvbmZpZygpIHtcbiAgICBjb25zdCB0c0NvbmZpZ0luZm8gPSB0c0NvbmZpZ0xvYWRlcih7XG4gICAgICBjd2Q6XG4gICAgICAgIChjb250ZXh0LnBhcnNlck9wdGlvbnMgJiYgY29udGV4dC5wYXJzZXJPcHRpb25zLnRzY29uZmlnUm9vdERpcikgfHxcbiAgICAgICAgcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGdldEVudjogKGtleSkgPT4gcHJvY2Vzcy5lbnZba2V5XSxcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgaWYgKHRzQ29uZmlnSW5mby50c0NvbmZpZ1BhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBqc29uVGV4dCA9IGZzLnJlYWRGaWxlU3luYyh0c0NvbmZpZ0luZm8udHNDb25maWdQYXRoKS50b1N0cmluZygpO1xuICAgICAgICBpZiAoIXBhcnNlQ29uZmlnRmlsZVRleHRUb0pzb24pIHtcbiAgICAgICAgICAvLyB0aGlzIGlzIGJlY2F1c2UgcHJvamVjdHMgbm90IHVzaW5nIFR5cGVTY3JpcHQgd29uJ3QgaGF2ZSB0eXBlc2NyaXB0IGluc3RhbGxlZFxuICAgICAgICAgICh7IHBhcnNlQ29uZmlnRmlsZVRleHRUb0pzb24gfSA9IHJlcXVpcmUoJ3R5cGVzY3JpcHQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlQ29uZmlnRmlsZVRleHRUb0pzb24odHNDb25maWdJbmZvLnRzQ29uZmlnUGF0aCwganNvblRleHQpLmNvbmZpZztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBDYXRjaCBhbnkgZXJyb3JzXG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBpc0VzTW9kdWxlSW50ZXJvcCgpIHtcbiAgICBjb25zdCBjYWNoZUtleSA9IGhhc2hPYmplY3Qoe1xuICAgICAgdHNjb25maWdSb290RGlyOiBjb250ZXh0LnBhcnNlck9wdGlvbnMgJiYgY29udGV4dC5wYXJzZXJPcHRpb25zLnRzY29uZmlnUm9vdERpcixcbiAgICB9KS5kaWdlc3QoJ2hleCcpO1xuICAgIGxldCB0c0NvbmZpZyA9IHRzQ29uZmlnQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICBpZiAodHlwZW9mIHRzQ29uZmlnID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdHNDb25maWcgPSByZWFkVHNDb25maWcoKTtcbiAgICAgIHRzQ29uZmlnQ2FjaGUuc2V0KGNhY2hlS2V5LCB0c0NvbmZpZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRzQ29uZmlnICYmIHRzQ29uZmlnLmNvbXBpbGVyT3B0aW9ucyA/IHRzQ29uZmlnLmNvbXBpbGVyT3B0aW9ucy5lc01vZHVsZUludGVyb3AgOiBmYWxzZTtcbiAgfVxuXG4gIGFzdC5ib2R5LmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICBpZiAobi50eXBlID09PSAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJykge1xuICAgICAgY29uc3QgZXhwb3J0TWV0YSA9IGNhcHR1cmVEb2Moc291cmNlLCBkb2NTdHlsZVBhcnNlcnMsIG4pO1xuICAgICAgaWYgKG4uZGVjbGFyYXRpb24udHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgIGFkZE5hbWVzcGFjZShleHBvcnRNZXRhLCBuLmRlY2xhcmF0aW9uKTtcbiAgICAgIH1cbiAgICAgIG0ubmFtZXNwYWNlLnNldCgnZGVmYXVsdCcsIGV4cG9ydE1ldGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnRBbGxEZWNsYXJhdGlvbicpIHtcbiAgICAgIGNvbnN0IGdldHRlciA9IGNhcHR1cmVEZXBlbmRlbmN5KG4sIG4uZXhwb3J0S2luZCA9PT0gJ3R5cGUnKTtcbiAgICAgIGlmIChnZXR0ZXIpIG0uZGVwZW5kZW5jaWVzLmFkZChnZXR0ZXIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNhcHR1cmUgbmFtZXNwYWNlcyBpbiBjYXNlIG9mIGxhdGVyIGV4cG9ydFxuICAgIGlmIChuLnR5cGUgPT09ICdJbXBvcnREZWNsYXJhdGlvbicpIHtcbiAgICAgIC8vIGltcG9ydCB0eXBlIHsgRm9vIH0gKFRTIGFuZCBGbG93KVxuICAgICAgY29uc3QgZGVjbGFyYXRpb25Jc1R5cGUgPSBuLmltcG9ydEtpbmQgPT09ICd0eXBlJztcbiAgICAgIC8vIGltcG9ydCAnLi9mb28nIG9yIGltcG9ydCB7fSBmcm9tICcuL2ZvbycgKGJvdGggMCBzcGVjaWZpZXJzKSBpcyBhIHNpZGUgZWZmZWN0IGFuZFxuICAgICAgLy8gc2hvdWxkbid0IGJlIGNvbnNpZGVyZWQgdG8gYmUganVzdCBpbXBvcnRpbmcgdHlwZXNcbiAgICAgIGxldCBzcGVjaWZpZXJzT25seUltcG9ydGluZ1R5cGVzID0gbi5zcGVjaWZpZXJzLmxlbmd0aDtcbiAgICAgIGNvbnN0IGltcG9ydGVkU3BlY2lmaWVycyA9IG5ldyBTZXQoKTtcbiAgICAgIG4uc3BlY2lmaWVycy5mb3JFYWNoKHNwZWNpZmllciA9PiB7XG4gICAgICAgIGlmIChzdXBwb3J0ZWRJbXBvcnRUeXBlcy5oYXMoc3BlY2lmaWVyLnR5cGUpKSB7XG4gICAgICAgICAgaW1wb3J0ZWRTcGVjaWZpZXJzLmFkZChzcGVjaWZpZXIudHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNwZWNpZmllci50eXBlID09PSAnSW1wb3J0U3BlY2lmaWVyJykge1xuICAgICAgICAgIGltcG9ydGVkU3BlY2lmaWVycy5hZGQoc3BlY2lmaWVyLmltcG9ydGVkLm5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW1wb3J0IHsgdHlwZSBGb28gfSAoRmxvdylcbiAgICAgICAgc3BlY2lmaWVyc09ubHlJbXBvcnRpbmdUeXBlcyA9XG4gICAgICAgICAgc3BlY2lmaWVyc09ubHlJbXBvcnRpbmdUeXBlcyAmJiBzcGVjaWZpZXIuaW1wb3J0S2luZCA9PT0gJ3R5cGUnO1xuICAgICAgfSk7XG4gICAgICBjYXB0dXJlRGVwZW5kZW5jeShuLCBkZWNsYXJhdGlvbklzVHlwZSB8fCBzcGVjaWZpZXJzT25seUltcG9ydGluZ1R5cGVzLCBpbXBvcnRlZFNwZWNpZmllcnMpO1xuXG4gICAgICBjb25zdCBucyA9IG4uc3BlY2lmaWVycy5maW5kKHMgPT4gcy50eXBlID09PSAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJyk7XG4gICAgICBpZiAobnMpIHtcbiAgICAgICAgbmFtZXNwYWNlcy5zZXQobnMubG9jYWwubmFtZSwgbi5zb3VyY2UudmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJykge1xuICAgICAgLy8gY2FwdHVyZSBkZWNsYXJhdGlvblxuICAgICAgaWYgKG4uZGVjbGFyYXRpb24gIT0gbnVsbCkge1xuICAgICAgICBzd2l0Y2ggKG4uZGVjbGFyYXRpb24udHlwZSkge1xuICAgICAgICBjYXNlICdGdW5jdGlvbkRlY2xhcmF0aW9uJzpcbiAgICAgICAgY2FzZSAnQ2xhc3NEZWNsYXJhdGlvbic6XG4gICAgICAgIGNhc2UgJ1R5cGVBbGlhcyc6IC8vIGZsb3d0eXBlIHdpdGggYmFiZWwtZXNsaW50IHBhcnNlclxuICAgICAgICBjYXNlICdJbnRlcmZhY2VEZWNsYXJhdGlvbic6XG4gICAgICAgIGNhc2UgJ0RlY2xhcmVGdW5jdGlvbic6XG4gICAgICAgIGNhc2UgJ1RTRGVjbGFyZUZ1bmN0aW9uJzpcbiAgICAgICAgY2FzZSAnVFNFbnVtRGVjbGFyYXRpb24nOlxuICAgICAgICBjYXNlICdUU1R5cGVBbGlhc0RlY2xhcmF0aW9uJzpcbiAgICAgICAgY2FzZSAnVFNJbnRlcmZhY2VEZWNsYXJhdGlvbic6XG4gICAgICAgIGNhc2UgJ1RTQWJzdHJhY3RDbGFzc0RlY2xhcmF0aW9uJzpcbiAgICAgICAgY2FzZSAnVFNNb2R1bGVEZWNsYXJhdGlvbic6XG4gICAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KG4uZGVjbGFyYXRpb24uaWQubmFtZSwgY2FwdHVyZURvYyhzb3VyY2UsIGRvY1N0eWxlUGFyc2VycywgbikpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdWYXJpYWJsZURlY2xhcmF0aW9uJzpcbiAgICAgICAgICBuLmRlY2xhcmF0aW9uLmRlY2xhcmF0aW9ucy5mb3JFYWNoKChkKSA9PlxuICAgICAgICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUoZC5pZCxcbiAgICAgICAgICAgICAgaWQgPT4gbS5uYW1lc3BhY2Uuc2V0KGlkLm5hbWUsIGNhcHR1cmVEb2Moc291cmNlLCBkb2NTdHlsZVBhcnNlcnMsIGQsIG4pKSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5zb3VyY2UgPSBuLnNvdXJjZSAmJiBuLnNvdXJjZS52YWx1ZTtcbiAgICAgIG4uc3BlY2lmaWVycy5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgIGNvbnN0IGV4cG9ydE1ldGEgPSB7fTtcbiAgICAgICAgbGV0IGxvY2FsO1xuXG4gICAgICAgIHN3aXRjaCAocy50eXBlKSB7XG4gICAgICAgIGNhc2UgJ0V4cG9ydERlZmF1bHRTcGVjaWZpZXInOlxuICAgICAgICAgIGlmICghbi5zb3VyY2UpIHJldHVybjtcbiAgICAgICAgICBsb2NhbCA9ICdkZWZhdWx0JztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyJzpcbiAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQocy5leHBvcnRlZC5uYW1lLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0TWV0YSwgJ25hbWVzcGFjZScsIHtcbiAgICAgICAgICAgIGdldCgpIHsgcmV0dXJuIHJlc29sdmVJbXBvcnQobnNvdXJjZSk7IH0sXG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnRXhwb3J0U3BlY2lmaWVyJzpcbiAgICAgICAgICBpZiAoIW4uc291cmNlKSB7XG4gICAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQocy5leHBvcnRlZC5uYW1lLCBhZGROYW1lc3BhY2UoZXhwb3J0TWV0YSwgcy5sb2NhbCkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlbHNlIGZhbGxzIHRocm91Z2hcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBsb2NhbCA9IHMubG9jYWwubmFtZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvZG86IEpTRG9jXG4gICAgICAgIG0ucmVleHBvcnRzLnNldChzLmV4cG9ydGVkLm5hbWUsIHsgbG9jYWwsIGdldEltcG9ydDogKCkgPT4gcmVzb2x2ZUltcG9ydChuc291cmNlKSB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRXNNb2R1bGVJbnRlcm9wVHJ1ZSA9IGlzRXNNb2R1bGVJbnRlcm9wKCk7XG5cbiAgICBjb25zdCBleHBvcnRzID0gWydUU0V4cG9ydEFzc2lnbm1lbnQnXTtcbiAgICBpZiAoaXNFc01vZHVsZUludGVyb3BUcnVlKSB7XG4gICAgICBleHBvcnRzLnB1c2goJ1RTTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb24nKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGRvZXNuJ3QgZGVjbGFyZSBhbnl0aGluZywgYnV0IGNoYW5nZXMgd2hhdCdzIGJlaW5nIGV4cG9ydGVkLlxuICAgIGlmIChpbmNsdWRlcyhleHBvcnRzLCBuLnR5cGUpKSB7XG4gICAgICBjb25zdCBleHBvcnRlZE5hbWUgPSBuLnR5cGUgPT09ICdUU05hbWVzcGFjZUV4cG9ydERlY2xhcmF0aW9uJ1xuICAgICAgICA/IG4uaWQubmFtZVxuICAgICAgICA6IChuLmV4cHJlc3Npb24gJiYgbi5leHByZXNzaW9uLm5hbWUgfHwgKG4uZXhwcmVzc2lvbi5pZCAmJiBuLmV4cHJlc3Npb24uaWQubmFtZSkgfHwgbnVsbCk7XG4gICAgICBjb25zdCBkZWNsVHlwZXMgPSBbXG4gICAgICAgICdWYXJpYWJsZURlY2xhcmF0aW9uJyxcbiAgICAgICAgJ0NsYXNzRGVjbGFyYXRpb24nLFxuICAgICAgICAnVFNEZWNsYXJlRnVuY3Rpb24nLFxuICAgICAgICAnVFNFbnVtRGVjbGFyYXRpb24nLFxuICAgICAgICAnVFNUeXBlQWxpYXNEZWNsYXJhdGlvbicsXG4gICAgICAgICdUU0ludGVyZmFjZURlY2xhcmF0aW9uJyxcbiAgICAgICAgJ1RTQWJzdHJhY3RDbGFzc0RlY2xhcmF0aW9uJyxcbiAgICAgICAgJ1RTTW9kdWxlRGVjbGFyYXRpb24nLFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGV4cG9ydGVkRGVjbHMgPSBhc3QuYm9keS5maWx0ZXIoKHsgdHlwZSwgaWQsIGRlY2xhcmF0aW9ucyB9KSA9PiBpbmNsdWRlcyhkZWNsVHlwZXMsIHR5cGUpICYmIChcbiAgICAgICAgKGlkICYmIGlkLm5hbWUgPT09IGV4cG9ydGVkTmFtZSkgfHwgKGRlY2xhcmF0aW9ucyAmJiBkZWNsYXJhdGlvbnMuZmluZCgoZCkgPT4gZC5pZC5uYW1lID09PSBleHBvcnRlZE5hbWUpKVxuICAgICAgKSk7XG4gICAgICBpZiAoZXhwb3J0ZWREZWNscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gRXhwb3J0IGlzIG5vdCByZWZlcmVuY2luZyBhbnkgbG9jYWwgZGVjbGFyYXRpb24sIG11c3QgYmUgcmUtZXhwb3J0aW5nXG4gICAgICAgIG0ubmFtZXNwYWNlLnNldCgnZGVmYXVsdCcsIGNhcHR1cmVEb2Moc291cmNlLCBkb2NTdHlsZVBhcnNlcnMsIG4pKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzRXNNb2R1bGVJbnRlcm9wVHJ1ZSkge1xuICAgICAgICBtLm5hbWVzcGFjZS5zZXQoJ2RlZmF1bHQnLCB7fSk7XG4gICAgICB9XG4gICAgICBleHBvcnRlZERlY2xzLmZvckVhY2goKGRlY2wpID0+IHtcbiAgICAgICAgaWYgKGRlY2wudHlwZSA9PT0gJ1RTTW9kdWxlRGVjbGFyYXRpb24nKSB7XG4gICAgICAgICAgaWYgKGRlY2wuYm9keSAmJiBkZWNsLmJvZHkudHlwZSA9PT0gJ1RTTW9kdWxlRGVjbGFyYXRpb24nKSB7XG4gICAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQoZGVjbC5ib2R5LmlkLm5hbWUsIGNhcHR1cmVEb2Moc291cmNlLCBkb2NTdHlsZVBhcnNlcnMsIGRlY2wuYm9keSkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZGVjbC5ib2R5ICYmIGRlY2wuYm9keS5ib2R5KSB7XG4gICAgICAgICAgICBkZWNsLmJvZHkuYm9keS5mb3JFYWNoKChtb2R1bGVCbG9ja05vZGUpID0+IHtcbiAgICAgICAgICAgICAgLy8gRXhwb3J0LWFzc2lnbm1lbnQgZXhwb3J0cyBhbGwgbWVtYmVycyBpbiB0aGUgbmFtZXNwYWNlLFxuICAgICAgICAgICAgICAvLyBleHBsaWNpdGx5IGV4cG9ydGVkIG9yIG5vdC5cbiAgICAgICAgICAgICAgY29uc3QgbmFtZXNwYWNlRGVjbCA9IG1vZHVsZUJsb2NrTm9kZS50eXBlID09PSAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicgP1xuICAgICAgICAgICAgICAgIG1vZHVsZUJsb2NrTm9kZS5kZWNsYXJhdGlvbiA6XG4gICAgICAgICAgICAgICAgbW9kdWxlQmxvY2tOb2RlO1xuXG4gICAgICAgICAgICAgIGlmICghbmFtZXNwYWNlRGVjbCkge1xuICAgICAgICAgICAgICAgIC8vIFR5cGVTY3JpcHQgY2FuIGNoZWNrIHRoaXMgZm9yIHVzOyB3ZSBuZWVkbid0XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZXNwYWNlRGVjbC50eXBlID09PSAnVmFyaWFibGVEZWNsYXJhdGlvbicpIHtcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2VEZWNsLmRlY2xhcmF0aW9ucy5mb3JFYWNoKChkKSA9PlxuICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUoZC5pZCwgKGlkKSA9PiBtLm5hbWVzcGFjZS5zZXQoXG4gICAgICAgICAgICAgICAgICAgIGlkLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNhcHR1cmVEb2Moc291cmNlLCBkb2NTdHlsZVBhcnNlcnMsIGRlY2wsIG5hbWVzcGFjZURlY2wsIG1vZHVsZUJsb2NrTm9kZSlcbiAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQoXG4gICAgICAgICAgICAgICAgICBuYW1lc3BhY2VEZWNsLmlkLm5hbWUsXG4gICAgICAgICAgICAgICAgICBjYXB0dXJlRG9jKHNvdXJjZSwgZG9jU3R5bGVQYXJzZXJzLCBtb2R1bGVCbG9ja05vZGUpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEV4cG9ydCBhcyBkZWZhdWx0XG4gICAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KCdkZWZhdWx0JywgY2FwdHVyZURvYyhzb3VyY2UsIGRvY1N0eWxlUGFyc2VycywgZGVjbCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBtO1xufTtcblxuLyoqXG4gKiBUaGUgY3JlYXRpb24gb2YgdGhpcyBjbG9zdXJlIGlzIGlzb2xhdGVkIGZyb20gb3RoZXIgc2NvcGVzXG4gKiB0byBhdm9pZCBvdmVyLXJldGVudGlvbiBvZiB1bnJlbGF0ZWQgdmFyaWFibGVzLCB3aGljaCBoYXNcbiAqIGNhdXNlZCBtZW1vcnkgbGVha3MuIFNlZSAjMTI2Ni5cbiAqL1xuZnVuY3Rpb24gdGh1bmtGb3IocCwgY29udGV4dCkge1xuICByZXR1cm4gKCkgPT4gRXhwb3J0TWFwLmZvcihjaGlsZENvbnRleHQocCwgY29udGV4dCkpO1xufVxuXG5cbi8qKlxuICogVHJhdmVyc2UgYSBwYXR0ZXJuL2lkZW50aWZpZXIgbm9kZSwgY2FsbGluZyAnY2FsbGJhY2snXG4gKiBmb3IgZWFjaCBsZWFmIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gIHtub2RlfSAgIHBhdHRlcm5cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKHBhdHRlcm4sIGNhbGxiYWNrKSB7XG4gIHN3aXRjaCAocGF0dGVybi50eXBlKSB7XG4gIGNhc2UgJ0lkZW50aWZpZXInOiAvLyBiYXNlIGNhc2VcbiAgICBjYWxsYmFjayhwYXR0ZXJuKTtcbiAgICBicmVhaztcblxuICBjYXNlICdPYmplY3RQYXR0ZXJuJzpcbiAgICBwYXR0ZXJuLnByb3BlcnRpZXMuZm9yRWFjaChwID0+IHtcbiAgICAgIGlmIChwLnR5cGUgPT09ICdFeHBlcmltZW50YWxSZXN0UHJvcGVydHknIHx8IHAudHlwZSA9PT0gJ1Jlc3RFbGVtZW50Jykge1xuICAgICAgICBjYWxsYmFjayhwLmFyZ3VtZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUocC52YWx1ZSwgY2FsbGJhY2spO1xuICAgIH0pO1xuICAgIGJyZWFrO1xuXG4gIGNhc2UgJ0FycmF5UGF0dGVybic6XG4gICAgcGF0dGVybi5lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSByZXR1cm47XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnRXhwZXJpbWVudGFsUmVzdFByb3BlcnR5JyB8fCBlbGVtZW50LnR5cGUgPT09ICdSZXN0RWxlbWVudCcpIHtcbiAgICAgICAgY2FsbGJhY2soZWxlbWVudC5hcmd1bWVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKGVsZW1lbnQsIGNhbGxiYWNrKTtcbiAgICB9KTtcbiAgICBicmVhaztcblxuICBjYXNlICdBc3NpZ25tZW50UGF0dGVybic6XG4gICAgY2FsbGJhY2socGF0dGVybi5sZWZ0KTtcbiAgICBicmVhaztcbiAgfVxufVxuXG4vKipcbiAqIGRvbid0IGhvbGQgZnVsbCBjb250ZXh0IG9iamVjdCBpbiBtZW1vcnksIGp1c3QgZ3JhYiB3aGF0IHdlIG5lZWQuXG4gKi9cbmZ1bmN0aW9uIGNoaWxkQ29udGV4dChwYXRoLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc2V0dGluZ3MsIHBhcnNlck9wdGlvbnMsIHBhcnNlclBhdGggfSA9IGNvbnRleHQ7XG4gIHJldHVybiB7XG4gICAgc2V0dGluZ3MsXG4gICAgcGFyc2VyT3B0aW9ucyxcbiAgICBwYXJzZXJQYXRoLFxuICAgIHBhdGgsXG4gIH07XG59XG5cblxuLyoqXG4gKiBzb21ldGltZXMgbGVnYWN5IHN1cHBvcnQgaXNuJ3QgX3RoYXRfIGhhcmQuLi4gcmlnaHQ/XG4gKi9cbmZ1bmN0aW9uIG1ha2VTb3VyY2VDb2RlKHRleHQsIGFzdCkge1xuICBpZiAoU291cmNlQ29kZS5sZW5ndGggPiAxKSB7XG4gICAgLy8gRVNMaW50IDNcbiAgICByZXR1cm4gbmV3IFNvdXJjZUNvZGUodGV4dCwgYXN0KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBFU0xpbnQgNCwgNVxuICAgIHJldHVybiBuZXcgU291cmNlQ29kZSh7IHRleHQsIGFzdCB9KTtcbiAgfVxufVxuIl19
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9FeHBvcnRNYXAuanMiXSwibmFtZXMiOlsicmVjdXJzaXZlUGF0dGVybkNhcHR1cmUiLCJ1bmFtYmlndW91cyIsInRzIiwibG9nIiwiZXhwb3J0Q2FjaGUiLCJNYXAiLCJ0c0NvbmZpZ0NhY2hlIiwiRXhwb3J0TWFwIiwicGF0aCIsIm5hbWVzcGFjZSIsInJlZXhwb3J0cyIsImRlcGVuZGVuY2llcyIsIlNldCIsImltcG9ydHMiLCJlcnJvcnMiLCJwYXJzZUdvYWwiLCJuYW1lIiwiaGFzIiwiZGVwIiwiaW5uZXJNYXAiLCJmb3VuZCIsImdldCIsImltcG9ydGVkIiwiZ2V0SW1wb3J0IiwibG9jYWwiLCJkZWVwIiwiaGFzRGVlcCIsInVuc2hpZnQiLCJpbm5lclZhbHVlIiwidW5kZWZpbmVkIiwiY2FsbGJhY2siLCJ0aGlzQXJnIiwiZm9yRWFjaCIsInYiLCJuIiwiY2FsbCIsInJlZXhwb3J0ZWQiLCJkIiwiY29udGV4dCIsImRlY2xhcmF0aW9uIiwicmVwb3J0Iiwibm9kZSIsInNvdXJjZSIsIm1lc3NhZ2UiLCJ2YWx1ZSIsIm1hcCIsImUiLCJsaW5lTnVtYmVyIiwiY29sdW1uIiwiam9pbiIsInNpemUiLCJjYXB0dXJlRG9jIiwiZG9jU3R5bGVQYXJzZXJzIiwibWV0YWRhdGEiLCJub2RlcyIsInNvbWUiLCJsZWFkaW5nQ29tbWVudHMiLCJyYW5nZSIsImdldENvbW1lbnRzQmVmb3JlIiwibGVuZ3RoIiwiZG9jIiwiZXJyIiwiYXZhaWxhYmxlRG9jU3R5bGVQYXJzZXJzIiwianNkb2MiLCJjYXB0dXJlSnNEb2MiLCJ0b21kb2MiLCJjYXB0dXJlVG9tRG9jIiwiY29tbWVudHMiLCJjb21tZW50IiwidHlwZSIsImRvY3RyaW5lIiwicGFyc2UiLCJ1bndyYXAiLCJsaW5lcyIsImkiLCJtYXRjaCIsInB1c2giLCJ0cmltIiwic3RhdHVzTWF0Y2giLCJkZXNjcmlwdGlvbiIsInRhZ3MiLCJ0aXRsZSIsInRvTG93ZXJDYXNlIiwic3VwcG9ydGVkSW1wb3J0VHlwZXMiLCJjaGlsZENvbnRleHQiLCJjYWNoZUtleSIsImRpZ2VzdCIsImV4cG9ydE1hcCIsInN0YXRzIiwiZnMiLCJzdGF0U3luYyIsIm10aW1lIiwic2V0IiwiY29udGVudCIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwidGVzdCIsIm0iLCJpc0VzTW9kdWxlSW50ZXJvcFRydWUiLCJpc0VzTW9kdWxlSW50ZXJvcCIsImFzdCIsInZpc2l0b3JLZXlzIiwicmVzdWx0IiwiaGFzRHluYW1pY0ltcG9ydHMiLCJwcm9jZXNzRHluYW1pY0ltcG9ydCIsInAiLCJyZW1vdGVQYXRoIiwiaW1wb3J0ZWRTcGVjaWZpZXJzIiwiYWRkIiwiZ2V0dGVyIiwidGh1bmtGb3IiLCJkZWNsYXJhdGlvbnMiLCJsb2MiLCJkeW5hbWljIiwiSW1wb3J0RXhwcmVzc2lvbiIsIkNhbGxFeHByZXNzaW9uIiwiY2FsbGVlIiwiYXJndW1lbnRzIiwidW5hbWJpZ3VvdXNseUVTTSIsImlzTW9kdWxlIiwiZG9jc3R5bGUiLCJzZXR0aW5ncyIsInN0eWxlIiwiYyIsInQiLCJuYW1lc3BhY2VzIiwicmVzb2x2ZSIsInJlbGF0aXZlIiwicmVzb2x2ZUltcG9ydCIsInJwIiwiZ2V0TmFtZXNwYWNlIiwiaWRlbnRpZmllciIsImFkZE5hbWVzcGFjZSIsIm9iamVjdCIsIm5zZm4iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInByb2Nlc3NTcGVjaWZpZXIiLCJzIiwibnNvdXJjZSIsImV4cG9ydE1ldGEiLCJleHBvcnRlZCIsImNhcHR1cmVEZXBlbmRlbmN5V2l0aFNwZWNpZmllcnMiLCJkZWNsYXJhdGlvbklzVHlwZSIsImltcG9ydEtpbmQiLCJzcGVjaWZpZXJzT25seUltcG9ydGluZ1R5cGVzIiwic3BlY2lmaWVycyIsInNwZWNpZmllciIsImNhcHR1cmVEZXBlbmRlbmN5IiwiaXNPbmx5SW1wb3J0aW5nVHlwZXMiLCJkZWNsYXJhdGlvbk1ldGFkYXRhIiwiZXhpc3RpbmciLCJtYWtlU291cmNlQ29kZSIsInJlYWRUc0NvbmZpZyIsInRzQ29uZmlnSW5mbyIsImN3ZCIsInBhcnNlck9wdGlvbnMiLCJ0c2NvbmZpZ1Jvb3REaXIiLCJwcm9jZXNzIiwiZ2V0RW52Iiwia2V5IiwiZW52IiwidHNDb25maWdQYXRoIiwicmVxdWlyZSIsImNvbmZpZ0ZpbGUiLCJyZWFkQ29uZmlnRmlsZSIsInN5cyIsInJlYWRGaWxlIiwicGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQiLCJjb25maWciLCJ0c0NvbmZpZyIsIm9wdGlvbnMiLCJlc01vZHVsZUludGVyb3AiLCJib2R5IiwiZXhwb3J0S2luZCIsIm5zIiwiZmluZCIsImlkIiwiZXhwb3J0cyIsImV4cG9ydGVkTmFtZSIsImV4cHJlc3Npb24iLCJkZWNsVHlwZXMiLCJleHBvcnRlZERlY2xzIiwiZmlsdGVyIiwiZGVjbCIsIm1vZHVsZUJsb2NrTm9kZSIsIm5hbWVzcGFjZURlY2wiLCJwYXR0ZXJuIiwicHJvcGVydGllcyIsImFyZ3VtZW50IiwiZWxlbWVudHMiLCJlbGVtZW50IiwibGVmdCIsInBhcnNlclBhdGgiLCJ0ZXh0IiwiU291cmNlQ29kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOHVCZ0JBLHVCLEdBQUFBLHVCLENBOXVCaEIsd0IsdUNBQ0EsNEJBRUEsb0MsbURBRUEsOEIsNkNBRUEsZ0NBRUEsa0QsNkNBQ0Esa0QsNkNBQ0Esc0QsaURBQ0Esb0QsK0NBRUEsZ0RBQ0EsOEQsSUFBWUMsVyx5Q0FFWixvRUFFQSwrQyxvakJBRUEsSUFBSUMsV0FBSixDQUVBLElBQU1DLE1BQU0sd0JBQU0sZ0NBQU4sQ0FBWixDQUVBLElBQU1DLGNBQWMsSUFBSUMsR0FBSixFQUFwQixDQUNBLElBQU1DLGdCQUFnQixJQUFJRCxHQUFKLEVBQXRCLEMsSUFFcUJFLFMsZ0JBQ25CLG1CQUFZQyxJQUFaLEVBQWtCLGtDQUNoQixLQUFLQSxJQUFMLEdBQVlBLElBQVosQ0FDQSxLQUFLQyxTQUFMLEdBQWlCLElBQUlKLEdBQUosRUFBakIsQ0FGZ0IsQ0FHaEI7QUFDQSxTQUFLSyxTQUFMLEdBQWlCLElBQUlMLEdBQUosRUFBakIsQ0FKZ0IsQ0FLaEI7OzttQ0FJQSxLQUFLTSxZQUFMLEdBQW9CLElBQUlDLEdBQUosRUFBcEIsQ0FUZ0IsQ0FVaEI7OztxRUFJQSxLQUFLQyxPQUFMLEdBQWUsSUFBSVIsR0FBSixFQUFmLENBQ0EsS0FBS1MsTUFBTCxHQUFjLEVBQWQsQ0FmZ0IsQ0FnQmhCOzttSEFHQSxLQUFLQyxTQUFMLEdBQWlCLFdBQWpCLENBQ0QsQyx1Q0FlRDs7Ozs7OzROQU9JQyxJLEVBQU0sQ0FDUixJQUFJLEtBQUtQLFNBQUwsQ0FBZVEsR0FBZixDQUFtQkQsSUFBbkIsQ0FBSixFQUE4QixPQUFPLElBQVAsQ0FDOUIsSUFBSSxLQUFLTixTQUFMLENBQWVPLEdBQWYsQ0FBbUJELElBQW5CLENBQUosRUFBOEIsT0FBTyxJQUFQLENBRnRCLENBSVI7QUFDQSxZQUFJQSxTQUFTLFNBQWIsRUFBd0Isd0dBQ3RCLHFCQUFrQixLQUFLTCxZQUF2Qiw4SEFBcUMsS0FBMUJPLEdBQTBCLGVBQ25DLElBQU1DLFdBQVdELEtBQWpCLENBRG1DLENBR25DO0FBQ0Esa0JBQUksQ0FBQ0MsUUFBTCxFQUFlLFNBRWYsSUFBSUEsU0FBU0YsR0FBVCxDQUFhRCxJQUFiLENBQUosRUFBd0IsT0FBTyxJQUFQLENBQ3pCLENBUnFCLHVOQVN2QixDQUVELE9BQU8sS0FBUCxDQUNELEMsZUFFRDs7Ozs4WEFLUUEsSSxFQUFNLENBQ1osSUFBSSxLQUFLUCxTQUFMLENBQWVRLEdBQWYsQ0FBbUJELElBQW5CLENBQUosRUFBOEIsT0FBTyxFQUFFSSxPQUFPLElBQVQsRUFBZVosTUFBTSxDQUFDLElBQUQsQ0FBckIsRUFBUCxDQUU5QixJQUFJLEtBQUtFLFNBQUwsQ0FBZU8sR0FBZixDQUFtQkQsSUFBbkIsQ0FBSixFQUE4QixDQUM1QixJQUFNTixZQUFZLEtBQUtBLFNBQUwsQ0FBZVcsR0FBZixDQUFtQkwsSUFBbkIsQ0FBbEIsQ0FDQSxJQUFNTSxXQUFXWixVQUFVYSxTQUFWLEVBQWpCLENBRjRCLENBSTVCO0FBQ0EsY0FBSUQsWUFBWSxJQUFoQixFQUFzQixPQUFPLEVBQUVGLE9BQU8sSUFBVCxFQUFlWixNQUFNLENBQUMsSUFBRCxDQUFyQixFQUFQLENBTE0sQ0FPNUI7QUFDQSxjQUFJYyxTQUFTZCxJQUFULEtBQWtCLEtBQUtBLElBQXZCLElBQStCRSxVQUFVYyxLQUFWLEtBQW9CUixJQUF2RCxFQUE2RCxDQUMzRCxPQUFPLEVBQUVJLE9BQU8sS0FBVCxFQUFnQlosTUFBTSxDQUFDLElBQUQsQ0FBdEIsRUFBUCxDQUNELENBRUQsSUFBTWlCLE9BQU9ILFNBQVNJLE9BQVQsQ0FBaUJoQixVQUFVYyxLQUEzQixDQUFiLENBQ0FDLEtBQUtqQixJQUFMLENBQVVtQixPQUFWLENBQWtCLElBQWxCLEVBRUEsT0FBT0YsSUFBUCxDQUNELENBbkJXLENBc0JaO0FBQ0EsWUFBSVQsU0FBUyxTQUFiLEVBQXdCLDJHQUN0QixzQkFBa0IsS0FBS0wsWUFBdkIsbUlBQXFDLEtBQTFCTyxHQUEwQixnQkFDbkMsSUFBTUMsV0FBV0QsS0FBakIsQ0FDQSxJQUFJQyxZQUFZLElBQWhCLEVBQXNCLE9BQU8sRUFBRUMsT0FBTyxJQUFULEVBQWVaLE1BQU0sQ0FBQyxJQUFELENBQXJCLEVBQVAsQ0FGYSxDQUduQztBQUNBLGtCQUFJLENBQUNXLFFBQUwsRUFBZSxTQUpvQixDQU1uQztBQUNBLGtCQUFJQSxTQUFTWCxJQUFULEtBQWtCLEtBQUtBLElBQTNCLEVBQWlDLFNBRWpDLElBQU1vQixhQUFhVCxTQUFTTyxPQUFULENBQWlCVixJQUFqQixDQUFuQixDQUNBLElBQUlZLFdBQVdSLEtBQWYsRUFBc0IsQ0FDcEJRLFdBQVdwQixJQUFYLENBQWdCbUIsT0FBaEIsQ0FBd0IsSUFBeEIsRUFDQSxPQUFPQyxVQUFQLENBQ0QsQ0FDRixDQWZxQiw4TkFnQnZCLENBRUQsT0FBTyxFQUFFUixPQUFPLEtBQVQsRUFBZ0JaLE1BQU0sQ0FBQyxJQUFELENBQXRCLEVBQVAsQ0FDRCxDLHFFQUVHUSxJLEVBQU0sQ0FDUixJQUFJLEtBQUtQLFNBQUwsQ0FBZVEsR0FBZixDQUFtQkQsSUFBbkIsQ0FBSixFQUE4QixPQUFPLEtBQUtQLFNBQUwsQ0FBZVksR0FBZixDQUFtQkwsSUFBbkIsQ0FBUCxDQUU5QixJQUFJLEtBQUtOLFNBQUwsQ0FBZU8sR0FBZixDQUFtQkQsSUFBbkIsQ0FBSixFQUE4QixDQUM1QixJQUFNTixZQUFZLEtBQUtBLFNBQUwsQ0FBZVcsR0FBZixDQUFtQkwsSUFBbkIsQ0FBbEIsQ0FDQSxJQUFNTSxXQUFXWixVQUFVYSxTQUFWLEVBQWpCLENBRjRCLENBSTVCO0FBQ0EsY0FBSUQsWUFBWSxJQUFoQixFQUFzQixPQUFPLElBQVAsQ0FMTSxDQU81QjtBQUNBLGNBQUlBLFNBQVNkLElBQVQsS0FBa0IsS0FBS0EsSUFBdkIsSUFBK0JFLFVBQVVjLEtBQVYsS0FBb0JSLElBQXZELEVBQTZELE9BQU9hLFNBQVAsQ0FFN0QsT0FBT1AsU0FBU0QsR0FBVCxDQUFhWCxVQUFVYyxLQUF2QixDQUFQLENBQ0QsQ0FkTyxDQWdCUjtBQUNBLFlBQUlSLFNBQVMsU0FBYixFQUF3QiwyR0FDdEIsc0JBQWtCLEtBQUtMLFlBQXZCLG1JQUFxQyxLQUExQk8sR0FBMEIsZ0JBQ25DLElBQU1DLFdBQVdELEtBQWpCLENBRG1DLENBRW5DO0FBQ0Esa0JBQUksQ0FBQ0MsUUFBTCxFQUFlLFNBSG9CLENBS25DO0FBQ0Esa0JBQUlBLFNBQVNYLElBQVQsS0FBa0IsS0FBS0EsSUFBM0IsRUFBaUMsU0FFakMsSUFBTW9CLGFBQWFULFNBQVNFLEdBQVQsQ0FBYUwsSUFBYixDQUFuQixDQUNBLElBQUlZLGVBQWVDLFNBQW5CLEVBQThCLE9BQU9ELFVBQVAsQ0FDL0IsQ0FYcUIsOE5BWXZCLENBRUQsT0FBT0MsU0FBUCxDQUNELEMseUVBRU9DLFEsRUFBVUMsTyxFQUFTLGtCQUN6QixLQUFLdEIsU0FBTCxDQUFldUIsT0FBZixDQUF1QixVQUFDQyxDQUFELEVBQUlDLENBQUosVUFDckJKLFNBQVNLLElBQVQsQ0FBY0osT0FBZCxFQUF1QkUsQ0FBdkIsRUFBMEJDLENBQTFCLEVBQTZCLEtBQTdCLENBRHFCLEVBQXZCLEVBR0EsS0FBS3hCLFNBQUwsQ0FBZXNCLE9BQWYsQ0FBdUIsVUFBQ3RCLFNBQUQsRUFBWU0sSUFBWixFQUFxQixDQUMxQyxJQUFNb0IsYUFBYTFCLFVBQVVhLFNBQVYsRUFBbkIsQ0FEMEMsQ0FFMUM7QUFDQU8sbUJBQVNLLElBQVQsQ0FBY0osT0FBZCxFQUF1QkssY0FBY0EsV0FBV2YsR0FBWCxDQUFlWCxVQUFVYyxLQUF6QixDQUFyQyxFQUFzRVIsSUFBdEUsRUFBNEUsS0FBNUUsRUFDRCxDQUpELEVBTUEsS0FBS0wsWUFBTCxDQUFrQnFCLE9BQWxCLENBQTBCLGVBQU8sQ0FDL0IsSUFBTUssSUFBSW5CLEtBQVYsQ0FEK0IsQ0FFL0I7QUFDQSxjQUFJbUIsS0FBSyxJQUFULEVBQWUsT0FFZkEsRUFBRUwsT0FBRixDQUFVLFVBQUNDLENBQUQsRUFBSUMsQ0FBSixVQUNSQSxNQUFNLFNBQU4sSUFBbUJKLFNBQVNLLElBQVQsQ0FBY0osT0FBZCxFQUF1QkUsQ0FBdkIsRUFBMEJDLENBQTFCLEVBQTZCLEtBQTdCLENBRFgsRUFBVixFQUVELENBUEQsRUFRRCxDLG1CQUVEO3NFQUVhSSxPLEVBQVNDLFcsRUFBYSxDQUNqQ0QsUUFBUUUsTUFBUixDQUFlLEVBQ2JDLE1BQU1GLFlBQVlHLE1BREwsRUFFYkMsU0FBUyw4Q0FBb0NKLFlBQVlHLE1BQVosQ0FBbUJFLEtBQXZELDBCQUNNLEtBQUs5QixNQUFMLENBQ0ErQixHQURBLENBQ0ksNEJBQVFDLEVBQUVILE9BQVYsa0JBQXNCRyxFQUFFQyxVQUF4QixpQkFBc0NELEVBQUVFLE1BQXhDLFNBREosRUFFQUMsSUFGQSxDQUVLLElBRkwsQ0FETixFQUZJLEVBQWYsRUFPRCxDLGlGQXhKZ0IsQ0FBRSxPQUFPLEtBQUs1QixHQUFMLENBQVMsU0FBVCxLQUF1QixJQUE5QixDQUFxQyxDLGVBQUM7cURBRTlDLENBQ1QsSUFBSTZCLE9BQU8sS0FBS3pDLFNBQUwsQ0FBZXlDLElBQWYsR0FBc0IsS0FBS3hDLFNBQUwsQ0FBZXdDLElBQWhELENBQ0EsS0FBS3ZDLFlBQUwsQ0FBa0JxQixPQUFsQixDQUEwQixlQUFPLENBQy9CLElBQU1LLElBQUluQixLQUFWLENBRCtCLENBRS9CO0FBQ0EsY0FBSW1CLEtBQUssSUFBVCxFQUFlLE9BQ2ZhLFFBQVFiLEVBQUVhLElBQVYsQ0FDRCxDQUxELEVBTUEsT0FBT0EsSUFBUCxDQUNELEMseUNBZ0pIOztnSUFsTHFCM0MsUyxDQXFMckIsU0FBUzRDLFVBQVQsQ0FBb0JULE1BQXBCLEVBQTRCVSxlQUE1QixFQUF1RCxDQUNyRCxJQUFNQyxXQUFXLEVBQWpCLENBRHFELENBR3JEO0FBSHFELG9DQUFQQyxLQUFPLG1FQUFQQSxLQUFPLDhCQUlyREEsTUFBTUMsSUFBTixDQUFXLGFBQUssQ0FDZCxJQUFJLENBRUYsSUFBSUMsd0JBQUosQ0FGRSxDQUlGO0FBQ0EsVUFBSSxxQkFBcUJ0QixDQUF6QixFQUE0QixDQUMxQnNCLGtCQUFrQnRCLEVBQUVzQixlQUFwQixDQUNELENBRkQsTUFFTyxJQUFJdEIsRUFBRXVCLEtBQU4sRUFBYSxDQUNsQkQsa0JBQWtCZCxPQUFPZ0IsaUJBQVAsQ0FBeUJ4QixDQUF6QixDQUFsQixDQUNELENBRUQsSUFBSSxDQUFDc0IsZUFBRCxJQUFvQkEsZ0JBQWdCRyxNQUFoQixLQUEyQixDQUFuRCxFQUFzRCxPQUFPLEtBQVAsQ0FFdEQsS0FBSyxJQUFNM0MsSUFBWCxJQUFtQm9DLGVBQW5CLEVBQW9DLENBQ2xDLElBQU1RLE1BQU1SLGdCQUFnQnBDLElBQWhCLEVBQXNCd0MsZUFBdEIsQ0FBWixDQUNBLElBQUlJLEdBQUosRUFBUyxDQUNQUCxTQUFTTyxHQUFULEdBQWVBLEdBQWYsQ0FDRCxDQUNGLENBRUQsT0FBTyxJQUFQLENBQ0QsQ0FyQkQsQ0FxQkUsT0FBT0MsR0FBUCxFQUFZLENBQ1osT0FBTyxLQUFQLENBQ0QsQ0FDRixDQXpCRCxFQTJCQSxPQUFPUixRQUFQLENBQ0QsQ0FFRCxJQUFNUywyQkFBMkIsRUFDL0JDLE9BQU9DLFlBRHdCLEVBRS9CQyxRQUFRQyxhQUZ1QixFQUFqQyxDLENBS0E7Ozs7Z2RBS0EsU0FBU0YsWUFBVCxDQUFzQkcsUUFBdEIsRUFBZ0MsQ0FDOUIsSUFBSVAsWUFBSixDQUQ4QixDQUc5QjtBQUNBTyxXQUFTbkMsT0FBVCxDQUFpQixtQkFBVyxDQUMxQjtBQUNBLFFBQUlvQyxRQUFRQyxJQUFSLEtBQWlCLE9BQXJCLEVBQThCLE9BQzlCLElBQUksQ0FDRlQsTUFBTVUsc0JBQVNDLEtBQVQsQ0FBZUgsUUFBUXhCLEtBQXZCLEVBQThCLEVBQUU0QixRQUFRLElBQVYsRUFBOUIsQ0FBTixDQUNELENBRkQsQ0FFRSxPQUFPWCxHQUFQLEVBQVksQ0FDWixpREFDRCxDQUNGLENBUkQsRUFVQSxPQUFPRCxHQUFQLENBQ0QsQyxDQUVEOztzTUFHQSxTQUFTTSxhQUFULENBQXVCQyxRQUF2QixFQUFpQyxDQUMvQjtBQUNBLE1BQU1NLFFBQVEsRUFBZCxDQUNBLEtBQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJUCxTQUFTUixNQUE3QixFQUFxQ2UsR0FBckMsRUFBMEMsQ0FDeEMsSUFBTU4sVUFBVUQsU0FBU08sQ0FBVCxDQUFoQixDQUNBLElBQUlOLFFBQVF4QixLQUFSLENBQWMrQixLQUFkLENBQW9CLE9BQXBCLENBQUosRUFBa0MsTUFDbENGLE1BQU1HLElBQU4sQ0FBV1IsUUFBUXhCLEtBQVIsQ0FBY2lDLElBQWQsRUFBWCxFQUNELENBUDhCLENBUy9CO0FBQ0EsTUFBTUMsY0FBY0wsTUFBTXhCLElBQU4sQ0FBVyxHQUFYLEVBQWdCMEIsS0FBaEIsQ0FBc0IsdUNBQXRCLENBQXBCLENBQ0EsSUFBSUcsV0FBSixFQUFpQixDQUNmLE9BQU8sRUFDTEMsYUFBYUQsWUFBWSxDQUFaLENBRFIsRUFFTEUsTUFBTSxDQUFDLEVBQ0xDLE9BQU9ILFlBQVksQ0FBWixFQUFlSSxXQUFmLEVBREYsRUFFTEgsYUFBYUQsWUFBWSxDQUFaLENBRlIsRUFBRCxDQUZELEVBQVAsQ0FPRCxDQUNGLENBRUQsSUFBTUssdUJBQXVCLElBQUl2RSxHQUFKLENBQVEsQ0FBQyx3QkFBRCxFQUEyQiwwQkFBM0IsQ0FBUixDQUE3QixDQUVBTCxVQUFVYyxHQUFWLEdBQWdCLFVBQVVxQixNQUFWLEVBQWtCSixPQUFsQixFQUEyQixDQUN6QyxJQUFNOUIsT0FBTywwQkFBUWtDLE1BQVIsRUFBZ0JKLE9BQWhCLENBQWIsQ0FDQSxJQUFJOUIsUUFBUSxJQUFaLEVBQWtCLE9BQU8sSUFBUCxDQUVsQixPQUFPRCxpQkFBYzZFLGFBQWE1RSxJQUFiLEVBQW1COEIsT0FBbkIsQ0FBZCxDQUFQLENBQ0QsQ0FMRCxDQU9BL0IsbUJBQWdCLFVBQVUrQixPQUFWLEVBQW1CLEtBQ3pCOUIsSUFEeUIsR0FDaEI4QixPQURnQixDQUN6QjlCLElBRHlCLENBR2pDLElBQU02RSxXQUFXLHNCQUFXL0MsT0FBWCxFQUFvQmdELE1BQXBCLENBQTJCLEtBQTNCLENBQWpCLENBQ0EsSUFBSUMsWUFBWW5GLFlBQVlpQixHQUFaLENBQWdCZ0UsUUFBaEIsQ0FBaEIsQ0FKaUMsQ0FNakM7QUFDQSxNQUFJRSxjQUFjLElBQWxCLEVBQXdCLE9BQU8sSUFBUCxDQUV4QixJQUFNQyxRQUFRQyxnQkFBR0MsUUFBSCxDQUFZbEYsSUFBWixDQUFkLENBQ0EsSUFBSStFLGFBQWEsSUFBakIsRUFBdUIsQ0FDckI7QUFDQSxRQUFJQSxVQUFVSSxLQUFWLEdBQWtCSCxNQUFNRyxLQUF4QixLQUFrQyxDQUF0QyxFQUF5QyxDQUN2QyxPQUFPSixTQUFQLENBQ0QsQ0FKb0IsQ0FLckI7QUFDRCxHQWhCZ0MsQ0FrQmpDO0FBQ0EsTUFBSSxDQUFDLCtCQUFrQi9FLElBQWxCLEVBQXdCOEIsT0FBeEIsQ0FBTCxFQUF1QyxDQUNyQ2xDLFlBQVl3RixHQUFaLENBQWdCUCxRQUFoQixFQUEwQixJQUExQixFQUNBLE9BQU8sSUFBUCxDQUNELENBdEJnQyxDQXdCakM7QUFDQSxNQUFJLHlCQUFVN0UsSUFBVixFQUFnQjhCLE9BQWhCLENBQUosRUFBOEIsQ0FDNUJuQyxJQUFJLHNDQUFKLEVBQTRDSyxJQUE1QyxFQUNBSixZQUFZd0YsR0FBWixDQUFnQlAsUUFBaEIsRUFBMEIsSUFBMUIsRUFDQSxPQUFPLElBQVAsQ0FDRCxDQUVELElBQU1RLFVBQVVKLGdCQUFHSyxZQUFILENBQWdCdEYsSUFBaEIsRUFBc0IsRUFBRXVGLFVBQVUsTUFBWixFQUF0QixDQUFoQixDQS9CaUMsQ0FpQ2pDO0FBQ0EsTUFBSSxDQUFDOUYsWUFBWStGLElBQVosQ0FBaUJILE9BQWpCLENBQUwsRUFBZ0MsQ0FDOUIxRixJQUFJLHdDQUFKLEVBQThDSyxJQUE5QyxFQUNBSixZQUFZd0YsR0FBWixDQUFnQlAsUUFBaEIsRUFBMEIsSUFBMUIsRUFDQSxPQUFPLElBQVAsQ0FDRCxDQUVEbEYsSUFBSSxZQUFKLEVBQWtCa0YsUUFBbEIsRUFBNEIsVUFBNUIsRUFBd0M3RSxJQUF4QyxFQUNBK0UsWUFBWWhGLFVBQVVnRSxLQUFWLENBQWdCL0QsSUFBaEIsRUFBc0JxRixPQUF0QixFQUErQnZELE9BQS9CLENBQVosQ0F6Q2lDLENBMkNqQztBQUNBLE1BQUlpRCxhQUFhLElBQWpCLEVBQXVCLENBQ3JCcEYsSUFBSSxzQ0FBSixFQUE0Q0ssSUFBNUMsRUFDQUosWUFBWXdGLEdBQVosQ0FBZ0JQLFFBQWhCLEVBQTBCLElBQTFCLEVBQ0EsT0FBTyxJQUFQLENBQ0QsQ0FFREUsVUFBVUksS0FBVixHQUFrQkgsTUFBTUcsS0FBeEIsQ0FFQXZGLFlBQVl3RixHQUFaLENBQWdCUCxRQUFoQixFQUEwQkUsU0FBMUIsRUFDQSxPQUFPQSxTQUFQLENBQ0QsQ0F0REQsQ0F5REFoRixVQUFVZ0UsS0FBVixHQUFrQixVQUFVL0QsSUFBVixFQUFnQnFGLE9BQWhCLEVBQXlCdkQsT0FBekIsRUFBa0MsQ0FDbEQsSUFBTTJELElBQUksSUFBSTFGLFNBQUosQ0FBY0MsSUFBZCxDQUFWLENBQ0EsSUFBTTBGLHdCQUF3QkMsbUJBQTlCLENBRUEsSUFBSUMsWUFBSixDQUNBLElBQUlDLG9CQUFKLENBQ0EsSUFBSSxDQUNGLElBQU1DLFNBQVMsd0JBQU05RixJQUFOLEVBQVlxRixPQUFaLEVBQXFCdkQsT0FBckIsQ0FBZixDQUNBOEQsTUFBTUUsT0FBT0YsR0FBYixDQUNBQyxjQUFjQyxPQUFPRCxXQUFyQixDQUNELENBSkQsQ0FJRSxPQUFPeEMsR0FBUCxFQUFZLENBQ1pvQyxFQUFFbkYsTUFBRixDQUFTOEQsSUFBVCxDQUFjZixHQUFkLEVBQ0EsT0FBT29DLENBQVAsQ0FGWSxDQUVGO0FBQ1gsR0FFREEsRUFBRUksV0FBRixHQUFnQkEsV0FBaEIsQ0FFQSxJQUFJRSxvQkFBb0IsS0FBeEIsQ0FFQSxTQUFTQyxvQkFBVCxDQUE4QjlELE1BQTlCLEVBQXNDLENBQ3BDNkQsb0JBQW9CLElBQXBCLENBQ0EsSUFBSTdELE9BQU8yQixJQUFQLEtBQWdCLFNBQXBCLEVBQStCLENBQzdCLE9BQU8sSUFBUCxDQUNELENBQ0QsSUFBTW9DLElBQUlDLFdBQVdoRSxPQUFPRSxLQUFsQixDQUFWLENBQ0EsSUFBSTZELEtBQUssSUFBVCxFQUFlLENBQ2IsT0FBTyxJQUFQLENBQ0QsQ0FDRCxJQUFNRSxxQkFBcUIsSUFBSS9GLEdBQUosRUFBM0IsQ0FDQStGLG1CQUFtQkMsR0FBbkIsQ0FBdUIsMEJBQXZCLEVBQ0EsSUFBTUMsU0FBU0MsU0FBU0wsQ0FBVCxFQUFZbkUsT0FBWixDQUFmLENBQ0EyRCxFQUFFcEYsT0FBRixDQUFVK0UsR0FBVixDQUFjYSxDQUFkLEVBQWlCLEVBQ2ZJLGNBRGUsRUFFZkUsY0FBYyxJQUFJbkcsR0FBSixDQUFRLENBQUMsRUFDckI4QixRQUFRLEVBQ1I7QUFDRUUsaUJBQU9GLE9BQU9FLEtBRlIsRUFHTm9FLEtBQUt0RSxPQUFPc0UsR0FITixFQURhLEVBTXJCTCxzQ0FOcUIsRUFPckJNLFNBQVMsSUFQWSxFQUFELENBQVIsQ0FGQyxFQUFqQixFQVlELENBRUQsd0JBQU1iLEdBQU4sRUFBV0MsV0FBWCxFQUF3QixFQUN0QmEsZ0JBRHNCLHlDQUNMekUsSUFESyxFQUNDLENBQ3JCK0QscUJBQXFCL0QsS0FBS0MsTUFBMUIsRUFDRCxDQUhxQiw2QkFJdEJ5RSxjQUpzQix1Q0FJUDFFLElBSk8sRUFJRCxDQUNuQixJQUFJQSxLQUFLMkUsTUFBTCxDQUFZL0MsSUFBWixLQUFxQixRQUF6QixFQUFtQyxDQUNqQ21DLHFCQUFxQi9ELEtBQUs0RSxTQUFMLENBQWUsQ0FBZixDQUFyQixFQUNELENBQ0YsQ0FScUIsMkJBQXhCLEVBV0EsSUFBTUMsbUJBQW1CckgsWUFBWXNILFFBQVosQ0FBcUJuQixHQUFyQixDQUF6QixDQUNBLElBQUksQ0FBQ2tCLGdCQUFELElBQXFCLENBQUNmLGlCQUExQixFQUE2QyxPQUFPLElBQVAsQ0FFN0MsSUFBTWlCLFdBQVlsRixRQUFRbUYsUUFBUixJQUFvQm5GLFFBQVFtRixRQUFSLENBQWlCLGlCQUFqQixDQUFyQixJQUE2RCxDQUFDLE9BQUQsQ0FBOUUsQ0FDQSxJQUFNckUsa0JBQWtCLEVBQXhCLENBQ0FvRSxTQUFTeEYsT0FBVCxDQUFpQixpQkFBUyxDQUN4Qm9CLGdCQUFnQnNFLEtBQWhCLElBQXlCNUQseUJBQXlCNEQsS0FBekIsQ0FBekIsQ0FDRCxDQUZELEVBN0RrRCxDQWlFbEQ7QUFDQSxNQUFJdEIsSUFBSWpDLFFBQVIsRUFBa0IsQ0FDaEJpQyxJQUFJakMsUUFBSixDQUFhWixJQUFiLENBQWtCLGFBQUssQ0FDckIsSUFBSW9FLEVBQUV0RCxJQUFGLEtBQVcsT0FBZixFQUF3QixPQUFPLEtBQVAsQ0FDeEIsSUFBSSxDQUNGLElBQU1ULE1BQU1VLHNCQUFTQyxLQUFULENBQWVvRCxFQUFFL0UsS0FBakIsRUFBd0IsRUFBRTRCLFFBQVEsSUFBVixFQUF4QixDQUFaLENBQ0EsSUFBSVosSUFBSW9CLElBQUosQ0FBU3pCLElBQVQsQ0FBYyxxQkFBS3FFLEVBQUUzQyxLQUFGLEtBQVksUUFBakIsRUFBZCxDQUFKLEVBQThDLENBQzVDZ0IsRUFBRXJDLEdBQUYsR0FBUUEsR0FBUixDQUNBLE9BQU8sSUFBUCxDQUNELENBQ0YsQ0FORCxDQU1FLE9BQU9DLEdBQVAsRUFBWSxDQUFFLFlBQWMsQ0FDOUIsT0FBTyxLQUFQLENBQ0QsQ0FWRCxFQVdELENBRUQsSUFBTWdFLGFBQWEsSUFBSXhILEdBQUosRUFBbkIsQ0FFQSxTQUFTcUcsVUFBVCxDQUFvQjlELEtBQXBCLEVBQTJCLENBQ3pCLE9BQU9rRixxQkFBUUMsUUFBUixDQUFpQm5GLEtBQWpCLEVBQXdCcEMsSUFBeEIsRUFBOEI4QixRQUFRbUYsUUFBdEMsQ0FBUCxDQUNELENBRUQsU0FBU08sYUFBVCxDQUF1QnBGLEtBQXZCLEVBQThCLENBQzVCLElBQU1xRixLQUFLdkIsV0FBVzlELEtBQVgsQ0FBWCxDQUNBLElBQUlxRixNQUFNLElBQVYsRUFBZ0IsT0FBTyxJQUFQLENBQ2hCLE9BQU8xSCxpQkFBYzZFLGFBQWE2QyxFQUFiLEVBQWlCM0YsT0FBakIsQ0FBZCxDQUFQLENBQ0QsQ0FFRCxTQUFTNEYsWUFBVCxDQUFzQkMsVUFBdEIsRUFBa0MsQ0FDaEMsSUFBSSxDQUFDTixXQUFXNUcsR0FBWCxDQUFla0gsV0FBV25ILElBQTFCLENBQUwsRUFBc0MsT0FFdEMsT0FBTyxZQUFZLENBQ2pCLE9BQU9nSCxjQUFjSCxXQUFXeEcsR0FBWCxDQUFlOEcsV0FBV25ILElBQTFCLENBQWQsQ0FBUCxDQUNELENBRkQsQ0FHRCxDQUVELFNBQVNvSCxZQUFULENBQXNCQyxNQUF0QixFQUE4QkYsVUFBOUIsRUFBMEMsQ0FDeEMsSUFBTUcsT0FBT0osYUFBYUMsVUFBYixDQUFiLENBQ0EsSUFBSUcsSUFBSixFQUFVLENBQ1JDLE9BQU9DLGNBQVAsQ0FBc0JILE1BQXRCLEVBQThCLFdBQTlCLEVBQTJDLEVBQUVoSCxLQUFLaUgsSUFBUCxFQUEzQyxFQUNELENBRUQsT0FBT0QsTUFBUCxDQUNELENBRUQsU0FBU0ksZ0JBQVQsQ0FBMEJDLENBQTFCLEVBQTZCeEcsQ0FBN0IsRUFBZ0MrRCxDQUFoQyxFQUFtQyxDQUNqQyxJQUFNMEMsVUFBVXpHLEVBQUVRLE1BQUYsSUFBWVIsRUFBRVEsTUFBRixDQUFTRSxLQUFyQyxDQUNBLElBQU1nRyxhQUFhLEVBQW5CLENBQ0EsSUFBSXBILGNBQUosQ0FFQSxRQUFRa0gsRUFBRXJFLElBQVYsR0FDQSxLQUFLLHdCQUFMLENBQ0UsSUFBSSxDQUFDc0UsT0FBTCxFQUFjLE9BQ2RuSCxRQUFRLFNBQVIsQ0FDQSxNQUNGLEtBQUssMEJBQUwsQ0FDRXlFLEVBQUV4RixTQUFGLENBQVltRixHQUFaLENBQWdCOEMsRUFBRUcsUUFBRixDQUFXN0gsSUFBM0IsRUFBaUN1SCxPQUFPQyxjQUFQLENBQXNCSSxVQUF0QixFQUFrQyxXQUFsQyxFQUErQyxFQUM5RXZILEdBRDhFLDhCQUN4RSxDQUFFLE9BQU8yRyxjQUFjVyxPQUFkLENBQVAsQ0FBZ0MsQ0FEc0MsZ0JBQS9DLENBQWpDLEVBR0EsT0FDRixLQUFLLHNCQUFMLENBQ0UxQyxFQUFFeEYsU0FBRixDQUFZbUYsR0FBWixDQUFnQjhDLEVBQUVHLFFBQUYsQ0FBVzdILElBQVgsSUFBbUIwSCxFQUFFRyxRQUFGLENBQVdqRyxLQUE5QyxFQUFxRHdGLGFBQWFRLFVBQWIsRUFBeUJGLEVBQUVoRyxNQUFGLENBQVNFLEtBQWxDLENBQXJELEVBQ0EsT0FDRixLQUFLLGlCQUFMLENBQ0UsSUFBSSxDQUFDVixFQUFFUSxNQUFQLEVBQWUsQ0FDYnVELEVBQUV4RixTQUFGLENBQVltRixHQUFaLENBQWdCOEMsRUFBRUcsUUFBRixDQUFXN0gsSUFBWCxJQUFtQjBILEVBQUVHLFFBQUYsQ0FBV2pHLEtBQTlDLEVBQXFEd0YsYUFBYVEsVUFBYixFQUF5QkYsRUFBRWxILEtBQTNCLENBQXJELEVBQ0EsT0FDRCxDQWpCSCxDQWtCRTtBQUNGLGNBQ0VBLFFBQVFrSCxFQUFFbEgsS0FBRixDQUFRUixJQUFoQixDQUNBLE1BckJGLENBTGlDLENBNkJqQztBQUNBaUYsTUFBRXZGLFNBQUYsQ0FBWWtGLEdBQVosQ0FBZ0I4QyxFQUFFRyxRQUFGLENBQVc3SCxJQUEzQixFQUFpQyxFQUFFUSxZQUFGLEVBQVNELHdCQUFXLDZCQUFNeUcsY0FBY1csT0FBZCxDQUFOLEVBQVgsb0JBQVQsRUFBakMsRUFDRCxDQUVELFNBQVNHLCtCQUFULENBQXlDNUcsQ0FBekMsRUFBNEMsQ0FDMUM7QUFDQSxRQUFNNkcsb0JBQW9CN0csRUFBRThHLFVBQUYsS0FBaUIsTUFBakIsSUFBMkI5RyxFQUFFOEcsVUFBRixLQUFpQixRQUF0RSxDQUYwQyxDQUcxQztBQUNBO0FBQ0EsUUFBSUMsK0JBQStCL0csRUFBRWdILFVBQUYsQ0FBYXZGLE1BQWIsR0FBc0IsQ0FBekQsQ0FDQSxJQUFNZ0QscUJBQXFCLElBQUkvRixHQUFKLEVBQTNCLENBQ0FzQixFQUFFZ0gsVUFBRixDQUFhbEgsT0FBYixDQUFxQixxQkFBYSxDQUNoQyxJQUFJbUgsVUFBVTlFLElBQVYsS0FBbUIsaUJBQXZCLEVBQTBDLENBQ3hDc0MsbUJBQW1CQyxHQUFuQixDQUF1QnVDLFVBQVU3SCxRQUFWLENBQW1CTixJQUFuQixJQUEyQm1JLFVBQVU3SCxRQUFWLENBQW1Cc0IsS0FBckUsRUFDRCxDQUZELE1BRU8sSUFBSXVDLHFCQUFxQmxFLEdBQXJCLENBQXlCa0ksVUFBVTlFLElBQW5DLENBQUosRUFBOEMsQ0FDbkRzQyxtQkFBbUJDLEdBQW5CLENBQXVCdUMsVUFBVTlFLElBQWpDLEVBQ0QsQ0FMK0IsQ0FPaEM7QUFDQTRFLHFDQUErQkEsaUNBQ3pCRSxVQUFVSCxVQUFWLEtBQXlCLE1BQXpCLElBQW1DRyxVQUFVSCxVQUFWLEtBQXlCLFFBRG5DLENBQS9CLENBRUQsQ0FWRCxFQVdBSSxrQkFBa0JsSCxDQUFsQixFQUFxQjZHLHFCQUFxQkUsNEJBQTFDLEVBQXdFdEMsa0JBQXhFLEVBQ0QsQ0FFRCxTQUFTeUMsaUJBQVQsT0FBdUNDLG9CQUF2QyxFQUE2RixLQUFoRTNHLE1BQWdFLFFBQWhFQSxNQUFnRSxLQUFoQ2lFLGtCQUFnQyx1RUFBWCxJQUFJL0YsR0FBSixFQUFXLENBQzNGLElBQUk4QixVQUFVLElBQWQsRUFBb0IsT0FBTyxJQUFQLENBRXBCLElBQU0rRCxJQUFJQyxXQUFXaEUsT0FBT0UsS0FBbEIsQ0FBVixDQUNBLElBQUk2RCxLQUFLLElBQVQsRUFBZSxPQUFPLElBQVAsQ0FFZixJQUFNNkMsc0JBQXNCLEVBQzFCO0FBQ0E1RyxjQUFRLEVBQUVFLE9BQU9GLE9BQU9FLEtBQWhCLEVBQXVCb0UsS0FBS3RFLE9BQU9zRSxHQUFuQyxFQUZrQixFQUcxQnFDLDBDQUgwQixFQUkxQjFDLHNDQUowQixFQUE1QixDQU9BLElBQU00QyxXQUFXdEQsRUFBRXBGLE9BQUYsQ0FBVVEsR0FBVixDQUFjb0YsQ0FBZCxDQUFqQixDQUNBLElBQUk4QyxZQUFZLElBQWhCLEVBQXNCLENBQ3BCQSxTQUFTeEMsWUFBVCxDQUFzQkgsR0FBdEIsQ0FBMEIwQyxtQkFBMUIsRUFDQSxPQUFPQyxTQUFTMUMsTUFBaEIsQ0FDRCxDQUVELElBQU1BLFNBQVNDLFNBQVNMLENBQVQsRUFBWW5FLE9BQVosQ0FBZixDQUNBMkQsRUFBRXBGLE9BQUYsQ0FBVStFLEdBQVYsQ0FBY2EsQ0FBZCxFQUFpQixFQUFFSSxjQUFGLEVBQVVFLGNBQWMsSUFBSW5HLEdBQUosQ0FBUSxDQUFDMEksbUJBQUQsQ0FBUixDQUF4QixFQUFqQixFQUNBLE9BQU96QyxNQUFQLENBQ0QsQ0FFRCxJQUFNbkUsU0FBUzhHLGVBQWUzRCxPQUFmLEVBQXdCTyxHQUF4QixDQUFmLENBRUEsU0FBU3FELFlBQVQsQ0FBc0JuSCxPQUF0QixFQUErQixDQUM3QixJQUFNb0gsZUFBZSxvQ0FBZSxFQUNsQ0MsS0FDR3JILFFBQVFzSCxhQUFSLElBQXlCdEgsUUFBUXNILGFBQVIsQ0FBc0JDLGVBQWhELElBQ0FDLFFBQVFILEdBQVIsRUFIZ0MsRUFJbENJLHFCQUFRLGdCQUFDQyxHQUFELFVBQVNGLFFBQVFHLEdBQVIsQ0FBWUQsR0FBWixDQUFULEVBQVIsaUJBSmtDLEVBQWYsQ0FBckIsQ0FNQSxJQUFJLENBQ0YsSUFBSU4sYUFBYVEsWUFBYixLQUE4QnJJLFNBQWxDLEVBQTZDLENBQzNDO0FBQ0EsWUFBSSxDQUFDM0IsRUFBTCxFQUFTLENBQUVBLEtBQUtpSyxRQUFRLFlBQVIsQ0FBTCxDQUE2QixDQUZHLENBRUY7QUFFekMsWUFBTUMsYUFBYWxLLEdBQUdtSyxjQUFILENBQWtCWCxhQUFhUSxZQUEvQixFQUE2Q2hLLEdBQUdvSyxHQUFILENBQU9DLFFBQXBELENBQW5CLENBQ0EsT0FBT3JLLEdBQUdzSywwQkFBSCxDQUNMSixXQUFXSyxNQUROLEVBRUx2SyxHQUFHb0ssR0FGRSxFQUdMLG1CQUFRWixhQUFhUSxZQUFyQixDQUhLLENBQVAsQ0FLRCxDQUNGLENBWkQsQ0FZRSxPQUFPcEgsQ0FBUCxFQUFVLENBQ1Y7QUFDRCxLQUVELE9BQU8sSUFBUCxDQUNELENBRUQsU0FBU3FELGlCQUFULEdBQTZCLENBQzNCLElBQU1kLFdBQVcsc0JBQVcsRUFDMUJ3RSxpQkFBaUJ2SCxRQUFRc0gsYUFBUixJQUF5QnRILFFBQVFzSCxhQUFSLENBQXNCQyxlQUR0QyxFQUFYLEVBRWR2RSxNQUZjLENBRVAsS0FGTyxDQUFqQixDQUdBLElBQUlvRixXQUFXcEssY0FBY2UsR0FBZCxDQUFrQmdFLFFBQWxCLENBQWYsQ0FDQSxJQUFJLE9BQU9xRixRQUFQLEtBQW9CLFdBQXhCLEVBQXFDLENBQ25DQSxXQUFXakIsYUFBYW5ILE9BQWIsQ0FBWCxDQUNBaEMsY0FBY3NGLEdBQWQsQ0FBa0JQLFFBQWxCLEVBQTRCcUYsUUFBNUIsRUFDRCxDQUVELE9BQU9BLFlBQVlBLFNBQVNDLE9BQXJCLEdBQStCRCxTQUFTQyxPQUFULENBQWlCQyxlQUFoRCxHQUFrRSxLQUF6RSxDQUNELENBRUR4RSxJQUFJeUUsSUFBSixDQUFTN0ksT0FBVCxDQUFpQixVQUFVRSxDQUFWLEVBQWEsQ0FDNUIsSUFBSUEsRUFBRW1DLElBQUYsS0FBVywwQkFBZixFQUEyQyxDQUN6QyxJQUFNdUUsYUFBYXpGLFdBQVdULE1BQVgsRUFBbUJVLGVBQW5CLEVBQW9DbEIsQ0FBcEMsQ0FBbkIsQ0FDQSxJQUFJQSxFQUFFSyxXQUFGLENBQWM4QixJQUFkLEtBQXVCLFlBQTNCLEVBQXlDLENBQ3ZDK0QsYUFBYVEsVUFBYixFQUF5QjFHLEVBQUVLLFdBQTNCLEVBQ0QsQ0FDRDBELEVBQUV4RixTQUFGLENBQVltRixHQUFaLENBQWdCLFNBQWhCLEVBQTJCZ0QsVUFBM0IsRUFDQSxPQUNELENBRUQsSUFBSTFHLEVBQUVtQyxJQUFGLEtBQVcsc0JBQWYsRUFBdUMsQ0FDckMsSUFBTXdDLFNBQVN1QyxrQkFBa0JsSCxDQUFsQixFQUFxQkEsRUFBRTRJLFVBQUYsS0FBaUIsTUFBdEMsQ0FBZixDQUNBLElBQUlqRSxNQUFKLEVBQVlaLEVBQUV0RixZQUFGLENBQWVpRyxHQUFmLENBQW1CQyxNQUFuQixFQUNaLElBQUkzRSxFQUFFMkcsUUFBTixFQUFnQixDQUNkSixpQkFBaUJ2RyxDQUFqQixFQUFvQkEsRUFBRTJHLFFBQXRCLEVBQWdDNUMsQ0FBaEMsRUFDRCxDQUNELE9BQ0QsQ0FqQjJCLENBbUI1QjtBQUNBLFFBQUkvRCxFQUFFbUMsSUFBRixLQUFXLG1CQUFmLEVBQW9DLENBQ2xDeUUsZ0NBQWdDNUcsQ0FBaEMsRUFFQSxJQUFNNkksS0FBSzdJLEVBQUVnSCxVQUFGLENBQWE4QixJQUFiLENBQWtCLHFCQUFLdEMsRUFBRXJFLElBQUYsS0FBVywwQkFBaEIsRUFBbEIsQ0FBWCxDQUNBLElBQUkwRyxFQUFKLEVBQVEsQ0FDTmxELFdBQVdqQyxHQUFYLENBQWVtRixHQUFHdkosS0FBSCxDQUFTUixJQUF4QixFQUE4QmtCLEVBQUVRLE1BQUYsQ0FBU0UsS0FBdkMsRUFDRCxDQUNELE9BQ0QsQ0FFRCxJQUFJVixFQUFFbUMsSUFBRixLQUFXLHdCQUFmLEVBQXlDLENBQ3ZDeUUsZ0NBQWdDNUcsQ0FBaEMsRUFEdUMsQ0FHdkM7QUFDQSxVQUFJQSxFQUFFSyxXQUFGLElBQWlCLElBQXJCLEVBQTJCLENBQ3pCLFFBQVFMLEVBQUVLLFdBQUYsQ0FBYzhCLElBQXRCLEdBQ0EsS0FBSyxxQkFBTCxDQUNBLEtBQUssa0JBQUwsQ0FDQSxLQUFLLFdBQUwsQ0FIQSxDQUdrQjtBQUNsQixlQUFLLHNCQUFMLENBQ0EsS0FBSyxpQkFBTCxDQUNBLEtBQUssbUJBQUwsQ0FDQSxLQUFLLG1CQUFMLENBQ0EsS0FBSyx3QkFBTCxDQUNBLEtBQUssd0JBQUwsQ0FDQSxLQUFLLDRCQUFMLENBQ0EsS0FBSyxxQkFBTCxDQUNFNEIsRUFBRXhGLFNBQUYsQ0FBWW1GLEdBQVosQ0FBZ0IxRCxFQUFFSyxXQUFGLENBQWMwSSxFQUFkLENBQWlCakssSUFBakMsRUFBdUNtQyxXQUFXVCxNQUFYLEVBQW1CVSxlQUFuQixFQUFvQ2xCLENBQXBDLENBQXZDLEVBQ0EsTUFDRixLQUFLLHFCQUFMLENBQ0VBLEVBQUVLLFdBQUYsQ0FBY3dFLFlBQWQsQ0FBMkIvRSxPQUEzQixDQUFtQyxVQUFDSyxDQUFELFVBQ2pDckMsd0JBQXdCcUMsRUFBRTRJLEVBQTFCLEVBQ0Usc0JBQU1oRixFQUFFeEYsU0FBRixDQUFZbUYsR0FBWixDQUFnQnFGLEdBQUdqSyxJQUFuQixFQUF5Qm1DLFdBQVdULE1BQVgsRUFBbUJVLGVBQW5CLEVBQW9DZixDQUFwQyxFQUF1Q0gsQ0FBdkMsQ0FBekIsQ0FBTixFQURGLENBRGlDLEVBQW5DLEVBR0EsTUFsQkYsQ0FvQkQsQ0FFREEsRUFBRWdILFVBQUYsQ0FBYWxILE9BQWIsQ0FBcUIsVUFBQzBHLENBQUQsVUFBT0QsaUJBQWlCQyxDQUFqQixFQUFvQnhHLENBQXBCLEVBQXVCK0QsQ0FBdkIsQ0FBUCxFQUFyQixFQUNELENBRUQsSUFBTWlGLFVBQVUsQ0FBQyxvQkFBRCxDQUFoQixDQUNBLElBQUloRixxQkFBSixFQUEyQixDQUN6QmdGLFFBQVF0RyxJQUFSLENBQWEsOEJBQWIsRUFDRCxDQS9EMkIsQ0FpRTVCO0FBQ0EsUUFBSSxnQ0FBU3NHLE9BQVQsRUFBa0JoSixFQUFFbUMsSUFBcEIsQ0FBSixFQUErQixDQUM3QixJQUFNOEcsZUFBZWpKLEVBQUVtQyxJQUFGLEtBQVcsOEJBQVgsR0FDakIsQ0FBQ25DLEVBQUUrSSxFQUFGLElBQVEvSSxFQUFFbEIsSUFBWCxFQUFpQkEsSUFEQSxHQUVoQmtCLEVBQUVrSixVQUFGLElBQWdCbEosRUFBRWtKLFVBQUYsQ0FBYXBLLElBQTdCLElBQXNDa0IsRUFBRWtKLFVBQUYsQ0FBYUgsRUFBYixJQUFtQi9JLEVBQUVrSixVQUFGLENBQWFILEVBQWIsQ0FBZ0JqSyxJQUF6RSxJQUFrRixJQUZ2RixDQUdBLElBQU1xSyxZQUFZLENBQ2hCLHFCQURnQixFQUVoQixrQkFGZ0IsRUFHaEIsbUJBSGdCLEVBSWhCLG1CQUpnQixFQUtoQix3QkFMZ0IsRUFNaEIsd0JBTmdCLEVBT2hCLDRCQVBnQixFQVFoQixxQkFSZ0IsQ0FBbEIsQ0FVQSxJQUFNQyxnQkFBZ0JsRixJQUFJeUUsSUFBSixDQUFTVSxNQUFULENBQWdCLHNCQUFHbEgsSUFBSCxTQUFHQSxJQUFILENBQVM0RyxFQUFULFNBQVNBLEVBQVQsQ0FBYWxFLFlBQWIsU0FBYUEsWUFBYixRQUFnQyxnQ0FBU3NFLFNBQVQsRUFBb0JoSCxJQUFwQixNQUNuRTRHLE1BQU1BLEdBQUdqSyxJQUFILEtBQVltSyxZQUFuQixJQUFxQ3BFLGdCQUFnQkEsYUFBYWlFLElBQWIsQ0FBa0IsVUFBQzNJLENBQUQsVUFBT0EsRUFBRTRJLEVBQUYsQ0FBS2pLLElBQUwsS0FBY21LLFlBQXJCLEVBQWxCLENBRGUsQ0FBaEMsRUFBaEIsQ0FBdEIsQ0FHQSxJQUFJRyxjQUFjM0gsTUFBZCxLQUF5QixDQUE3QixFQUFnQyxDQUM5QjtBQUNBc0MsVUFBRXhGLFNBQUYsQ0FBWW1GLEdBQVosQ0FBZ0IsU0FBaEIsRUFBMkJ6QyxXQUFXVCxNQUFYLEVBQW1CVSxlQUFuQixFQUFvQ2xCLENBQXBDLENBQTNCLEVBQ0EsT0FDRCxDQUNELElBQ0VnRSxzQkFBc0I7QUFBdEIsU0FDRyxDQUFDRCxFQUFFeEYsU0FBRixDQUFZUSxHQUFaLENBQWdCLFNBQWhCLENBRk4sQ0FFaUM7QUFGakMsUUFHRSxDQUNBZ0YsRUFBRXhGLFNBQUYsQ0FBWW1GLEdBQVosQ0FBZ0IsU0FBaEIsRUFBMkIsRUFBM0IsRUFEQSxDQUNnQztBQUNqQyxTQUNEMEYsY0FBY3RKLE9BQWQsQ0FBc0IsVUFBQ3dKLElBQUQsRUFBVSxDQUM5QixJQUFJQSxLQUFLbkgsSUFBTCxLQUFjLHFCQUFsQixFQUF5QyxDQUN2QyxJQUFJbUgsS0FBS1gsSUFBTCxJQUFhVyxLQUFLWCxJQUFMLENBQVV4RyxJQUFWLEtBQW1CLHFCQUFwQyxFQUEyRCxDQUN6RDRCLEVBQUV4RixTQUFGLENBQVltRixHQUFaLENBQWdCNEYsS0FBS1gsSUFBTCxDQUFVSSxFQUFWLENBQWFqSyxJQUE3QixFQUFtQ21DLFdBQVdULE1BQVgsRUFBbUJVLGVBQW5CLEVBQW9Db0ksS0FBS1gsSUFBekMsQ0FBbkMsRUFDRCxDQUZELE1BRU8sSUFBSVcsS0FBS1gsSUFBTCxJQUFhVyxLQUFLWCxJQUFMLENBQVVBLElBQTNCLEVBQWlDLENBQ3RDVyxLQUFLWCxJQUFMLENBQVVBLElBQVYsQ0FBZTdJLE9BQWYsQ0FBdUIsVUFBQ3lKLGVBQUQsRUFBcUIsQ0FDMUM7QUFDQTtBQUNBLGtCQUFNQyxnQkFBZ0JELGdCQUFnQnBILElBQWhCLEtBQXlCLHdCQUF6QixHQUNwQm9ILGdCQUFnQmxKLFdBREksR0FFcEJrSixlQUZGLENBSUEsSUFBSSxDQUFDQyxhQUFMLEVBQW9CLENBQ2xCO0FBQ0QsZUFGRCxNQUVPLElBQUlBLGNBQWNySCxJQUFkLEtBQXVCLHFCQUEzQixFQUFrRCxDQUN2RHFILGNBQWMzRSxZQUFkLENBQTJCL0UsT0FBM0IsQ0FBbUMsVUFBQ0ssQ0FBRCxVQUNqQ3JDLHdCQUF3QnFDLEVBQUU0SSxFQUExQixFQUE4QixVQUFDQSxFQUFELFVBQVFoRixFQUFFeEYsU0FBRixDQUFZbUYsR0FBWixDQUNwQ3FGLEdBQUdqSyxJQURpQyxFQUVwQ21DLFdBQVdULE1BQVgsRUFBbUJVLGVBQW5CLEVBQW9Db0ksSUFBcEMsRUFBMENFLGFBQTFDLEVBQXlERCxlQUF6RCxDQUZvQyxDQUFSLEVBQTlCLENBRGlDLEVBQW5DLEVBTUQsQ0FQTSxNQU9BLENBQ0x4RixFQUFFeEYsU0FBRixDQUFZbUYsR0FBWixDQUNFOEYsY0FBY1QsRUFBZCxDQUFpQmpLLElBRG5CLEVBRUVtQyxXQUFXVCxNQUFYLEVBQW1CVSxlQUFuQixFQUFvQ3FJLGVBQXBDLENBRkYsRUFHRCxDQUNGLENBckJELEVBc0JELENBQ0YsQ0EzQkQsTUEyQk8sQ0FDTDtBQUNBeEYsWUFBRXhGLFNBQUYsQ0FBWW1GLEdBQVosQ0FBZ0IsU0FBaEIsRUFBMkJ6QyxXQUFXVCxNQUFYLEVBQW1CVSxlQUFuQixFQUFvQ29JLElBQXBDLENBQTNCLEVBQ0QsQ0FDRixDQWhDRCxFQWlDRCxDQUNGLENBaElELEVBa0lBLElBQ0V0RixzQkFBc0I7QUFBdEIsS0FDR0QsRUFBRXhGLFNBQUYsQ0FBWXlDLElBQVosR0FBbUIsQ0FEdEIsQ0FDd0I7QUFEeEIsS0FFRyxDQUFDK0MsRUFBRXhGLFNBQUYsQ0FBWVEsR0FBWixDQUFnQixTQUFoQixDQUhOLENBR2lDO0FBSGpDLElBSUUsQ0FDQWdGLEVBQUV4RixTQUFGLENBQVltRixHQUFaLENBQWdCLFNBQWhCLEVBQTJCLEVBQTNCLEVBREEsQ0FDZ0M7QUFDakMsS0FFRCxJQUFJMEIsZ0JBQUosRUFBc0IsQ0FDcEJyQixFQUFFbEYsU0FBRixHQUFjLFFBQWQsQ0FDRCxDQUNELE9BQU9rRixDQUFQLENBQ0QsQ0FsWEQsQyxDQW9YQTs7OzttRUFLQSxTQUFTYSxRQUFULENBQWtCTCxDQUFsQixFQUFxQm5FLE9BQXJCLEVBQThCLENBQzVCLE9BQU8sb0JBQU0vQixpQkFBYzZFLGFBQWFxQixDQUFiLEVBQWdCbkUsT0FBaEIsQ0FBZCxDQUFOLEVBQVAsQ0FDRCxDLENBR0Q7Ozs7OzsrS0FPTyxTQUFTdEMsdUJBQVQsQ0FBaUMyTCxPQUFqQyxFQUEwQzdKLFFBQTFDLEVBQW9ELENBQ3pELFFBQVE2SixRQUFRdEgsSUFBaEIsR0FDQSxLQUFLLFlBQUwsRUFBbUI7QUFDakJ2QyxlQUFTNkosT0FBVCxFQUNBLE1BRUYsS0FBSyxlQUFMLENBQ0VBLFFBQVFDLFVBQVIsQ0FBbUI1SixPQUFuQixDQUEyQixhQUFLLENBQzlCLElBQUl5RSxFQUFFcEMsSUFBRixLQUFXLDBCQUFYLElBQXlDb0MsRUFBRXBDLElBQUYsS0FBVyxhQUF4RCxFQUF1RSxDQUNyRXZDLFNBQVMyRSxFQUFFb0YsUUFBWCxFQUNBLE9BQ0QsQ0FDRDdMLHdCQUF3QnlHLEVBQUU3RCxLQUExQixFQUFpQ2QsUUFBakMsRUFDRCxDQU5ELEVBT0EsTUFFRixLQUFLLGNBQUwsQ0FDRTZKLFFBQVFHLFFBQVIsQ0FBaUI5SixPQUFqQixDQUF5QixVQUFDK0osT0FBRCxFQUFhLENBQ3BDLElBQUlBLFdBQVcsSUFBZixFQUFxQixPQUNyQixJQUFJQSxRQUFRMUgsSUFBUixLQUFpQiwwQkFBakIsSUFBK0MwSCxRQUFRMUgsSUFBUixLQUFpQixhQUFwRSxFQUFtRixDQUNqRnZDLFNBQVNpSyxRQUFRRixRQUFqQixFQUNBLE9BQ0QsQ0FDRDdMLHdCQUF3QitMLE9BQXhCLEVBQWlDakssUUFBakMsRUFDRCxDQVBELEVBUUEsTUFFRixLQUFLLG1CQUFMLENBQ0VBLFNBQVM2SixRQUFRSyxJQUFqQixFQUNBLE1BNUJGLENBOEJELEMsQ0FFRDs7eWpCQUdBLFNBQVM1RyxZQUFULENBQXNCNUUsSUFBdEIsRUFBNEI4QixPQUE1QixFQUFxQyxLQUMzQm1GLFFBRDJCLEdBQ2FuRixPQURiLENBQzNCbUYsUUFEMkIsQ0FDakJtQyxhQURpQixHQUNhdEgsT0FEYixDQUNqQnNILGFBRGlCLENBQ0ZxQyxVQURFLEdBQ2EzSixPQURiLENBQ0YySixVQURFLENBRW5DLE9BQU8sRUFDTHhFLGtCQURLLEVBRUxtQyw0QkFGSyxFQUdMcUMsc0JBSEssRUFJTHpMLFVBSkssRUFBUCxDQU1ELEMsQ0FHRDs7MHlCQUdBLFNBQVNnSixjQUFULENBQXdCMEMsSUFBeEIsRUFBOEI5RixHQUE5QixFQUFtQyxDQUNqQyxJQUFJK0YsbUJBQVd4SSxNQUFYLEdBQW9CLENBQXhCLEVBQTJCLENBQ3pCO0FBQ0EsV0FBTyxJQUFJd0ksa0JBQUosQ0FBZUQsSUFBZixFQUFxQjlGLEdBQXJCLENBQVAsQ0FDRCxDQUhELE1BR08sQ0FDTDtBQUNBLFdBQU8sSUFBSStGLGtCQUFKLENBQWUsRUFBRUQsVUFBRixFQUFROUYsUUFBUixFQUFmLENBQVAsQ0FDRCxDQUNGIiwiZmlsZSI6IkV4cG9ydE1hcC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCBkb2N0cmluZSBmcm9tICdkb2N0cmluZSc7XG5cbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmltcG9ydCB7IFNvdXJjZUNvZGUgfSBmcm9tICdlc2xpbnQnO1xuXG5pbXBvcnQgcGFyc2UgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9wYXJzZSc7XG5pbXBvcnQgdmlzaXQgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy92aXNpdCc7XG5pbXBvcnQgcmVzb2x2ZSBmcm9tICdlc2xpbnQtbW9kdWxlLXV0aWxzL3Jlc29sdmUnO1xuaW1wb3J0IGlzSWdub3JlZCwgeyBoYXNWYWxpZEV4dGVuc2lvbiB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvaWdub3JlJztcblxuaW1wb3J0IHsgaGFzaE9iamVjdCB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvaGFzaCc7XG5pbXBvcnQgKiBhcyB1bmFtYmlndW91cyBmcm9tICdlc2xpbnQtbW9kdWxlLXV0aWxzL3VuYW1iaWd1b3VzJztcblxuaW1wb3J0IHsgdHNDb25maWdMb2FkZXIgfSBmcm9tICd0c2NvbmZpZy1wYXRocy9saWIvdHNjb25maWctbG9hZGVyJztcblxuaW1wb3J0IGluY2x1ZGVzIGZyb20gJ2FycmF5LWluY2x1ZGVzJztcblxubGV0IHRzO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnZXNsaW50LXBsdWdpbi1pbXBvcnQ6RXhwb3J0TWFwJyk7XG5cbmNvbnN0IGV4cG9ydENhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgdHNDb25maWdDYWNoZSA9IG5ldyBNYXAoKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb3J0TWFwIHtcbiAgY29uc3RydWN0b3IocGF0aCkge1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5uYW1lc3BhY2UgPSBuZXcgTWFwKCk7XG4gICAgLy8gdG9kbzogcmVzdHJ1Y3R1cmUgdG8ga2V5IG9uIHBhdGgsIHZhbHVlIGlzIHJlc29sdmVyICsgbWFwIG9mIG5hbWVzXG4gICAgdGhpcy5yZWV4cG9ydHMgPSBuZXcgTWFwKCk7XG4gICAgLyoqXG4gICAgICogc3Rhci1leHBvcnRzXG4gICAgICogQHR5cGUge1NldH0gb2YgKCkgPT4gRXhwb3J0TWFwXG4gICAgICovXG4gICAgdGhpcy5kZXBlbmRlbmNpZXMgPSBuZXcgU2V0KCk7XG4gICAgLyoqXG4gICAgICogZGVwZW5kZW5jaWVzIG9mIHRoaXMgbW9kdWxlIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IHJlLWV4cG9ydGVkXG4gICAgICogQHR5cGUge01hcH0gZnJvbSBwYXRoID0gKCkgPT4gRXhwb3J0TWFwXG4gICAgICovXG4gICAgdGhpcy5pbXBvcnRzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgLyoqXG4gICAgICogdHlwZSB7J2FtYmlndW91cycgfCAnTW9kdWxlJyB8ICdTY3JpcHQnfVxuICAgICAqL1xuICAgIHRoaXMucGFyc2VHb2FsID0gJ2FtYmlndW91cyc7XG4gIH1cblxuICBnZXQgaGFzRGVmYXVsdCgpIHsgcmV0dXJuIHRoaXMuZ2V0KCdkZWZhdWx0JykgIT0gbnVsbDsgfSAvLyBzdHJvbmdlciB0aGFuIHRoaXMuaGFzXG5cbiAgZ2V0IHNpemUoKSB7XG4gICAgbGV0IHNpemUgPSB0aGlzLm5hbWVzcGFjZS5zaXplICsgdGhpcy5yZWV4cG9ydHMuc2l6ZTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKGRlcCA9PiB7XG4gICAgICBjb25zdCBkID0gZGVwKCk7XG4gICAgICAvLyBDSlMgLyBpZ25vcmVkIGRlcGVuZGVuY2llcyB3b24ndCBleGlzdCAoIzcxNylcbiAgICAgIGlmIChkID09IG51bGwpIHJldHVybjtcbiAgICAgIHNpemUgKz0gZC5zaXplO1xuICAgIH0pO1xuICAgIHJldHVybiBzaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGNoZWNrIGV4cGxpY2l0bHkgcmUtZXhwb3J0ZWQgbmFtZXMgZm9yIGV4aXN0ZW5jZVxuICAgKiBpbiB0aGUgYmFzZSBuYW1lc3BhY2UsIGJ1dCBpdCB3aWxsIGV4cGFuZCBhbGwgYGV4cG9ydCAqIGZyb20gJy4uLidgIGV4cG9ydHNcbiAgICogaWYgbm90IGZvdW5kIGluIHRoZSBleHBsaWNpdCBuYW1lc3BhY2UuXG4gICAqIEBwYXJhbSAge3N0cmluZ30gIG5hbWVcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiBgbmFtZWAgaXMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuXG4gICAqL1xuICBoYXMobmFtZSkge1xuICAgIGlmICh0aGlzLm5hbWVzcGFjZS5oYXMobmFtZSkpIHJldHVybiB0cnVlO1xuICAgIGlmICh0aGlzLnJlZXhwb3J0cy5oYXMobmFtZSkpIHJldHVybiB0cnVlO1xuXG4gICAgLy8gZGVmYXVsdCBleHBvcnRzIG11c3QgYmUgZXhwbGljaXRseSByZS1leHBvcnRlZCAoIzMyOClcbiAgICBpZiAobmFtZSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICBmb3IgKGNvbnN0IGRlcCBvZiB0aGlzLmRlcGVuZGVuY2llcykge1xuICAgICAgICBjb25zdCBpbm5lck1hcCA9IGRlcCgpO1xuXG4gICAgICAgIC8vIHRvZG86IHJlcG9ydCBhcyB1bnJlc29sdmVkP1xuICAgICAgICBpZiAoIWlubmVyTWFwKSBjb250aW51ZTtcblxuICAgICAgICBpZiAoaW5uZXJNYXAuaGFzKG5hbWUpKSByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogZW5zdXJlIHRoYXQgaW1wb3J0ZWQgbmFtZSBmdWxseSByZXNvbHZlcy5cbiAgICogQHBhcmFtICB7c3RyaW5nfSBuYW1lXG4gICAqIEByZXR1cm4ge3sgZm91bmQ6IGJvb2xlYW4sIHBhdGg6IEV4cG9ydE1hcFtdIH19XG4gICAqL1xuICBoYXNEZWVwKG5hbWUpIHtcbiAgICBpZiAodGhpcy5uYW1lc3BhY2UuaGFzKG5hbWUpKSByZXR1cm4geyBmb3VuZDogdHJ1ZSwgcGF0aDogW3RoaXNdIH07XG5cbiAgICBpZiAodGhpcy5yZWV4cG9ydHMuaGFzKG5hbWUpKSB7XG4gICAgICBjb25zdCByZWV4cG9ydHMgPSB0aGlzLnJlZXhwb3J0cy5nZXQobmFtZSk7XG4gICAgICBjb25zdCBpbXBvcnRlZCA9IHJlZXhwb3J0cy5nZXRJbXBvcnQoKTtcblxuICAgICAgLy8gaWYgaW1wb3J0IGlzIGlnbm9yZWQsIHJldHVybiBleHBsaWNpdCAnbnVsbCdcbiAgICAgIGlmIChpbXBvcnRlZCA9PSBudWxsKSByZXR1cm4geyBmb3VuZDogdHJ1ZSwgcGF0aDogW3RoaXNdIH07XG5cbiAgICAgIC8vIHNhZmVndWFyZCBhZ2FpbnN0IGN5Y2xlcywgb25seSBpZiBuYW1lIG1hdGNoZXNcbiAgICAgIGlmIChpbXBvcnRlZC5wYXRoID09PSB0aGlzLnBhdGggJiYgcmVleHBvcnRzLmxvY2FsID09PSBuYW1lKSB7XG4gICAgICAgIHJldHVybiB7IGZvdW5kOiBmYWxzZSwgcGF0aDogW3RoaXNdIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRlZXAgPSBpbXBvcnRlZC5oYXNEZWVwKHJlZXhwb3J0cy5sb2NhbCk7XG4gICAgICBkZWVwLnBhdGgudW5zaGlmdCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGRlZXA7XG4gICAgfVxuXG5cbiAgICAvLyBkZWZhdWx0IGV4cG9ydHMgbXVzdCBiZSBleHBsaWNpdGx5IHJlLWV4cG9ydGVkICgjMzI4KVxuICAgIGlmIChuYW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIGZvciAoY29uc3QgZGVwIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIGNvbnN0IGlubmVyTWFwID0gZGVwKCk7XG4gICAgICAgIGlmIChpbm5lck1hcCA9PSBudWxsKSByZXR1cm4geyBmb3VuZDogdHJ1ZSwgcGF0aDogW3RoaXNdIH07XG4gICAgICAgIC8vIHRvZG86IHJlcG9ydCBhcyB1bnJlc29sdmVkP1xuICAgICAgICBpZiAoIWlubmVyTWFwKSBjb250aW51ZTtcblxuICAgICAgICAvLyBzYWZlZ3VhcmQgYWdhaW5zdCBjeWNsZXNcbiAgICAgICAgaWYgKGlubmVyTWFwLnBhdGggPT09IHRoaXMucGF0aCkgY29udGludWU7XG5cbiAgICAgICAgY29uc3QgaW5uZXJWYWx1ZSA9IGlubmVyTWFwLmhhc0RlZXAobmFtZSk7XG4gICAgICAgIGlmIChpbm5lclZhbHVlLmZvdW5kKSB7XG4gICAgICAgICAgaW5uZXJWYWx1ZS5wYXRoLnVuc2hpZnQodGhpcyk7XG4gICAgICAgICAgcmV0dXJuIGlubmVyVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBmb3VuZDogZmFsc2UsIHBhdGg6IFt0aGlzXSB9O1xuICB9XG5cbiAgZ2V0KG5hbWUpIHtcbiAgICBpZiAodGhpcy5uYW1lc3BhY2UuaGFzKG5hbWUpKSByZXR1cm4gdGhpcy5uYW1lc3BhY2UuZ2V0KG5hbWUpO1xuXG4gICAgaWYgKHRoaXMucmVleHBvcnRzLmhhcyhuYW1lKSkge1xuICAgICAgY29uc3QgcmVleHBvcnRzID0gdGhpcy5yZWV4cG9ydHMuZ2V0KG5hbWUpO1xuICAgICAgY29uc3QgaW1wb3J0ZWQgPSByZWV4cG9ydHMuZ2V0SW1wb3J0KCk7XG5cbiAgICAgIC8vIGlmIGltcG9ydCBpcyBpZ25vcmVkLCByZXR1cm4gZXhwbGljaXQgJ251bGwnXG4gICAgICBpZiAoaW1wb3J0ZWQgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIC8vIHNhZmVndWFyZCBhZ2FpbnN0IGN5Y2xlcywgb25seSBpZiBuYW1lIG1hdGNoZXNcbiAgICAgIGlmIChpbXBvcnRlZC5wYXRoID09PSB0aGlzLnBhdGggJiYgcmVleHBvcnRzLmxvY2FsID09PSBuYW1lKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICByZXR1cm4gaW1wb3J0ZWQuZ2V0KHJlZXhwb3J0cy5sb2NhbCk7XG4gICAgfVxuXG4gICAgLy8gZGVmYXVsdCBleHBvcnRzIG11c3QgYmUgZXhwbGljaXRseSByZS1leHBvcnRlZCAoIzMyOClcbiAgICBpZiAobmFtZSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICBmb3IgKGNvbnN0IGRlcCBvZiB0aGlzLmRlcGVuZGVuY2llcykge1xuICAgICAgICBjb25zdCBpbm5lck1hcCA9IGRlcCgpO1xuICAgICAgICAvLyB0b2RvOiByZXBvcnQgYXMgdW5yZXNvbHZlZD9cbiAgICAgICAgaWYgKCFpbm5lck1hcCkgY29udGludWU7XG5cbiAgICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzXG4gICAgICAgIGlmIChpbm5lck1hcC5wYXRoID09PSB0aGlzLnBhdGgpIGNvbnRpbnVlO1xuXG4gICAgICAgIGNvbnN0IGlubmVyVmFsdWUgPSBpbm5lck1hcC5nZXQobmFtZSk7XG4gICAgICAgIGlmIChpbm5lclZhbHVlICE9PSB1bmRlZmluZWQpIHJldHVybiBpbm5lclZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBmb3JFYWNoKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gICAgdGhpcy5uYW1lc3BhY2UuZm9yRWFjaCgodiwgbikgPT5cbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdiwgbiwgdGhpcykpO1xuXG4gICAgdGhpcy5yZWV4cG9ydHMuZm9yRWFjaCgocmVleHBvcnRzLCBuYW1lKSA9PiB7XG4gICAgICBjb25zdCByZWV4cG9ydGVkID0gcmVleHBvcnRzLmdldEltcG9ydCgpO1xuICAgICAgLy8gY2FuJ3QgbG9vayB1cCBtZXRhIGZvciBpZ25vcmVkIHJlLWV4cG9ydHMgKCMzNDgpXG4gICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHJlZXhwb3J0ZWQgJiYgcmVleHBvcnRlZC5nZXQocmVleHBvcnRzLmxvY2FsKSwgbmFtZSwgdGhpcyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKGRlcCA9PiB7XG4gICAgICBjb25zdCBkID0gZGVwKCk7XG4gICAgICAvLyBDSlMgLyBpZ25vcmVkIGRlcGVuZGVuY2llcyB3b24ndCBleGlzdCAoIzcxNylcbiAgICAgIGlmIChkID09IG51bGwpIHJldHVybjtcblxuICAgICAgZC5mb3JFYWNoKCh2LCBuKSA9PlxuICAgICAgICBuICE9PSAnZGVmYXVsdCcgJiYgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB2LCBuLCB0aGlzKSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyB0b2RvOiBrZXlzLCB2YWx1ZXMsIGVudHJpZXM/XG5cbiAgcmVwb3J0RXJyb3JzKGNvbnRleHQsIGRlY2xhcmF0aW9uKSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgbm9kZTogZGVjbGFyYXRpb24uc291cmNlLFxuICAgICAgbWVzc2FnZTogYFBhcnNlIGVycm9ycyBpbiBpbXBvcnRlZCBtb2R1bGUgJyR7ZGVjbGFyYXRpb24uc291cmNlLnZhbHVlfSc6IGAgK1xuICAgICAgICAgICAgICAgICAgYCR7dGhpcy5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgLm1hcChlID0+IGAke2UubWVzc2FnZX0gKCR7ZS5saW5lTnVtYmVyfToke2UuY29sdW1ufSlgKVxuICAgICAgICAgICAgICAgICAgICAuam9pbignLCAnKX1gLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogcGFyc2UgZG9jcyBmcm9tIHRoZSBmaXJzdCBub2RlIHRoYXQgaGFzIGxlYWRpbmcgY29tbWVudHNcbiAqL1xuZnVuY3Rpb24gY2FwdHVyZURvYyhzb3VyY2UsIGRvY1N0eWxlUGFyc2VycywgLi4ubm9kZXMpIHtcbiAgY29uc3QgbWV0YWRhdGEgPSB7fTtcblxuICAvLyAnc29tZScgc2hvcnQtY2lyY3VpdHMgb24gZmlyc3QgJ3RydWUnXG4gIG5vZGVzLnNvbWUobiA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgbGV0IGxlYWRpbmdDb21tZW50cztcblxuICAgICAgLy8gbi5sZWFkaW5nQ29tbWVudHMgaXMgbGVnYWN5IGBhdHRhY2hDb21tZW50c2AgYmVoYXZpb3JcbiAgICAgIGlmICgnbGVhZGluZ0NvbW1lbnRzJyBpbiBuKSB7XG4gICAgICAgIGxlYWRpbmdDb21tZW50cyA9IG4ubGVhZGluZ0NvbW1lbnRzO1xuICAgICAgfSBlbHNlIGlmIChuLnJhbmdlKSB7XG4gICAgICAgIGxlYWRpbmdDb21tZW50cyA9IHNvdXJjZS5nZXRDb21tZW50c0JlZm9yZShuKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFsZWFkaW5nQ29tbWVudHMgfHwgbGVhZGluZ0NvbW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gZG9jU3R5bGVQYXJzZXJzKSB7XG4gICAgICAgIGNvbnN0IGRvYyA9IGRvY1N0eWxlUGFyc2Vyc1tuYW1lXShsZWFkaW5nQ29tbWVudHMpO1xuICAgICAgICBpZiAoZG9jKSB7XG4gICAgICAgICAgbWV0YWRhdGEuZG9jID0gZG9jO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGFkYXRhO1xufVxuXG5jb25zdCBhdmFpbGFibGVEb2NTdHlsZVBhcnNlcnMgPSB7XG4gIGpzZG9jOiBjYXB0dXJlSnNEb2MsXG4gIHRvbWRvYzogY2FwdHVyZVRvbURvYyxcbn07XG5cbi8qKlxuICogcGFyc2UgSlNEb2MgZnJvbSBsZWFkaW5nIGNvbW1lbnRzXG4gKiBAcGFyYW0ge29iamVjdFtdfSBjb21tZW50c1xuICogQHJldHVybiB7eyBkb2M6IG9iamVjdCB9fVxuICovXG5mdW5jdGlvbiBjYXB0dXJlSnNEb2MoY29tbWVudHMpIHtcbiAgbGV0IGRvYztcblxuICAvLyBjYXB0dXJlIFhTRG9jXG4gIGNvbW1lbnRzLmZvckVhY2goY29tbWVudCA9PiB7XG4gICAgLy8gc2tpcCBub24tYmxvY2sgY29tbWVudHNcbiAgICBpZiAoY29tbWVudC50eXBlICE9PSAnQmxvY2snKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGRvYyA9IGRvY3RyaW5lLnBhcnNlKGNvbW1lbnQudmFsdWUsIHsgdW53cmFwOiB0cnVlIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLyogZG9uJ3QgY2FyZSwgZm9yIG5vdz8gbWF5YmUgYWRkIHRvIGBlcnJvcnM/YCAqL1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGRvYztcbn1cblxuLyoqXG4gICogcGFyc2UgVG9tRG9jIHNlY3Rpb24gZnJvbSBjb21tZW50c1xuICAqL1xuZnVuY3Rpb24gY2FwdHVyZVRvbURvYyhjb21tZW50cykge1xuICAvLyBjb2xsZWN0IGxpbmVzIHVwIHRvIGZpcnN0IHBhcmFncmFwaCBicmVha1xuICBjb25zdCBsaW5lcyA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY29tbWVudCA9IGNvbW1lbnRzW2ldO1xuICAgIGlmIChjb21tZW50LnZhbHVlLm1hdGNoKC9eXFxzKiQvKSkgYnJlYWs7XG4gICAgbGluZXMucHVzaChjb21tZW50LnZhbHVlLnRyaW0oKSk7XG4gIH1cblxuICAvLyByZXR1cm4gZG9jdHJpbmUtbGlrZSBvYmplY3RcbiAgY29uc3Qgc3RhdHVzTWF0Y2ggPSBsaW5lcy5qb2luKCcgJykubWF0Y2goL14oUHVibGljfEludGVybmFsfERlcHJlY2F0ZWQpOlxccyooLispLyk7XG4gIGlmIChzdGF0dXNNYXRjaCkge1xuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogc3RhdHVzTWF0Y2hbMl0sXG4gICAgICB0YWdzOiBbe1xuICAgICAgICB0aXRsZTogc3RhdHVzTWF0Y2hbMV0udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHN0YXR1c01hdGNoWzJdLFxuICAgICAgfV0sXG4gICAgfTtcbiAgfVxufVxuXG5jb25zdCBzdXBwb3J0ZWRJbXBvcnRUeXBlcyA9IG5ldyBTZXQoWydJbXBvcnREZWZhdWx0U3BlY2lmaWVyJywgJ0ltcG9ydE5hbWVzcGFjZVNwZWNpZmllciddKTtcblxuRXhwb3J0TWFwLmdldCA9IGZ1bmN0aW9uIChzb3VyY2UsIGNvbnRleHQpIHtcbiAgY29uc3QgcGF0aCA9IHJlc29sdmUoc291cmNlLCBjb250ZXh0KTtcbiAgaWYgKHBhdGggPT0gbnVsbCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIEV4cG9ydE1hcC5mb3IoY2hpbGRDb250ZXh0KHBhdGgsIGNvbnRleHQpKTtcbn07XG5cbkV4cG9ydE1hcC5mb3IgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICBjb25zdCB7IHBhdGggfSA9IGNvbnRleHQ7XG5cbiAgY29uc3QgY2FjaGVLZXkgPSBoYXNoT2JqZWN0KGNvbnRleHQpLmRpZ2VzdCgnaGV4Jyk7XG4gIGxldCBleHBvcnRNYXAgPSBleHBvcnRDYWNoZS5nZXQoY2FjaGVLZXkpO1xuXG4gIC8vIHJldHVybiBjYWNoZWQgaWdub3JlXG4gIGlmIChleHBvcnRNYXAgPT09IG51bGwpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMocGF0aCk7XG4gIGlmIChleHBvcnRNYXAgIT0gbnVsbCkge1xuICAgIC8vIGRhdGUgZXF1YWxpdHkgY2hlY2tcbiAgICBpZiAoZXhwb3J0TWFwLm10aW1lIC0gc3RhdHMubXRpbWUgPT09IDApIHtcbiAgICAgIHJldHVybiBleHBvcnRNYXA7XG4gICAgfVxuICAgIC8vIGZ1dHVyZTogY2hlY2sgY29udGVudCBlcXVhbGl0eT9cbiAgfVxuXG4gIC8vIGNoZWNrIHZhbGlkIGV4dGVuc2lvbnMgZmlyc3RcbiAgaWYgKCFoYXNWYWxpZEV4dGVuc2lvbihwYXRoLCBjb250ZXh0KSkge1xuICAgIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgbnVsbCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBjaGVjayBmb3IgYW5kIGNhY2hlIGlnbm9yZVxuICBpZiAoaXNJZ25vcmVkKHBhdGgsIGNvbnRleHQpKSB7XG4gICAgbG9nKCdpZ25vcmVkIHBhdGggZHVlIHRvIGlnbm9yZSBzZXR0aW5nczonLCBwYXRoKTtcbiAgICBleHBvcnRDYWNoZS5zZXQoY2FjaGVLZXksIG51bGwpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhwYXRoLCB7IGVuY29kaW5nOiAndXRmOCcgfSk7XG5cbiAgLy8gY2hlY2sgZm9yIGFuZCBjYWNoZSB1bmFtYmlndW91cyBtb2R1bGVzXG4gIGlmICghdW5hbWJpZ3VvdXMudGVzdChjb250ZW50KSkge1xuICAgIGxvZygnaWdub3JlZCBwYXRoIGR1ZSB0byB1bmFtYmlndW91cyByZWdleDonLCBwYXRoKTtcbiAgICBleHBvcnRDYWNoZS5zZXQoY2FjaGVLZXksIG51bGwpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbG9nKCdjYWNoZSBtaXNzJywgY2FjaGVLZXksICdmb3IgcGF0aCcsIHBhdGgpO1xuICBleHBvcnRNYXAgPSBFeHBvcnRNYXAucGFyc2UocGF0aCwgY29udGVudCwgY29udGV4dCk7XG5cbiAgLy8gYW1iaWd1b3VzIG1vZHVsZXMgcmV0dXJuIG51bGxcbiAgaWYgKGV4cG9ydE1hcCA9PSBudWxsKSB7XG4gICAgbG9nKCdpZ25vcmVkIHBhdGggZHVlIHRvIGFtYmlndW91cyBwYXJzZTonLCBwYXRoKTtcbiAgICBleHBvcnRDYWNoZS5zZXQoY2FjaGVLZXksIG51bGwpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZXhwb3J0TWFwLm10aW1lID0gc3RhdHMubXRpbWU7XG5cbiAgZXhwb3J0Q2FjaGUuc2V0KGNhY2hlS2V5LCBleHBvcnRNYXApO1xuICByZXR1cm4gZXhwb3J0TWFwO1xufTtcblxuXG5FeHBvcnRNYXAucGFyc2UgPSBmdW5jdGlvbiAocGF0aCwgY29udGVudCwgY29udGV4dCkge1xuICBjb25zdCBtID0gbmV3IEV4cG9ydE1hcChwYXRoKTtcbiAgY29uc3QgaXNFc01vZHVsZUludGVyb3BUcnVlID0gaXNFc01vZHVsZUludGVyb3AoKTtcblxuICBsZXQgYXN0O1xuICBsZXQgdmlzaXRvcktleXM7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gcGFyc2UocGF0aCwgY29udGVudCwgY29udGV4dCk7XG4gICAgYXN0ID0gcmVzdWx0LmFzdDtcbiAgICB2aXNpdG9yS2V5cyA9IHJlc3VsdC52aXNpdG9yS2V5cztcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbS5lcnJvcnMucHVzaChlcnIpO1xuICAgIHJldHVybiBtOyAvLyBjYW4ndCBjb250aW51ZVxuICB9XG5cbiAgbS52aXNpdG9yS2V5cyA9IHZpc2l0b3JLZXlzO1xuXG4gIGxldCBoYXNEeW5hbWljSW1wb3J0cyA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHByb2Nlc3NEeW5hbWljSW1wb3J0KHNvdXJjZSkge1xuICAgIGhhc0R5bmFtaWNJbXBvcnRzID0gdHJ1ZTtcbiAgICBpZiAoc291cmNlLnR5cGUgIT09ICdMaXRlcmFsJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHAgPSByZW1vdGVQYXRoKHNvdXJjZS52YWx1ZSk7XG4gICAgaWYgKHAgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGltcG9ydGVkU3BlY2lmaWVycyA9IG5ldyBTZXQoKTtcbiAgICBpbXBvcnRlZFNwZWNpZmllcnMuYWRkKCdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInKTtcbiAgICBjb25zdCBnZXR0ZXIgPSB0aHVua0ZvcihwLCBjb250ZXh0KTtcbiAgICBtLmltcG9ydHMuc2V0KHAsIHtcbiAgICAgIGdldHRlcixcbiAgICAgIGRlY2xhcmF0aW9uczogbmV3IFNldChbe1xuICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgLy8gY2FwdHVyaW5nIGFjdHVhbCBub2RlIHJlZmVyZW5jZSBob2xkcyBmdWxsIEFTVCBpbiBtZW1vcnkhXG4gICAgICAgICAgdmFsdWU6IHNvdXJjZS52YWx1ZSxcbiAgICAgICAgICBsb2M6IHNvdXJjZS5sb2MsXG4gICAgICAgIH0sXG4gICAgICAgIGltcG9ydGVkU3BlY2lmaWVycyxcbiAgICAgICAgZHluYW1pYzogdHJ1ZSxcbiAgICAgIH1dKSxcbiAgICB9KTtcbiAgfVxuXG4gIHZpc2l0KGFzdCwgdmlzaXRvcktleXMsIHtcbiAgICBJbXBvcnRFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgIHByb2Nlc3NEeW5hbWljSW1wb3J0KG5vZGUuc291cmNlKTtcbiAgICB9LFxuICAgIENhbGxFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgIGlmIChub2RlLmNhbGxlZS50eXBlID09PSAnSW1wb3J0Jykge1xuICAgICAgICBwcm9jZXNzRHluYW1pY0ltcG9ydChub2RlLmFyZ3VtZW50c1swXSk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgdW5hbWJpZ3VvdXNseUVTTSA9IHVuYW1iaWd1b3VzLmlzTW9kdWxlKGFzdCk7XG4gIGlmICghdW5hbWJpZ3VvdXNseUVTTSAmJiAhaGFzRHluYW1pY0ltcG9ydHMpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGRvY3N0eWxlID0gKGNvbnRleHQuc2V0dGluZ3MgJiYgY29udGV4dC5zZXR0aW5nc1snaW1wb3J0L2RvY3N0eWxlJ10pIHx8IFsnanNkb2MnXTtcbiAgY29uc3QgZG9jU3R5bGVQYXJzZXJzID0ge307XG4gIGRvY3N0eWxlLmZvckVhY2goc3R5bGUgPT4ge1xuICAgIGRvY1N0eWxlUGFyc2Vyc1tzdHlsZV0gPSBhdmFpbGFibGVEb2NTdHlsZVBhcnNlcnNbc3R5bGVdO1xuICB9KTtcblxuICAvLyBhdHRlbXB0IHRvIGNvbGxlY3QgbW9kdWxlIGRvY1xuICBpZiAoYXN0LmNvbW1lbnRzKSB7XG4gICAgYXN0LmNvbW1lbnRzLnNvbWUoYyA9PiB7XG4gICAgICBpZiAoYy50eXBlICE9PSAnQmxvY2snKSByZXR1cm4gZmFsc2U7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkb2MgPSBkb2N0cmluZS5wYXJzZShjLnZhbHVlLCB7IHVud3JhcDogdHJ1ZSB9KTtcbiAgICAgICAgaWYgKGRvYy50YWdzLnNvbWUodCA9PiB0LnRpdGxlID09PSAnbW9kdWxlJykpIHtcbiAgICAgICAgICBtLmRvYyA9IGRvYztcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7IC8qIGlnbm9yZSAqLyB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBuYW1lc3BhY2VzID0gbmV3IE1hcCgpO1xuXG4gIGZ1bmN0aW9uIHJlbW90ZVBhdGgodmFsdWUpIHtcbiAgICByZXR1cm4gcmVzb2x2ZS5yZWxhdGl2ZSh2YWx1ZSwgcGF0aCwgY29udGV4dC5zZXR0aW5ncyk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNvbHZlSW1wb3J0KHZhbHVlKSB7XG4gICAgY29uc3QgcnAgPSByZW1vdGVQYXRoKHZhbHVlKTtcbiAgICBpZiAocnAgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIEV4cG9ydE1hcC5mb3IoY2hpbGRDb250ZXh0KHJwLCBjb250ZXh0KSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXROYW1lc3BhY2UoaWRlbnRpZmllcikge1xuICAgIGlmICghbmFtZXNwYWNlcy5oYXMoaWRlbnRpZmllci5uYW1lKSkgcmV0dXJuO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiByZXNvbHZlSW1wb3J0KG5hbWVzcGFjZXMuZ2V0KGlkZW50aWZpZXIubmFtZSkpO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBhZGROYW1lc3BhY2Uob2JqZWN0LCBpZGVudGlmaWVyKSB7XG4gICAgY29uc3QgbnNmbiA9IGdldE5hbWVzcGFjZShpZGVudGlmaWVyKTtcbiAgICBpZiAobnNmbikge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ25hbWVzcGFjZScsIHsgZ2V0OiBuc2ZuIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cblxuICBmdW5jdGlvbiBwcm9jZXNzU3BlY2lmaWVyKHMsIG4sIG0pIHtcbiAgICBjb25zdCBuc291cmNlID0gbi5zb3VyY2UgJiYgbi5zb3VyY2UudmFsdWU7XG4gICAgY29uc3QgZXhwb3J0TWV0YSA9IHt9O1xuICAgIGxldCBsb2NhbDtcblxuICAgIHN3aXRjaCAocy50eXBlKSB7XG4gICAgY2FzZSAnRXhwb3J0RGVmYXVsdFNwZWNpZmllcic6XG4gICAgICBpZiAoIW5zb3VyY2UpIHJldHVybjtcbiAgICAgIGxvY2FsID0gJ2RlZmF1bHQnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyJzpcbiAgICAgIG0ubmFtZXNwYWNlLnNldChzLmV4cG9ydGVkLm5hbWUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRNZXRhLCAnbmFtZXNwYWNlJywge1xuICAgICAgICBnZXQoKSB7IHJldHVybiByZXNvbHZlSW1wb3J0KG5zb3VyY2UpOyB9LFxuICAgICAgfSkpO1xuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgJ0V4cG9ydEFsbERlY2xhcmF0aW9uJzpcbiAgICAgIG0ubmFtZXNwYWNlLnNldChzLmV4cG9ydGVkLm5hbWUgfHwgcy5leHBvcnRlZC52YWx1ZSwgYWRkTmFtZXNwYWNlKGV4cG9ydE1ldGEsIHMuc291cmNlLnZhbHVlKSk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSAnRXhwb3J0U3BlY2lmaWVyJzpcbiAgICAgIGlmICghbi5zb3VyY2UpIHtcbiAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KHMuZXhwb3J0ZWQubmFtZSB8fCBzLmV4cG9ydGVkLnZhbHVlLCBhZGROYW1lc3BhY2UoZXhwb3J0TWV0YSwgcy5sb2NhbCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBlbHNlIGZhbGxzIHRocm91Z2hcbiAgICBkZWZhdWx0OlxuICAgICAgbG9jYWwgPSBzLmxvY2FsLm5hbWU7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyB0b2RvOiBKU0RvY1xuICAgIG0ucmVleHBvcnRzLnNldChzLmV4cG9ydGVkLm5hbWUsIHsgbG9jYWwsIGdldEltcG9ydDogKCkgPT4gcmVzb2x2ZUltcG9ydChuc291cmNlKSB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhcHR1cmVEZXBlbmRlbmN5V2l0aFNwZWNpZmllcnMobikge1xuICAgIC8vIGltcG9ydCB0eXBlIHsgRm9vIH0gKFRTIGFuZCBGbG93KTsgaW1wb3J0IHR5cGVvZiB7IEZvbyB9IChGbG93KVxuICAgIGNvbnN0IGRlY2xhcmF0aW9uSXNUeXBlID0gbi5pbXBvcnRLaW5kID09PSAndHlwZScgfHwgbi5pbXBvcnRLaW5kID09PSAndHlwZW9mJztcbiAgICAvLyBpbXBvcnQgJy4vZm9vJyBvciBpbXBvcnQge30gZnJvbSAnLi9mb28nIChib3RoIDAgc3BlY2lmaWVycykgaXMgYSBzaWRlIGVmZmVjdCBhbmRcbiAgICAvLyBzaG91bGRuJ3QgYmUgY29uc2lkZXJlZCB0byBiZSBqdXN0IGltcG9ydGluZyB0eXBlc1xuICAgIGxldCBzcGVjaWZpZXJzT25seUltcG9ydGluZ1R5cGVzID0gbi5zcGVjaWZpZXJzLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgaW1wb3J0ZWRTcGVjaWZpZXJzID0gbmV3IFNldCgpO1xuICAgIG4uc3BlY2lmaWVycy5mb3JFYWNoKHNwZWNpZmllciA9PiB7XG4gICAgICBpZiAoc3BlY2lmaWVyLnR5cGUgPT09ICdJbXBvcnRTcGVjaWZpZXInKSB7XG4gICAgICAgIGltcG9ydGVkU3BlY2lmaWVycy5hZGQoc3BlY2lmaWVyLmltcG9ydGVkLm5hbWUgfHwgc3BlY2lmaWVyLmltcG9ydGVkLnZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydGVkSW1wb3J0VHlwZXMuaGFzKHNwZWNpZmllci50eXBlKSkge1xuICAgICAgICBpbXBvcnRlZFNwZWNpZmllcnMuYWRkKHNwZWNpZmllci50eXBlKTtcbiAgICAgIH1cblxuICAgICAgLy8gaW1wb3J0IHsgdHlwZSBGb28gfSAoRmxvdyk7IGltcG9ydCB7IHR5cGVvZiBGb28gfSAoRmxvdylcbiAgICAgIHNwZWNpZmllcnNPbmx5SW1wb3J0aW5nVHlwZXMgPSBzcGVjaWZpZXJzT25seUltcG9ydGluZ1R5cGVzXG4gICAgICAgICYmIChzcGVjaWZpZXIuaW1wb3J0S2luZCA9PT0gJ3R5cGUnIHx8IHNwZWNpZmllci5pbXBvcnRLaW5kID09PSAndHlwZW9mJyk7XG4gICAgfSk7XG4gICAgY2FwdHVyZURlcGVuZGVuY3kobiwgZGVjbGFyYXRpb25Jc1R5cGUgfHwgc3BlY2lmaWVyc09ubHlJbXBvcnRpbmdUeXBlcywgaW1wb3J0ZWRTcGVjaWZpZXJzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhcHR1cmVEZXBlbmRlbmN5KHsgc291cmNlIH0sIGlzT25seUltcG9ydGluZ1R5cGVzLCBpbXBvcnRlZFNwZWNpZmllcnMgPSBuZXcgU2V0KCkpIHtcbiAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgcCA9IHJlbW90ZVBhdGgoc291cmNlLnZhbHVlKTtcbiAgICBpZiAocCA9PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGRlY2xhcmF0aW9uTWV0YWRhdGEgPSB7XG4gICAgICAvLyBjYXB0dXJpbmcgYWN0dWFsIG5vZGUgcmVmZXJlbmNlIGhvbGRzIGZ1bGwgQVNUIGluIG1lbW9yeSFcbiAgICAgIHNvdXJjZTogeyB2YWx1ZTogc291cmNlLnZhbHVlLCBsb2M6IHNvdXJjZS5sb2MgfSxcbiAgICAgIGlzT25seUltcG9ydGluZ1R5cGVzLFxuICAgICAgaW1wb3J0ZWRTcGVjaWZpZXJzLFxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZyA9IG0uaW1wb3J0cy5nZXQocCk7XG4gICAgaWYgKGV4aXN0aW5nICE9IG51bGwpIHtcbiAgICAgIGV4aXN0aW5nLmRlY2xhcmF0aW9ucy5hZGQoZGVjbGFyYXRpb25NZXRhZGF0YSk7XG4gICAgICByZXR1cm4gZXhpc3RpbmcuZ2V0dGVyO1xuICAgIH1cblxuICAgIGNvbnN0IGdldHRlciA9IHRodW5rRm9yKHAsIGNvbnRleHQpO1xuICAgIG0uaW1wb3J0cy5zZXQocCwgeyBnZXR0ZXIsIGRlY2xhcmF0aW9uczogbmV3IFNldChbZGVjbGFyYXRpb25NZXRhZGF0YV0pIH0pO1xuICAgIHJldHVybiBnZXR0ZXI7XG4gIH1cblxuICBjb25zdCBzb3VyY2UgPSBtYWtlU291cmNlQ29kZShjb250ZW50LCBhc3QpO1xuXG4gIGZ1bmN0aW9uIHJlYWRUc0NvbmZpZyhjb250ZXh0KSB7XG4gICAgY29uc3QgdHNDb25maWdJbmZvID0gdHNDb25maWdMb2FkZXIoe1xuICAgICAgY3dkOlxuICAgICAgICAoY29udGV4dC5wYXJzZXJPcHRpb25zICYmIGNvbnRleHQucGFyc2VyT3B0aW9ucy50c2NvbmZpZ1Jvb3REaXIpIHx8XG4gICAgICAgIHByb2Nlc3MuY3dkKCksXG4gICAgICBnZXRFbnY6IChrZXkpID0+IHByb2Nlc3MuZW52W2tleV0sXG4gICAgfSk7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0c0NvbmZpZ0luZm8udHNDb25maWdQYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gUHJvamVjdHMgbm90IHVzaW5nIFR5cGVTY3JpcHQgd29uJ3QgaGF2ZSBgdHlwZXNjcmlwdGAgaW5zdGFsbGVkLlxuICAgICAgICBpZiAoIXRzKSB7IHRzID0gcmVxdWlyZSgndHlwZXNjcmlwdCcpOyB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG4gIFxuICAgICAgICBjb25zdCBjb25maWdGaWxlID0gdHMucmVhZENvbmZpZ0ZpbGUodHNDb25maWdJbmZvLnRzQ29uZmlnUGF0aCwgdHMuc3lzLnJlYWRGaWxlKTtcbiAgICAgICAgcmV0dXJuIHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KFxuICAgICAgICAgIGNvbmZpZ0ZpbGUuY29uZmlnLFxuICAgICAgICAgIHRzLnN5cyxcbiAgICAgICAgICBkaXJuYW1lKHRzQ29uZmlnSW5mby50c0NvbmZpZ1BhdGgpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIENhdGNoIGFueSBlcnJvcnNcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzRXNNb2R1bGVJbnRlcm9wKCkge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gaGFzaE9iamVjdCh7XG4gICAgICB0c2NvbmZpZ1Jvb3REaXI6IGNvbnRleHQucGFyc2VyT3B0aW9ucyAmJiBjb250ZXh0LnBhcnNlck9wdGlvbnMudHNjb25maWdSb290RGlyLFxuICAgIH0pLmRpZ2VzdCgnaGV4Jyk7XG4gICAgbGV0IHRzQ29uZmlnID0gdHNDb25maWdDYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgIGlmICh0eXBlb2YgdHNDb25maWcgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0c0NvbmZpZyA9IHJlYWRUc0NvbmZpZyhjb250ZXh0KTtcbiAgICAgIHRzQ29uZmlnQ2FjaGUuc2V0KGNhY2hlS2V5LCB0c0NvbmZpZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRzQ29uZmlnICYmIHRzQ29uZmlnLm9wdGlvbnMgPyB0c0NvbmZpZy5vcHRpb25zLmVzTW9kdWxlSW50ZXJvcCA6IGZhbHNlO1xuICB9XG5cbiAgYXN0LmJvZHkuZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nKSB7XG4gICAgICBjb25zdCBleHBvcnRNZXRhID0gY2FwdHVyZURvYyhzb3VyY2UsIGRvY1N0eWxlUGFyc2Vycywgbik7XG4gICAgICBpZiAobi5kZWNsYXJhdGlvbi50eXBlID09PSAnSWRlbnRpZmllcicpIHtcbiAgICAgICAgYWRkTmFtZXNwYWNlKGV4cG9ydE1ldGEsIG4uZGVjbGFyYXRpb24pO1xuICAgICAgfVxuICAgICAgbS5uYW1lc3BhY2Uuc2V0KCdkZWZhdWx0JywgZXhwb3J0TWV0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG4udHlwZSA9PT0gJ0V4cG9ydEFsbERlY2xhcmF0aW9uJykge1xuICAgICAgY29uc3QgZ2V0dGVyID0gY2FwdHVyZURlcGVuZGVuY3kobiwgbi5leHBvcnRLaW5kID09PSAndHlwZScpO1xuICAgICAgaWYgKGdldHRlcikgbS5kZXBlbmRlbmNpZXMuYWRkKGdldHRlcik7XG4gICAgICBpZiAobi5leHBvcnRlZCkge1xuICAgICAgICBwcm9jZXNzU3BlY2lmaWVyKG4sIG4uZXhwb3J0ZWQsIG0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNhcHR1cmUgbmFtZXNwYWNlcyBpbiBjYXNlIG9mIGxhdGVyIGV4cG9ydFxuICAgIGlmIChuLnR5cGUgPT09ICdJbXBvcnREZWNsYXJhdGlvbicpIHtcbiAgICAgIGNhcHR1cmVEZXBlbmRlbmN5V2l0aFNwZWNpZmllcnMobik7XG5cbiAgICAgIGNvbnN0IG5zID0gbi5zcGVjaWZpZXJzLmZpbmQocyA9PiBzLnR5cGUgPT09ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInKTtcbiAgICAgIGlmIChucykge1xuICAgICAgICBuYW1lc3BhY2VzLnNldChucy5sb2NhbC5uYW1lLCBuLnNvdXJjZS52YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG4udHlwZSA9PT0gJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nKSB7XG4gICAgICBjYXB0dXJlRGVwZW5kZW5jeVdpdGhTcGVjaWZpZXJzKG4pO1xuXG4gICAgICAvLyBjYXB0dXJlIGRlY2xhcmF0aW9uXG4gICAgICBpZiAobi5kZWNsYXJhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgIHN3aXRjaCAobi5kZWNsYXJhdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ0Z1bmN0aW9uRGVjbGFyYXRpb24nOlxuICAgICAgICBjYXNlICdDbGFzc0RlY2xhcmF0aW9uJzpcbiAgICAgICAgY2FzZSAnVHlwZUFsaWFzJzogLy8gZmxvd3R5cGUgd2l0aCBiYWJlbC1lc2xpbnQgcGFyc2VyXG4gICAgICAgIGNhc2UgJ0ludGVyZmFjZURlY2xhcmF0aW9uJzpcbiAgICAgICAgY2FzZSAnRGVjbGFyZUZ1bmN0aW9uJzpcbiAgICAgICAgY2FzZSAnVFNEZWNsYXJlRnVuY3Rpb24nOlxuICAgICAgICBjYXNlICdUU0VudW1EZWNsYXJhdGlvbic6XG4gICAgICAgIGNhc2UgJ1RTVHlwZUFsaWFzRGVjbGFyYXRpb24nOlxuICAgICAgICBjYXNlICdUU0ludGVyZmFjZURlY2xhcmF0aW9uJzpcbiAgICAgICAgY2FzZSAnVFNBYnN0cmFjdENsYXNzRGVjbGFyYXRpb24nOlxuICAgICAgICBjYXNlICdUU01vZHVsZURlY2xhcmF0aW9uJzpcbiAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQobi5kZWNsYXJhdGlvbi5pZC5uYW1lLCBjYXB0dXJlRG9jKHNvdXJjZSwgZG9jU3R5bGVQYXJzZXJzLCBuKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1ZhcmlhYmxlRGVjbGFyYXRpb24nOlxuICAgICAgICAgIG4uZGVjbGFyYXRpb24uZGVjbGFyYXRpb25zLmZvckVhY2goKGQpID0+XG4gICAgICAgICAgICByZWN1cnNpdmVQYXR0ZXJuQ2FwdHVyZShkLmlkLFxuICAgICAgICAgICAgICBpZCA9PiBtLm5hbWVzcGFjZS5zZXQoaWQubmFtZSwgY2FwdHVyZURvYyhzb3VyY2UsIGRvY1N0eWxlUGFyc2VycywgZCwgbikpKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbi5zcGVjaWZpZXJzLmZvckVhY2goKHMpID0+IHByb2Nlc3NTcGVjaWZpZXIocywgbiwgbSkpO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cG9ydHMgPSBbJ1RTRXhwb3J0QXNzaWdubWVudCddO1xuICAgIGlmIChpc0VzTW9kdWxlSW50ZXJvcFRydWUpIHtcbiAgICAgIGV4cG9ydHMucHVzaCgnVFNOYW1lc3BhY2VFeHBvcnREZWNsYXJhdGlvbicpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZG9lc24ndCBkZWNsYXJlIGFueXRoaW5nLCBidXQgY2hhbmdlcyB3aGF0J3MgYmVpbmcgZXhwb3J0ZWQuXG4gICAgaWYgKGluY2x1ZGVzKGV4cG9ydHMsIG4udHlwZSkpIHtcbiAgICAgIGNvbnN0IGV4cG9ydGVkTmFtZSA9IG4udHlwZSA9PT0gJ1RTTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb24nXG4gICAgICAgID8gKG4uaWQgfHwgbi5uYW1lKS5uYW1lXG4gICAgICAgIDogKG4uZXhwcmVzc2lvbiAmJiBuLmV4cHJlc3Npb24ubmFtZSB8fCAobi5leHByZXNzaW9uLmlkICYmIG4uZXhwcmVzc2lvbi5pZC5uYW1lKSB8fCBudWxsKTtcbiAgICAgIGNvbnN0IGRlY2xUeXBlcyA9IFtcbiAgICAgICAgJ1ZhcmlhYmxlRGVjbGFyYXRpb24nLFxuICAgICAgICAnQ2xhc3NEZWNsYXJhdGlvbicsXG4gICAgICAgICdUU0RlY2xhcmVGdW5jdGlvbicsXG4gICAgICAgICdUU0VudW1EZWNsYXJhdGlvbicsXG4gICAgICAgICdUU1R5cGVBbGlhc0RlY2xhcmF0aW9uJyxcbiAgICAgICAgJ1RTSW50ZXJmYWNlRGVjbGFyYXRpb24nLFxuICAgICAgICAnVFNBYnN0cmFjdENsYXNzRGVjbGFyYXRpb24nLFxuICAgICAgICAnVFNNb2R1bGVEZWNsYXJhdGlvbicsXG4gICAgICBdO1xuICAgICAgY29uc3QgZXhwb3J0ZWREZWNscyA9IGFzdC5ib2R5LmZpbHRlcigoeyB0eXBlLCBpZCwgZGVjbGFyYXRpb25zIH0pID0+IGluY2x1ZGVzKGRlY2xUeXBlcywgdHlwZSkgJiYgKFxuICAgICAgICAoaWQgJiYgaWQubmFtZSA9PT0gZXhwb3J0ZWROYW1lKSB8fCAoZGVjbGFyYXRpb25zICYmIGRlY2xhcmF0aW9ucy5maW5kKChkKSA9PiBkLmlkLm5hbWUgPT09IGV4cG9ydGVkTmFtZSkpXG4gICAgICApKTtcbiAgICAgIGlmIChleHBvcnRlZERlY2xzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBFeHBvcnQgaXMgbm90IHJlZmVyZW5jaW5nIGFueSBsb2NhbCBkZWNsYXJhdGlvbiwgbXVzdCBiZSByZS1leHBvcnRpbmdcbiAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KCdkZWZhdWx0JywgY2FwdHVyZURvYyhzb3VyY2UsIGRvY1N0eWxlUGFyc2VycywgbikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGlzRXNNb2R1bGVJbnRlcm9wVHJ1ZSAvLyBlc01vZHVsZUludGVyb3AgaXMgb24gaW4gdHNjb25maWdcbiAgICAgICAgJiYgIW0ubmFtZXNwYWNlLmhhcygnZGVmYXVsdCcpIC8vIGFuZCBkZWZhdWx0IGlzbid0IGFkZGVkIGFscmVhZHlcbiAgICAgICkge1xuICAgICAgICBtLm5hbWVzcGFjZS5zZXQoJ2RlZmF1bHQnLCB7fSk7IC8vIGFkZCBkZWZhdWx0IGV4cG9ydFxuICAgICAgfVxuICAgICAgZXhwb3J0ZWREZWNscy5mb3JFYWNoKChkZWNsKSA9PiB7XG4gICAgICAgIGlmIChkZWNsLnR5cGUgPT09ICdUU01vZHVsZURlY2xhcmF0aW9uJykge1xuICAgICAgICAgIGlmIChkZWNsLmJvZHkgJiYgZGVjbC5ib2R5LnR5cGUgPT09ICdUU01vZHVsZURlY2xhcmF0aW9uJykge1xuICAgICAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KGRlY2wuYm9keS5pZC5uYW1lLCBjYXB0dXJlRG9jKHNvdXJjZSwgZG9jU3R5bGVQYXJzZXJzLCBkZWNsLmJvZHkpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGRlY2wuYm9keSAmJiBkZWNsLmJvZHkuYm9keSkge1xuICAgICAgICAgICAgZGVjbC5ib2R5LmJvZHkuZm9yRWFjaCgobW9kdWxlQmxvY2tOb2RlKSA9PiB7XG4gICAgICAgICAgICAgIC8vIEV4cG9ydC1hc3NpZ25tZW50IGV4cG9ydHMgYWxsIG1lbWJlcnMgaW4gdGhlIG5hbWVzcGFjZSxcbiAgICAgICAgICAgICAgLy8gZXhwbGljaXRseSBleHBvcnRlZCBvciBub3QuXG4gICAgICAgICAgICAgIGNvbnN0IG5hbWVzcGFjZURlY2wgPSBtb2R1bGVCbG9ja05vZGUudHlwZSA9PT0gJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nID9cbiAgICAgICAgICAgICAgICBtb2R1bGVCbG9ja05vZGUuZGVjbGFyYXRpb24gOlxuICAgICAgICAgICAgICAgIG1vZHVsZUJsb2NrTm9kZTtcblxuICAgICAgICAgICAgICBpZiAoIW5hbWVzcGFjZURlY2wpIHtcbiAgICAgICAgICAgICAgICAvLyBUeXBlU2NyaXB0IGNhbiBjaGVjayB0aGlzIGZvciB1czsgd2UgbmVlZG4ndFxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZURlY2wudHlwZSA9PT0gJ1ZhcmlhYmxlRGVjbGFyYXRpb24nKSB7XG4gICAgICAgICAgICAgICAgbmFtZXNwYWNlRGVjbC5kZWNsYXJhdGlvbnMuZm9yRWFjaCgoZCkgPT5cbiAgICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKGQuaWQsIChpZCkgPT4gbS5uYW1lc3BhY2Uuc2V0KFxuICAgICAgICAgICAgICAgICAgICBpZC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlRG9jKHNvdXJjZSwgZG9jU3R5bGVQYXJzZXJzLCBkZWNsLCBuYW1lc3BhY2VEZWNsLCBtb2R1bGVCbG9ja05vZGUpLFxuICAgICAgICAgICAgICAgICAgKSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQoXG4gICAgICAgICAgICAgICAgICBuYW1lc3BhY2VEZWNsLmlkLm5hbWUsXG4gICAgICAgICAgICAgICAgICBjYXB0dXJlRG9jKHNvdXJjZSwgZG9jU3R5bGVQYXJzZXJzLCBtb2R1bGVCbG9ja05vZGUpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEV4cG9ydCBhcyBkZWZhdWx0XG4gICAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KCdkZWZhdWx0JywgY2FwdHVyZURvYyhzb3VyY2UsIGRvY1N0eWxlUGFyc2VycywgZGVjbCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChcbiAgICBpc0VzTW9kdWxlSW50ZXJvcFRydWUgLy8gZXNNb2R1bGVJbnRlcm9wIGlzIG9uIGluIHRzY29uZmlnXG4gICAgJiYgbS5uYW1lc3BhY2Uuc2l6ZSA+IDAgLy8gYW55dGhpbmcgaXMgZXhwb3J0ZWRcbiAgICAmJiAhbS5uYW1lc3BhY2UuaGFzKCdkZWZhdWx0JykgLy8gYW5kIGRlZmF1bHQgaXNuJ3QgYWRkZWQgYWxyZWFkeVxuICApIHtcbiAgICBtLm5hbWVzcGFjZS5zZXQoJ2RlZmF1bHQnLCB7fSk7IC8vIGFkZCBkZWZhdWx0IGV4cG9ydFxuICB9XG5cbiAgaWYgKHVuYW1iaWd1b3VzbHlFU00pIHtcbiAgICBtLnBhcnNlR29hbCA9ICdNb2R1bGUnO1xuICB9XG4gIHJldHVybiBtO1xufTtcblxuLyoqXG4gKiBUaGUgY3JlYXRpb24gb2YgdGhpcyBjbG9zdXJlIGlzIGlzb2xhdGVkIGZyb20gb3RoZXIgc2NvcGVzXG4gKiB0byBhdm9pZCBvdmVyLXJldGVudGlvbiBvZiB1bnJlbGF0ZWQgdmFyaWFibGVzLCB3aGljaCBoYXNcbiAqIGNhdXNlZCBtZW1vcnkgbGVha3MuIFNlZSAjMTI2Ni5cbiAqL1xuZnVuY3Rpb24gdGh1bmtGb3IocCwgY29udGV4dCkge1xuICByZXR1cm4gKCkgPT4gRXhwb3J0TWFwLmZvcihjaGlsZENvbnRleHQocCwgY29udGV4dCkpO1xufVxuXG5cbi8qKlxuICogVHJhdmVyc2UgYSBwYXR0ZXJuL2lkZW50aWZpZXIgbm9kZSwgY2FsbGluZyAnY2FsbGJhY2snXG4gKiBmb3IgZWFjaCBsZWFmIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gIHtub2RlfSAgIHBhdHRlcm5cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKHBhdHRlcm4sIGNhbGxiYWNrKSB7XG4gIHN3aXRjaCAocGF0dGVybi50eXBlKSB7XG4gIGNhc2UgJ0lkZW50aWZpZXInOiAvLyBiYXNlIGNhc2VcbiAgICBjYWxsYmFjayhwYXR0ZXJuKTtcbiAgICBicmVhaztcblxuICBjYXNlICdPYmplY3RQYXR0ZXJuJzpcbiAgICBwYXR0ZXJuLnByb3BlcnRpZXMuZm9yRWFjaChwID0+IHtcbiAgICAgIGlmIChwLnR5cGUgPT09ICdFeHBlcmltZW50YWxSZXN0UHJvcGVydHknIHx8IHAudHlwZSA9PT0gJ1Jlc3RFbGVtZW50Jykge1xuICAgICAgICBjYWxsYmFjayhwLmFyZ3VtZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUocC52YWx1ZSwgY2FsbGJhY2spO1xuICAgIH0pO1xuICAgIGJyZWFrO1xuXG4gIGNhc2UgJ0FycmF5UGF0dGVybic6XG4gICAgcGF0dGVybi5lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSByZXR1cm47XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnRXhwZXJpbWVudGFsUmVzdFByb3BlcnR5JyB8fCBlbGVtZW50LnR5cGUgPT09ICdSZXN0RWxlbWVudCcpIHtcbiAgICAgICAgY2FsbGJhY2soZWxlbWVudC5hcmd1bWVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKGVsZW1lbnQsIGNhbGxiYWNrKTtcbiAgICB9KTtcbiAgICBicmVhaztcblxuICBjYXNlICdBc3NpZ25tZW50UGF0dGVybic6XG4gICAgY2FsbGJhY2socGF0dGVybi5sZWZ0KTtcbiAgICBicmVhaztcbiAgfVxufVxuXG4vKipcbiAqIGRvbid0IGhvbGQgZnVsbCBjb250ZXh0IG9iamVjdCBpbiBtZW1vcnksIGp1c3QgZ3JhYiB3aGF0IHdlIG5lZWQuXG4gKi9cbmZ1bmN0aW9uIGNoaWxkQ29udGV4dChwYXRoLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc2V0dGluZ3MsIHBhcnNlck9wdGlvbnMsIHBhcnNlclBhdGggfSA9IGNvbnRleHQ7XG4gIHJldHVybiB7XG4gICAgc2V0dGluZ3MsXG4gICAgcGFyc2VyT3B0aW9ucyxcbiAgICBwYXJzZXJQYXRoLFxuICAgIHBhdGgsXG4gIH07XG59XG5cblxuLyoqXG4gKiBzb21ldGltZXMgbGVnYWN5IHN1cHBvcnQgaXNuJ3QgX3RoYXRfIGhhcmQuLi4gcmlnaHQ/XG4gKi9cbmZ1bmN0aW9uIG1ha2VTb3VyY2VDb2RlKHRleHQsIGFzdCkge1xuICBpZiAoU291cmNlQ29kZS5sZW5ndGggPiAxKSB7XG4gICAgLy8gRVNMaW50IDNcbiAgICByZXR1cm4gbmV3IFNvdXJjZUNvZGUodGV4dCwgYXN0KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBFU0xpbnQgNCwgNVxuICAgIHJldHVybiBuZXcgU291cmNlQ29kZSh7IHRleHQsIGFzdCB9KTtcbiAgfVxufVxuIl19
\ No newline at end of file
diff --git a/node_modules/eslint-plugin-import/lib/core/importType.js b/node_modules/eslint-plugin-import/lib/core/importType.js
index f77825795..6851c914e 100644
--- a/node_modules/eslint-plugin-import/lib/core/importType.js
+++ b/node_modules/eslint-plugin-import/lib/core/importType.js
@@ -13,6 +13,11 @@
+
+
+
+
+
isAbsolute = isAbsolute;exports.
@@ -50,6 +55,22 @@ isExternalModuleMain = isExternalModuleMain;exports.
+isScoped = isScoped;exports.
+
+
+
+
+isScopedMain = isScopedMain;exports['default'] =
+
+
+
+
+
+
+
+
+
+
@@ -65,12 +86,10 @@ isExternalModuleMain = isExternalModuleMain;exports.
-isScoped = isScoped;exports.
-isScopedMain = isScopedMain;exports.
@@ -101,11 +120,10 @@ isScopedMain = isScopedMain;exports.
-isScopedModule = isScopedModule;exports['default'] =
-resolveImportType;var _path = require('path');var _isCoreModule = require('is-core-module');var _isCoreModule2 = _interopRequireDefault(_isCoreModule);var _resolve = require('eslint-module-utils/resolve');var _resolve2 = _interopRequireDefault(_resolve);var _packagePath = require('./packagePath');function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}function baseModule(name) {if (isScoped(name)) {var _name$split = name.split('/'),_name$split2 = _slicedToArray(_name$split, 2),scope = _name$split2[0],_pkg = _name$split2[1];return String(scope) + '/' + String(_pkg);}var _name$split3 = name.split('/'),_name$split4 = _slicedToArray(_name$split3, 1),pkg = _name$split4[0];return pkg;}function isAbsolute(name) {return (0, _path.isAbsolute)(name);} // path is defined only when a resolver resolves to a non-standard path
-function isBuiltIn(name, settings, path) {if (path || !name) return false;var base = baseModule(name);var extras = settings && settings['import/core-modules'] || [];return (0, _isCoreModule2['default'])(base) || extras.indexOf(base) > -1;}function isExternalModule(name, settings, path, context) {if (arguments.length < 4) {throw new TypeError('isExternalModule: name, settings, path, and context are all required');}return isModule(name) && isExternalPath(name, settings, path, (0, _packagePath.getContextPackagePath)(context));}function isExternalModuleMain(name, settings, path, context) {return isModuleMain(name) && isExternalPath(name, settings, path, (0, _packagePath.getContextPackagePath)(context));}function isExternalPath(name, settings, path, packagePath) {var internalScope = settings && settings['import/internal-regex'];if (internalScope && new RegExp(internalScope).test(name)) {return false;}if (!path || (0, _path.relative)(packagePath, path).startsWith('..')) {return true;}var folders = settings && settings['import/external-module-folders'] || ['node_modules'];return folders.some(function (folder) {var folderPath = (0, _path.resolve)(packagePath, folder);var relativePath = (0, _path.relative)(folderPath, path);return !relativePath.startsWith('..');});}var moduleRegExp = /^\w/;function isModule(name) {return name && moduleRegExp.test(name);}var moduleMainRegExp = /^[\w]((?!\/).)*$/;function isModuleMain(name) {return name && moduleMainRegExp.test(name);}var scopedRegExp = /^@[^/]+\/?[^/]+/;function isScoped(name) {return name && scopedRegExp.test(name);}var scopedMainRegExp = /^@[^/]+\/?[^/]+$/;function isScopedMain(name) {return name && scopedMainRegExp.test(name);}function isRelativeToParent(name) {return (/^\.\.$|^\.\.[\\/]/.test(name));}var indexFiles = ['.', './', './index', './index.js'];function isIndex(name) {return indexFiles.indexOf(name) !== -1;}function isRelativeToSibling(name) {return (/^\.[\\/]/.test(name));}function typeTest(name, context, path) {var settings = context.settings;if (isAbsolute(name, settings, path)) {return 'absolute';}if (isBuiltIn(name, settings, path)) {return 'builtin';}if (isModule(name, settings, path) || isScoped(name, settings, path)) {var packagePath = (0, _packagePath.getContextPackagePath)(context);return isExternalPath(name, settings, path, packagePath) ? 'external' : 'internal';}if (isRelativeToParent(name, settings, path)) {return 'parent';}if (isIndex(name, settings, path)) {return 'index';}if (isRelativeToSibling(name, settings, path)) {return 'sibling';}return 'unknown';}function isScopedModule(name) {return name.indexOf('@') === 0 && !name.startsWith('@/');}function resolveImportType(name, context) {return typeTest(name, context, (0, _resolve2['default'])(name, context));
+resolveImportType;var _path = require('path');var _isCoreModule = require('is-core-module');var _isCoreModule2 = _interopRequireDefault(_isCoreModule);var _resolve = require('eslint-module-utils/resolve');var _resolve2 = _interopRequireDefault(_resolve);var _packagePath = require('./packagePath');function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}function baseModule(name) {if (isScoped(name)) {var _name$split = name.split('/'),_name$split2 = _slicedToArray(_name$split, 2),scope = _name$split2[0],_pkg = _name$split2[1];return String(scope) + '/' + String(_pkg);}var _name$split3 = name.split('/'),_name$split4 = _slicedToArray(_name$split3, 1),pkg = _name$split4[0];return pkg;}function isInternalRegexMatch(name, settings) {var internalScope = settings && settings['import/internal-regex'];return internalScope && new RegExp(internalScope).test(name);}function isAbsolute(name) {return typeof name === 'string' && (0, _path.isAbsolute)(name);} // path is defined only when a resolver resolves to a non-standard path
+function isBuiltIn(name, settings, path) {if (path || !name) return false;var base = baseModule(name);var extras = settings && settings['import/core-modules'] || [];return (0, _isCoreModule2['default'])(base) || extras.indexOf(base) > -1;}function isExternalModule(name, path, context) {if (arguments.length < 3) {throw new TypeError('isExternalModule: name, path, and context are all required');}return (isModule(name) || isScoped(name)) && typeTest(name, context, path) === 'external';}function isExternalModuleMain(name, path, context) {if (arguments.length < 3) {throw new TypeError('isExternalModule: name, path, and context are all required');}return isModuleMain(name) && typeTest(name, context, path) === 'external';}var moduleRegExp = /^\w/;function isModule(name) {return name && moduleRegExp.test(name);}var moduleMainRegExp = /^[\w]((?!\/).)*$/;function isModuleMain(name) {return name && moduleMainRegExp.test(name);}var scopedRegExp = /^@[^/]+\/?[^/]+/;function isScoped(name) {return name && scopedRegExp.test(name);}var scopedMainRegExp = /^@[^/]+\/?[^/]+$/;function isScopedMain(name) {return name && scopedMainRegExp.test(name);}function isRelativeToParent(name) {return (/^\.\.$|^\.\.[\\/]/.test(name));}var indexFiles = ['.', './', './index', './index.js'];function isIndex(name) {return indexFiles.indexOf(name) !== -1;}function isRelativeToSibling(name) {return (/^\.[\\/]/.test(name));}function isExternalPath(path, context) {if (!path) {return false;}var settings = context.settings;var packagePath = (0, _packagePath.getContextPackagePath)(context);if ((0, _path.relative)(packagePath, path).startsWith('..')) {return true;}var folders = settings && settings['import/external-module-folders'] || ['node_modules'];return folders.some(function (folder) {var folderPath = (0, _path.resolve)(packagePath, folder);var relativePath = (0, _path.relative)(folderPath, path);return !relativePath.startsWith('..');});}function isInternalPath(path, context) {if (!path) {return false;}var packagePath = (0, _packagePath.getContextPackagePath)(context);return !(0, _path.relative)(packagePath, path).startsWith('../');}function isExternalLookingName(name) {return isModule(name) || isScoped(name);}function typeTest(name, context, path) {var settings = context.settings;if (isInternalRegexMatch(name, settings)) {return 'internal';}if (isAbsolute(name, settings, path)) {return 'absolute';}if (isBuiltIn(name, settings, path)) {return 'builtin';}if (isRelativeToParent(name, settings, path)) {return 'parent';}if (isIndex(name, settings, path)) {return 'index';}if (isRelativeToSibling(name, settings, path)) {return 'sibling';}if (isExternalPath(path, context)) {return 'external';}if (isInternalPath(path, context)) {return 'internal';}if (isExternalLookingName(name)) {return 'external';}return 'unknown';}function resolveImportType(name, context) {return typeTest(name, context, (0, _resolve2['default'])(name, context));
}
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2ltcG9ydFR5cGUuanMiXSwibmFtZXMiOlsiaXNBYnNvbHV0ZSIsImlzQnVpbHRJbiIsImlzRXh0ZXJuYWxNb2R1bGUiLCJpc0V4dGVybmFsTW9kdWxlTWFpbiIsImlzU2NvcGVkIiwiaXNTY29wZWRNYWluIiwiaXNTY29wZWRNb2R1bGUiLCJyZXNvbHZlSW1wb3J0VHlwZSIsImJhc2VNb2R1bGUiLCJuYW1lIiwic3BsaXQiLCJzY29wZSIsInBrZyIsInNldHRpbmdzIiwicGF0aCIsImJhc2UiLCJleHRyYXMiLCJpbmRleE9mIiwiY29udGV4dCIsImFyZ3VtZW50cyIsImxlbmd0aCIsIlR5cGVFcnJvciIsImlzTW9kdWxlIiwiaXNFeHRlcm5hbFBhdGgiLCJpc01vZHVsZU1haW4iLCJwYWNrYWdlUGF0aCIsImludGVybmFsU2NvcGUiLCJSZWdFeHAiLCJ0ZXN0Iiwic3RhcnRzV2l0aCIsImZvbGRlcnMiLCJzb21lIiwiZm9sZGVyIiwiZm9sZGVyUGF0aCIsInJlbGF0aXZlUGF0aCIsIm1vZHVsZVJlZ0V4cCIsIm1vZHVsZU1haW5SZWdFeHAiLCJzY29wZWRSZWdFeHAiLCJzY29wZWRNYWluUmVnRXhwIiwiaXNSZWxhdGl2ZVRvUGFyZW50IiwiaW5kZXhGaWxlcyIsImlzSW5kZXgiLCJpc1JlbGF0aXZlVG9TaWJsaW5nIiwidHlwZVRlc3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQWVnQkEsVSxHQUFBQSxVOzs7OztBQUtBQyxTLEdBQUFBLFM7Ozs7Ozs7QUFPQUMsZ0IsR0FBQUEsZ0I7Ozs7Ozs7QUFPQUMsb0IsR0FBQUEsb0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlDQUMsUSxHQUFBQSxROzs7OztBQUtBQyxZLEdBQUFBLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQkFDLGMsR0FBQUEsYzs7OztBQUlRQyxpQixDQTNHeEIsNEJBQ0EsOEMsMkRBRUEsc0QsaURBQ0EsNEMsK0ZBRUEsU0FBU0MsVUFBVCxDQUFvQkMsSUFBcEIsRUFBMEIsQ0FDeEIsSUFBSUwsU0FBU0ssSUFBVCxDQUFKLEVBQW9CLG1CQUNHQSxLQUFLQyxLQUFMLENBQVcsR0FBWCxDQURILCtDQUNYQyxLQURXLG1CQUNKQyxJQURJLG1CQUVsQixjQUFVRCxLQUFWLGlCQUFtQkMsSUFBbkIsRUFDRCxDQUp1QixtQkFLVkgsS0FBS0MsS0FBTCxDQUFXLEdBQVgsQ0FMVSxnREFLakJFLEdBTGlCLG1CQU14QixPQUFPQSxHQUFQLENBQ0QsQ0FFTSxTQUFTWixVQUFULENBQW9CUyxJQUFwQixFQUEwQixDQUMvQixPQUFPLHNCQUFlQSxJQUFmLENBQVAsQ0FDRCxDLENBRUQ7QUFDTyxTQUFTUixTQUFULENBQW1CUSxJQUFuQixFQUF5QkksUUFBekIsRUFBbUNDLElBQW5DLEVBQXlDLENBQzlDLElBQUlBLFFBQVEsQ0FBQ0wsSUFBYixFQUFtQixPQUFPLEtBQVAsQ0FDbkIsSUFBTU0sT0FBT1AsV0FBV0MsSUFBWCxDQUFiLENBQ0EsSUFBTU8sU0FBVUgsWUFBWUEsU0FBUyxxQkFBVCxDQUFiLElBQWlELEVBQWhFLENBQ0EsT0FBTywrQkFBYUUsSUFBYixLQUFzQkMsT0FBT0MsT0FBUCxDQUFlRixJQUFmLElBQXVCLENBQUMsQ0FBckQsQ0FDRCxDQUVNLFNBQVNiLGdCQUFULENBQTBCTyxJQUExQixFQUFnQ0ksUUFBaEMsRUFBMENDLElBQTFDLEVBQWdESSxPQUFoRCxFQUF5RCxDQUM5RCxJQUFJQyxVQUFVQyxNQUFWLEdBQW1CLENBQXZCLEVBQTBCLENBQ3hCLE1BQU0sSUFBSUMsU0FBSixDQUFjLHNFQUFkLENBQU4sQ0FDRCxDQUNELE9BQU9DLFNBQVNiLElBQVQsS0FBa0JjLGVBQWVkLElBQWYsRUFBcUJJLFFBQXJCLEVBQStCQyxJQUEvQixFQUFxQyx3Q0FBc0JJLE9BQXRCLENBQXJDLENBQXpCLENBQ0QsQ0FFTSxTQUFTZixvQkFBVCxDQUE4Qk0sSUFBOUIsRUFBb0NJLFFBQXBDLEVBQThDQyxJQUE5QyxFQUFvREksT0FBcEQsRUFBNkQsQ0FDbEUsT0FBT00sYUFBYWYsSUFBYixLQUFzQmMsZUFBZWQsSUFBZixFQUFxQkksUUFBckIsRUFBK0JDLElBQS9CLEVBQXFDLHdDQUFzQkksT0FBdEIsQ0FBckMsQ0FBN0IsQ0FDRCxDQUVELFNBQVNLLGNBQVQsQ0FBd0JkLElBQXhCLEVBQThCSSxRQUE5QixFQUF3Q0MsSUFBeEMsRUFBOENXLFdBQTlDLEVBQTJELENBQ3pELElBQU1DLGdCQUFpQmIsWUFBWUEsU0FBUyx1QkFBVCxDQUFuQyxDQUNBLElBQUlhLGlCQUFpQixJQUFJQyxNQUFKLENBQVdELGFBQVgsRUFBMEJFLElBQTFCLENBQStCbkIsSUFBL0IsQ0FBckIsRUFBMkQsQ0FDekQsT0FBTyxLQUFQLENBQ0QsQ0FFRCxJQUFJLENBQUNLLElBQUQsSUFBUyxvQkFBU1csV0FBVCxFQUFzQlgsSUFBdEIsRUFBNEJlLFVBQTVCLENBQXVDLElBQXZDLENBQWIsRUFBMkQsQ0FDekQsT0FBTyxJQUFQLENBQ0QsQ0FFRCxJQUFNQyxVQUFXakIsWUFBWUEsU0FBUyxnQ0FBVCxDQUFiLElBQTRELENBQUMsY0FBRCxDQUE1RSxDQUNBLE9BQU9pQixRQUFRQyxJQUFSLENBQWEsVUFBQ0MsTUFBRCxFQUFZLENBQzlCLElBQU1DLGFBQWEsbUJBQVlSLFdBQVosRUFBeUJPLE1BQXpCLENBQW5CLENBQ0EsSUFBTUUsZUFBZSxvQkFBU0QsVUFBVCxFQUFxQm5CLElBQXJCLENBQXJCLENBQ0EsT0FBTyxDQUFDb0IsYUFBYUwsVUFBYixDQUF3QixJQUF4QixDQUFSLENBQ0QsQ0FKTSxDQUFQLENBS0QsQ0FFRCxJQUFNTSxlQUFlLEtBQXJCLENBQ0EsU0FBU2IsUUFBVCxDQUFrQmIsSUFBbEIsRUFBd0IsQ0FDdEIsT0FBT0EsUUFBUTBCLGFBQWFQLElBQWIsQ0FBa0JuQixJQUFsQixDQUFmLENBQ0QsQ0FFRCxJQUFNMkIsbUJBQW1CLGtCQUF6QixDQUNBLFNBQVNaLFlBQVQsQ0FBc0JmLElBQXRCLEVBQTRCLENBQzFCLE9BQU9BLFFBQVEyQixpQkFBaUJSLElBQWpCLENBQXNCbkIsSUFBdEIsQ0FBZixDQUNELENBRUQsSUFBTTRCLGVBQWUsaUJBQXJCLENBQ08sU0FBU2pDLFFBQVQsQ0FBa0JLLElBQWxCLEVBQXdCLENBQzdCLE9BQU9BLFFBQVE0QixhQUFhVCxJQUFiLENBQWtCbkIsSUFBbEIsQ0FBZixDQUNELENBRUQsSUFBTTZCLG1CQUFtQixrQkFBekIsQ0FDTyxTQUFTakMsWUFBVCxDQUFzQkksSUFBdEIsRUFBNEIsQ0FDakMsT0FBT0EsUUFBUTZCLGlCQUFpQlYsSUFBakIsQ0FBc0JuQixJQUF0QixDQUFmLENBQ0QsQ0FFRCxTQUFTOEIsa0JBQVQsQ0FBNEI5QixJQUE1QixFQUFrQyxDQUNoQyxPQUFNLHFCQUFvQm1CLElBQXBCLENBQXlCbkIsSUFBekIsQ0FBTixFQUNELENBRUQsSUFBTStCLGFBQWEsQ0FBQyxHQUFELEVBQU0sSUFBTixFQUFZLFNBQVosRUFBdUIsWUFBdkIsQ0FBbkIsQ0FDQSxTQUFTQyxPQUFULENBQWlCaEMsSUFBakIsRUFBdUIsQ0FDckIsT0FBTytCLFdBQVd2QixPQUFYLENBQW1CUixJQUFuQixNQUE2QixDQUFDLENBQXJDLENBQ0QsQ0FFRCxTQUFTaUMsbUJBQVQsQ0FBNkJqQyxJQUE3QixFQUFtQyxDQUNqQyxPQUFPLFlBQVdtQixJQUFYLENBQWdCbkIsSUFBaEIsQ0FBUCxFQUNELENBRUQsU0FBU2tDLFFBQVQsQ0FBa0JsQyxJQUFsQixFQUF3QlMsT0FBeEIsRUFBaUNKLElBQWpDLEVBQXVDLEtBQzdCRCxRQUQ2QixHQUNoQkssT0FEZ0IsQ0FDN0JMLFFBRDZCLENBRXJDLElBQUliLFdBQVdTLElBQVgsRUFBaUJJLFFBQWpCLEVBQTJCQyxJQUEzQixDQUFKLEVBQXNDLENBQUUsT0FBTyxVQUFQLENBQW9CLENBQzVELElBQUliLFVBQVVRLElBQVYsRUFBZ0JJLFFBQWhCLEVBQTBCQyxJQUExQixDQUFKLEVBQXFDLENBQUUsT0FBTyxTQUFQLENBQW1CLENBQzFELElBQUlRLFNBQVNiLElBQVQsRUFBZUksUUFBZixFQUF5QkMsSUFBekIsS0FBa0NWLFNBQVNLLElBQVQsRUFBZUksUUFBZixFQUF5QkMsSUFBekIsQ0FBdEMsRUFBc0UsQ0FDcEUsSUFBTVcsY0FBYyx3Q0FBc0JQLE9BQXRCLENBQXBCLENBQ0EsT0FBT0ssZUFBZWQsSUFBZixFQUFxQkksUUFBckIsRUFBK0JDLElBQS9CLEVBQXFDVyxXQUFyQyxJQUFvRCxVQUFwRCxHQUFpRSxVQUF4RSxDQUNELENBQ0QsSUFBSWMsbUJBQW1COUIsSUFBbkIsRUFBeUJJLFFBQXpCLEVBQW1DQyxJQUFuQyxDQUFKLEVBQThDLENBQUUsT0FBTyxRQUFQLENBQWtCLENBQ2xFLElBQUkyQixRQUFRaEMsSUFBUixFQUFjSSxRQUFkLEVBQXdCQyxJQUF4QixDQUFKLEVBQW1DLENBQUUsT0FBTyxPQUFQLENBQWlCLENBQ3RELElBQUk0QixvQkFBb0JqQyxJQUFwQixFQUEwQkksUUFBMUIsRUFBb0NDLElBQXBDLENBQUosRUFBK0MsQ0FBRSxPQUFPLFNBQVAsQ0FBbUIsQ0FDcEUsT0FBTyxTQUFQLENBQ0QsQ0FFTSxTQUFTUixjQUFULENBQXdCRyxJQUF4QixFQUE4QixDQUNuQyxPQUFPQSxLQUFLUSxPQUFMLENBQWEsR0FBYixNQUFzQixDQUF0QixJQUEyQixDQUFDUixLQUFLb0IsVUFBTCxDQUFnQixJQUFoQixDQUFuQyxDQUNELENBRWMsU0FBU3RCLGlCQUFULENBQTJCRSxJQUEzQixFQUFpQ1MsT0FBakMsRUFBMEMsQ0FDdkQsT0FBT3lCLFNBQVNsQyxJQUFULEVBQWVTLE9BQWYsRUFBd0IsMEJBQVFULElBQVIsRUFBY1MsT0FBZCxDQUF4QixDQUFQO0FBQ0QiLCJmaWxlIjoiaW1wb3J0VHlwZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQWJzb2x1dGUgYXMgbm9kZUlzQWJzb2x1dGUsIHJlbGF0aXZlLCByZXNvbHZlIGFzIG5vZGVSZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgaXNDb3JlTW9kdWxlIGZyb20gJ2lzLWNvcmUtbW9kdWxlJztcblxuaW1wb3J0IHJlc29sdmUgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9yZXNvbHZlJztcbmltcG9ydCB7IGdldENvbnRleHRQYWNrYWdlUGF0aCB9IGZyb20gJy4vcGFja2FnZVBhdGgnO1xuXG5mdW5jdGlvbiBiYXNlTW9kdWxlKG5hbWUpIHtcbiAgaWYgKGlzU2NvcGVkKG5hbWUpKSB7XG4gICAgY29uc3QgW3Njb3BlLCBwa2ddID0gbmFtZS5zcGxpdCgnLycpO1xuICAgIHJldHVybiBgJHtzY29wZX0vJHtwa2d9YDtcbiAgfVxuICBjb25zdCBbcGtnXSA9IG5hbWUuc3BsaXQoJy8nKTtcbiAgcmV0dXJuIHBrZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzb2x1dGUobmFtZSkge1xuICByZXR1cm4gbm9kZUlzQWJzb2x1dGUobmFtZSk7XG59XG5cbi8vIHBhdGggaXMgZGVmaW5lZCBvbmx5IHdoZW4gYSByZXNvbHZlciByZXNvbHZlcyB0byBhIG5vbi1zdGFuZGFyZCBwYXRoXG5leHBvcnQgZnVuY3Rpb24gaXNCdWlsdEluKG5hbWUsIHNldHRpbmdzLCBwYXRoKSB7XG4gIGlmIChwYXRoIHx8ICFuYW1lKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IGJhc2UgPSBiYXNlTW9kdWxlKG5hbWUpO1xuICBjb25zdCBleHRyYXMgPSAoc2V0dGluZ3MgJiYgc2V0dGluZ3NbJ2ltcG9ydC9jb3JlLW1vZHVsZXMnXSkgfHwgW107XG4gIHJldHVybiBpc0NvcmVNb2R1bGUoYmFzZSkgfHwgZXh0cmFzLmluZGV4T2YoYmFzZSkgPiAtMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWxNb2R1bGUobmFtZSwgc2V0dGluZ3MsIHBhdGgsIGNvbnRleHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCA0KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaXNFeHRlcm5hbE1vZHVsZTogbmFtZSwgc2V0dGluZ3MsIHBhdGgsIGFuZCBjb250ZXh0IGFyZSBhbGwgcmVxdWlyZWQnKTtcbiAgfVxuICByZXR1cm4gaXNNb2R1bGUobmFtZSkgJiYgaXNFeHRlcm5hbFBhdGgobmFtZSwgc2V0dGluZ3MsIHBhdGgsIGdldENvbnRleHRQYWNrYWdlUGF0aChjb250ZXh0KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVybmFsTW9kdWxlTWFpbihuYW1lLCBzZXR0aW5ncywgcGF0aCwgY29udGV4dCkge1xuICByZXR1cm4gaXNNb2R1bGVNYWluKG5hbWUpICYmIGlzRXh0ZXJuYWxQYXRoKG5hbWUsIHNldHRpbmdzLCBwYXRoLCBnZXRDb250ZXh0UGFja2FnZVBhdGgoY29udGV4dCkpO1xufVxuXG5mdW5jdGlvbiBpc0V4dGVybmFsUGF0aChuYW1lLCBzZXR0aW5ncywgcGF0aCwgcGFja2FnZVBhdGgpIHtcbiAgY29uc3QgaW50ZXJuYWxTY29wZSA9IChzZXR0aW5ncyAmJiBzZXR0aW5nc1snaW1wb3J0L2ludGVybmFsLXJlZ2V4J10pO1xuICBpZiAoaW50ZXJuYWxTY29wZSAmJiBuZXcgUmVnRXhwKGludGVybmFsU2NvcGUpLnRlc3QobmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIXBhdGggfHwgcmVsYXRpdmUocGFja2FnZVBhdGgsIHBhdGgpLnN0YXJ0c1dpdGgoJy4uJykpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGZvbGRlcnMgPSAoc2V0dGluZ3MgJiYgc2V0dGluZ3NbJ2ltcG9ydC9leHRlcm5hbC1tb2R1bGUtZm9sZGVycyddKSB8fCBbJ25vZGVfbW9kdWxlcyddO1xuICByZXR1cm4gZm9sZGVycy5zb21lKChmb2xkZXIpID0+IHtcbiAgICBjb25zdCBmb2xkZXJQYXRoID0gbm9kZVJlc29sdmUocGFja2FnZVBhdGgsIGZvbGRlcik7XG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmUoZm9sZGVyUGF0aCwgcGF0aCk7XG4gICAgcmV0dXJuICFyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aCgnLi4nKTtcbiAgfSk7XG59XG5cbmNvbnN0IG1vZHVsZVJlZ0V4cCA9IC9eXFx3LztcbmZ1bmN0aW9uIGlzTW9kdWxlKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUgJiYgbW9kdWxlUmVnRXhwLnRlc3QobmFtZSk7XG59XG5cbmNvbnN0IG1vZHVsZU1haW5SZWdFeHAgPSAvXltcXHddKCg/IVxcLykuKSokLztcbmZ1bmN0aW9uIGlzTW9kdWxlTWFpbihuYW1lKSB7XG4gIHJldHVybiBuYW1lICYmIG1vZHVsZU1haW5SZWdFeHAudGVzdChuYW1lKTtcbn1cblxuY29uc3Qgc2NvcGVkUmVnRXhwID0gL15AW14vXStcXC8/W14vXSsvO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NvcGVkKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUgJiYgc2NvcGVkUmVnRXhwLnRlc3QobmFtZSk7XG59XG5cbmNvbnN0IHNjb3BlZE1haW5SZWdFeHAgPSAvXkBbXi9dK1xcLz9bXi9dKyQvO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NvcGVkTWFpbihuYW1lKSB7XG4gIHJldHVybiBuYW1lICYmIHNjb3BlZE1haW5SZWdFeHAudGVzdChuYW1lKTtcbn1cblxuZnVuY3Rpb24gaXNSZWxhdGl2ZVRvUGFyZW50KG5hbWUpIHtcbiAgcmV0dXJuL15cXC5cXC4kfF5cXC5cXC5bXFxcXC9dLy50ZXN0KG5hbWUpO1xufVxuXG5jb25zdCBpbmRleEZpbGVzID0gWycuJywgJy4vJywgJy4vaW5kZXgnLCAnLi9pbmRleC5qcyddO1xuZnVuY3Rpb24gaXNJbmRleChuYW1lKSB7XG4gIHJldHVybiBpbmRleEZpbGVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xufVxuXG5mdW5jdGlvbiBpc1JlbGF0aXZlVG9TaWJsaW5nKG5hbWUpIHtcbiAgcmV0dXJuIC9eXFwuW1xcXFwvXS8udGVzdChuYW1lKTtcbn1cblxuZnVuY3Rpb24gdHlwZVRlc3QobmFtZSwgY29udGV4dCwgcGF0aCkge1xuICBjb25zdCB7IHNldHRpbmdzIH0gPSBjb250ZXh0O1xuICBpZiAoaXNBYnNvbHV0ZShuYW1lLCBzZXR0aW5ncywgcGF0aCkpIHsgcmV0dXJuICdhYnNvbHV0ZSc7IH1cbiAgaWYgKGlzQnVpbHRJbihuYW1lLCBzZXR0aW5ncywgcGF0aCkpIHsgcmV0dXJuICdidWlsdGluJzsgfVxuICBpZiAoaXNNb2R1bGUobmFtZSwgc2V0dGluZ3MsIHBhdGgpIHx8IGlzU2NvcGVkKG5hbWUsIHNldHRpbmdzLCBwYXRoKSkge1xuICAgIGNvbnN0IHBhY2thZ2VQYXRoID0gZ2V0Q29udGV4dFBhY2thZ2VQYXRoKGNvbnRleHQpO1xuICAgIHJldHVybiBpc0V4dGVybmFsUGF0aChuYW1lLCBzZXR0aW5ncywgcGF0aCwgcGFja2FnZVBhdGgpID8gJ2V4dGVybmFsJyA6ICdpbnRlcm5hbCc7XG4gIH1cbiAgaWYgKGlzUmVsYXRpdmVUb1BhcmVudChuYW1lLCBzZXR0aW5ncywgcGF0aCkpIHsgcmV0dXJuICdwYXJlbnQnOyB9XG4gIGlmIChpc0luZGV4KG5hbWUsIHNldHRpbmdzLCBwYXRoKSkgeyByZXR1cm4gJ2luZGV4JzsgfVxuICBpZiAoaXNSZWxhdGl2ZVRvU2libGluZyhuYW1lLCBzZXR0aW5ncywgcGF0aCkpIHsgcmV0dXJuICdzaWJsaW5nJzsgfVxuICByZXR1cm4gJ3Vua25vd24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTY29wZWRNb2R1bGUobmFtZSkge1xuICByZXR1cm4gbmFtZS5pbmRleE9mKCdAJykgPT09IDAgJiYgIW5hbWUuc3RhcnRzV2l0aCgnQC8nKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVzb2x2ZUltcG9ydFR5cGUobmFtZSwgY29udGV4dCkge1xuICByZXR1cm4gdHlwZVRlc3QobmFtZSwgY29udGV4dCwgcmVzb2x2ZShuYW1lLCBjb250ZXh0KSk7XG59XG4iXX0=
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2ltcG9ydFR5cGUuanMiXSwibmFtZXMiOlsiaXNBYnNvbHV0ZSIsImlzQnVpbHRJbiIsImlzRXh0ZXJuYWxNb2R1bGUiLCJpc0V4dGVybmFsTW9kdWxlTWFpbiIsImlzU2NvcGVkIiwiaXNTY29wZWRNYWluIiwicmVzb2x2ZUltcG9ydFR5cGUiLCJiYXNlTW9kdWxlIiwibmFtZSIsInNwbGl0Iiwic2NvcGUiLCJwa2ciLCJpc0ludGVybmFsUmVnZXhNYXRjaCIsInNldHRpbmdzIiwiaW50ZXJuYWxTY29wZSIsIlJlZ0V4cCIsInRlc3QiLCJwYXRoIiwiYmFzZSIsImV4dHJhcyIsImluZGV4T2YiLCJjb250ZXh0IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiVHlwZUVycm9yIiwiaXNNb2R1bGUiLCJ0eXBlVGVzdCIsImlzTW9kdWxlTWFpbiIsIm1vZHVsZVJlZ0V4cCIsIm1vZHVsZU1haW5SZWdFeHAiLCJzY29wZWRSZWdFeHAiLCJzY29wZWRNYWluUmVnRXhwIiwiaXNSZWxhdGl2ZVRvUGFyZW50IiwiaW5kZXhGaWxlcyIsImlzSW5kZXgiLCJpc1JlbGF0aXZlVG9TaWJsaW5nIiwiaXNFeHRlcm5hbFBhdGgiLCJwYWNrYWdlUGF0aCIsInN0YXJ0c1dpdGgiLCJmb2xkZXJzIiwic29tZSIsImZvbGRlciIsImZvbGRlclBhdGgiLCJyZWxhdGl2ZVBhdGgiLCJpc0ludGVybmFsUGF0aCIsImlzRXh0ZXJuYWxMb29raW5nTmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQmdCQSxVLEdBQUFBLFU7Ozs7O0FBS0FDLFMsR0FBQUEsUzs7Ozs7OztBQU9BQyxnQixHQUFBQSxnQjs7Ozs7OztBQU9BQyxvQixHQUFBQSxvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBQyxRLEdBQUFBLFE7Ozs7O0FBS0FDLFksR0FBQUEsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0RRQyxpQixDQTdIeEIsNEJBQ0EsOEMsMkRBRUEsc0QsaURBQ0EsNEMsK0ZBRUEsU0FBU0MsVUFBVCxDQUFvQkMsSUFBcEIsRUFBMEIsQ0FDeEIsSUFBSUosU0FBU0ksSUFBVCxDQUFKLEVBQW9CLG1CQUNHQSxLQUFLQyxLQUFMLENBQVcsR0FBWCxDQURILCtDQUNYQyxLQURXLG1CQUNKQyxJQURJLG1CQUVsQixjQUFVRCxLQUFWLGlCQUFtQkMsSUFBbkIsRUFDRCxDQUp1QixtQkFLVkgsS0FBS0MsS0FBTCxDQUFXLEdBQVgsQ0FMVSxnREFLakJFLEdBTGlCLG1CQU14QixPQUFPQSxHQUFQLENBQ0QsQ0FFRCxTQUFTQyxvQkFBVCxDQUE4QkosSUFBOUIsRUFBb0NLLFFBQXBDLEVBQThDLENBQzVDLElBQU1DLGdCQUFpQkQsWUFBWUEsU0FBUyx1QkFBVCxDQUFuQyxDQUNBLE9BQU9DLGlCQUFpQixJQUFJQyxNQUFKLENBQVdELGFBQVgsRUFBMEJFLElBQTFCLENBQStCUixJQUEvQixDQUF4QixDQUNELENBRU0sU0FBU1IsVUFBVCxDQUFvQlEsSUFBcEIsRUFBMEIsQ0FDL0IsT0FBTyxPQUFPQSxJQUFQLEtBQWdCLFFBQWhCLElBQTRCLHNCQUFlQSxJQUFmLENBQW5DLENBQ0QsQyxDQUVEO0FBQ08sU0FBU1AsU0FBVCxDQUFtQk8sSUFBbkIsRUFBeUJLLFFBQXpCLEVBQW1DSSxJQUFuQyxFQUF5QyxDQUM5QyxJQUFJQSxRQUFRLENBQUNULElBQWIsRUFBbUIsT0FBTyxLQUFQLENBQ25CLElBQU1VLE9BQU9YLFdBQVdDLElBQVgsQ0FBYixDQUNBLElBQU1XLFNBQVVOLFlBQVlBLFNBQVMscUJBQVQsQ0FBYixJQUFpRCxFQUFoRSxDQUNBLE9BQU8sK0JBQWFLLElBQWIsS0FBc0JDLE9BQU9DLE9BQVAsQ0FBZUYsSUFBZixJQUF1QixDQUFDLENBQXJELENBQ0QsQ0FFTSxTQUFTaEIsZ0JBQVQsQ0FBMEJNLElBQTFCLEVBQWdDUyxJQUFoQyxFQUFzQ0ksT0FBdEMsRUFBK0MsQ0FDcEQsSUFBSUMsVUFBVUMsTUFBVixHQUFtQixDQUF2QixFQUEwQixDQUN4QixNQUFNLElBQUlDLFNBQUosQ0FBYyw0REFBZCxDQUFOLENBQ0QsQ0FDRCxPQUFPLENBQUNDLFNBQVNqQixJQUFULEtBQWtCSixTQUFTSSxJQUFULENBQW5CLEtBQXNDa0IsU0FBU2xCLElBQVQsRUFBZWEsT0FBZixFQUF3QkosSUFBeEIsTUFBa0MsVUFBL0UsQ0FDRCxDQUVNLFNBQVNkLG9CQUFULENBQThCSyxJQUE5QixFQUFvQ1MsSUFBcEMsRUFBMENJLE9BQTFDLEVBQW1ELENBQ3hELElBQUlDLFVBQVVDLE1BQVYsR0FBbUIsQ0FBdkIsRUFBMEIsQ0FDeEIsTUFBTSxJQUFJQyxTQUFKLENBQWMsNERBQWQsQ0FBTixDQUNELENBQ0QsT0FBT0csYUFBYW5CLElBQWIsS0FBc0JrQixTQUFTbEIsSUFBVCxFQUFlYSxPQUFmLEVBQXdCSixJQUF4QixNQUFrQyxVQUEvRCxDQUNELENBRUQsSUFBTVcsZUFBZSxLQUFyQixDQUNBLFNBQVNILFFBQVQsQ0FBa0JqQixJQUFsQixFQUF3QixDQUN0QixPQUFPQSxRQUFRb0IsYUFBYVosSUFBYixDQUFrQlIsSUFBbEIsQ0FBZixDQUNELENBRUQsSUFBTXFCLG1CQUFtQixrQkFBekIsQ0FDQSxTQUFTRixZQUFULENBQXNCbkIsSUFBdEIsRUFBNEIsQ0FDMUIsT0FBT0EsUUFBUXFCLGlCQUFpQmIsSUFBakIsQ0FBc0JSLElBQXRCLENBQWYsQ0FDRCxDQUVELElBQU1zQixlQUFlLGlCQUFyQixDQUNPLFNBQVMxQixRQUFULENBQWtCSSxJQUFsQixFQUF3QixDQUM3QixPQUFPQSxRQUFRc0IsYUFBYWQsSUFBYixDQUFrQlIsSUFBbEIsQ0FBZixDQUNELENBRUQsSUFBTXVCLG1CQUFtQixrQkFBekIsQ0FDTyxTQUFTMUIsWUFBVCxDQUFzQkcsSUFBdEIsRUFBNEIsQ0FDakMsT0FBT0EsUUFBUXVCLGlCQUFpQmYsSUFBakIsQ0FBc0JSLElBQXRCLENBQWYsQ0FDRCxDQUVELFNBQVN3QixrQkFBVCxDQUE0QnhCLElBQTVCLEVBQWtDLENBQ2hDLE9BQU8scUJBQW9CUSxJQUFwQixDQUF5QlIsSUFBekIsQ0FBUCxFQUNELENBRUQsSUFBTXlCLGFBQWEsQ0FBQyxHQUFELEVBQU0sSUFBTixFQUFZLFNBQVosRUFBdUIsWUFBdkIsQ0FBbkIsQ0FDQSxTQUFTQyxPQUFULENBQWlCMUIsSUFBakIsRUFBdUIsQ0FDckIsT0FBT3lCLFdBQVdiLE9BQVgsQ0FBbUJaLElBQW5CLE1BQTZCLENBQUMsQ0FBckMsQ0FDRCxDQUVELFNBQVMyQixtQkFBVCxDQUE2QjNCLElBQTdCLEVBQW1DLENBQ2pDLE9BQU8sWUFBV1EsSUFBWCxDQUFnQlIsSUFBaEIsQ0FBUCxFQUNELENBRUQsU0FBUzRCLGNBQVQsQ0FBd0JuQixJQUF4QixFQUE4QkksT0FBOUIsRUFBdUMsQ0FDckMsSUFBSSxDQUFDSixJQUFMLEVBQVcsQ0FDVCxPQUFPLEtBQVAsQ0FDRCxDQUhvQyxJQUs3QkosUUFMNkIsR0FLaEJRLE9BTGdCLENBSzdCUixRQUw2QixDQU1yQyxJQUFNd0IsY0FBYyx3Q0FBc0JoQixPQUF0QixDQUFwQixDQUVBLElBQUksb0JBQVNnQixXQUFULEVBQXNCcEIsSUFBdEIsRUFBNEJxQixVQUE1QixDQUF1QyxJQUF2QyxDQUFKLEVBQWtELENBQ2hELE9BQU8sSUFBUCxDQUNELENBRUQsSUFBTUMsVUFBVzFCLFlBQVlBLFNBQVMsZ0NBQVQsQ0FBYixJQUE0RCxDQUFDLGNBQUQsQ0FBNUUsQ0FDQSxPQUFPMEIsUUFBUUMsSUFBUixDQUFhLFVBQUNDLE1BQUQsRUFBWSxDQUM5QixJQUFNQyxhQUFhLG1CQUFZTCxXQUFaLEVBQXlCSSxNQUF6QixDQUFuQixDQUNBLElBQU1FLGVBQWUsb0JBQVNELFVBQVQsRUFBcUJ6QixJQUFyQixDQUFyQixDQUNBLE9BQU8sQ0FBQzBCLGFBQWFMLFVBQWIsQ0FBd0IsSUFBeEIsQ0FBUixDQUNELENBSk0sQ0FBUCxDQUtELENBRUQsU0FBU00sY0FBVCxDQUF3QjNCLElBQXhCLEVBQThCSSxPQUE5QixFQUF1QyxDQUNyQyxJQUFJLENBQUNKLElBQUwsRUFBVyxDQUNULE9BQU8sS0FBUCxDQUNELENBQ0QsSUFBTW9CLGNBQWMsd0NBQXNCaEIsT0FBdEIsQ0FBcEIsQ0FDQSxPQUFPLENBQUMsb0JBQVNnQixXQUFULEVBQXNCcEIsSUFBdEIsRUFBNEJxQixVQUE1QixDQUF1QyxLQUF2QyxDQUFSLENBQ0QsQ0FFRCxTQUFTTyxxQkFBVCxDQUErQnJDLElBQS9CLEVBQXFDLENBQ25DLE9BQU9pQixTQUFTakIsSUFBVCxLQUFrQkosU0FBU0ksSUFBVCxDQUF6QixDQUNELENBRUQsU0FBU2tCLFFBQVQsQ0FBa0JsQixJQUFsQixFQUF3QmEsT0FBeEIsRUFBaUNKLElBQWpDLEVBQXdDLEtBQzlCSixRQUQ4QixHQUNqQlEsT0FEaUIsQ0FDOUJSLFFBRDhCLENBRXRDLElBQUlELHFCQUFxQkosSUFBckIsRUFBMkJLLFFBQTNCLENBQUosRUFBMEMsQ0FBRSxPQUFPLFVBQVAsQ0FBb0IsQ0FDaEUsSUFBSWIsV0FBV1EsSUFBWCxFQUFpQkssUUFBakIsRUFBMkJJLElBQTNCLENBQUosRUFBc0MsQ0FBRSxPQUFPLFVBQVAsQ0FBb0IsQ0FDNUQsSUFBSWhCLFVBQVVPLElBQVYsRUFBZ0JLLFFBQWhCLEVBQTBCSSxJQUExQixDQUFKLEVBQXFDLENBQUUsT0FBTyxTQUFQLENBQW1CLENBQzFELElBQUllLG1CQUFtQnhCLElBQW5CLEVBQXlCSyxRQUF6QixFQUFtQ0ksSUFBbkMsQ0FBSixFQUE4QyxDQUFFLE9BQU8sUUFBUCxDQUFrQixDQUNsRSxJQUFJaUIsUUFBUTFCLElBQVIsRUFBY0ssUUFBZCxFQUF3QkksSUFBeEIsQ0FBSixFQUFtQyxDQUFFLE9BQU8sT0FBUCxDQUFpQixDQUN0RCxJQUFJa0Isb0JBQW9CM0IsSUFBcEIsRUFBMEJLLFFBQTFCLEVBQW9DSSxJQUFwQyxDQUFKLEVBQStDLENBQUUsT0FBTyxTQUFQLENBQW1CLENBQ3BFLElBQUltQixlQUFlbkIsSUFBZixFQUFxQkksT0FBckIsQ0FBSixFQUFtQyxDQUFFLE9BQU8sVUFBUCxDQUFvQixDQUN6RCxJQUFJdUIsZUFBZTNCLElBQWYsRUFBcUJJLE9BQXJCLENBQUosRUFBbUMsQ0FBRSxPQUFPLFVBQVAsQ0FBb0IsQ0FDekQsSUFBSXdCLHNCQUFzQnJDLElBQXRCLENBQUosRUFBaUMsQ0FBRSxPQUFPLFVBQVAsQ0FBb0IsQ0FDdkQsT0FBTyxTQUFQLENBQ0QsQ0FFYyxTQUFTRixpQkFBVCxDQUEyQkUsSUFBM0IsRUFBaUNhLE9BQWpDLEVBQTBDLENBQ3ZELE9BQU9LLFNBQVNsQixJQUFULEVBQWVhLE9BQWYsRUFBd0IsMEJBQVFiLElBQVIsRUFBY2EsT0FBZCxDQUF4QixDQUFQO0FBQ0QiLCJmaWxlIjoiaW1wb3J0VHlwZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQWJzb2x1dGUgYXMgbm9kZUlzQWJzb2x1dGUsIHJlbGF0aXZlLCByZXNvbHZlIGFzIG5vZGVSZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgaXNDb3JlTW9kdWxlIGZyb20gJ2lzLWNvcmUtbW9kdWxlJztcblxuaW1wb3J0IHJlc29sdmUgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9yZXNvbHZlJztcbmltcG9ydCB7IGdldENvbnRleHRQYWNrYWdlUGF0aCB9IGZyb20gJy4vcGFja2FnZVBhdGgnO1xuXG5mdW5jdGlvbiBiYXNlTW9kdWxlKG5hbWUpIHtcbiAgaWYgKGlzU2NvcGVkKG5hbWUpKSB7XG4gICAgY29uc3QgW3Njb3BlLCBwa2ddID0gbmFtZS5zcGxpdCgnLycpO1xuICAgIHJldHVybiBgJHtzY29wZX0vJHtwa2d9YDtcbiAgfVxuICBjb25zdCBbcGtnXSA9IG5hbWUuc3BsaXQoJy8nKTtcbiAgcmV0dXJuIHBrZztcbn1cblxuZnVuY3Rpb24gaXNJbnRlcm5hbFJlZ2V4TWF0Y2gobmFtZSwgc2V0dGluZ3MpIHtcbiAgY29uc3QgaW50ZXJuYWxTY29wZSA9IChzZXR0aW5ncyAmJiBzZXR0aW5nc1snaW1wb3J0L2ludGVybmFsLXJlZ2V4J10pO1xuICByZXR1cm4gaW50ZXJuYWxTY29wZSAmJiBuZXcgUmVnRXhwKGludGVybmFsU2NvcGUpLnRlc3QobmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKG5hbWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyAmJiBub2RlSXNBYnNvbHV0ZShuYW1lKTtcbn1cblxuLy8gcGF0aCBpcyBkZWZpbmVkIG9ubHkgd2hlbiBhIHJlc29sdmVyIHJlc29sdmVzIHRvIGEgbm9uLXN0YW5kYXJkIHBhdGhcbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWx0SW4obmFtZSwgc2V0dGluZ3MsIHBhdGgpIHtcbiAgaWYgKHBhdGggfHwgIW5hbWUpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgYmFzZSA9IGJhc2VNb2R1bGUobmFtZSk7XG4gIGNvbnN0IGV4dHJhcyA9IChzZXR0aW5ncyAmJiBzZXR0aW5nc1snaW1wb3J0L2NvcmUtbW9kdWxlcyddKSB8fCBbXTtcbiAgcmV0dXJuIGlzQ29yZU1vZHVsZShiYXNlKSB8fCBleHRyYXMuaW5kZXhPZihiYXNlKSA+IC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlcm5hbE1vZHVsZShuYW1lLCBwYXRoLCBjb250ZXh0KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lzRXh0ZXJuYWxNb2R1bGU6IG5hbWUsIHBhdGgsIGFuZCBjb250ZXh0IGFyZSBhbGwgcmVxdWlyZWQnKTtcbiAgfVxuICByZXR1cm4gKGlzTW9kdWxlKG5hbWUpIHx8IGlzU2NvcGVkKG5hbWUpKSAmJiB0eXBlVGVzdChuYW1lLCBjb250ZXh0LCBwYXRoKSA9PT0gJ2V4dGVybmFsJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWxNb2R1bGVNYWluKG5hbWUsIHBhdGgsIGNvbnRleHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaXNFeHRlcm5hbE1vZHVsZTogbmFtZSwgcGF0aCwgYW5kIGNvbnRleHQgYXJlIGFsbCByZXF1aXJlZCcpO1xuICB9XG4gIHJldHVybiBpc01vZHVsZU1haW4obmFtZSkgJiYgdHlwZVRlc3QobmFtZSwgY29udGV4dCwgcGF0aCkgPT09ICdleHRlcm5hbCc7XG59XG5cbmNvbnN0IG1vZHVsZVJlZ0V4cCA9IC9eXFx3LztcbmZ1bmN0aW9uIGlzTW9kdWxlKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUgJiYgbW9kdWxlUmVnRXhwLnRlc3QobmFtZSk7XG59XG5cbmNvbnN0IG1vZHVsZU1haW5SZWdFeHAgPSAvXltcXHddKCg/IVxcLykuKSokLztcbmZ1bmN0aW9uIGlzTW9kdWxlTWFpbihuYW1lKSB7XG4gIHJldHVybiBuYW1lICYmIG1vZHVsZU1haW5SZWdFeHAudGVzdChuYW1lKTtcbn1cblxuY29uc3Qgc2NvcGVkUmVnRXhwID0gL15AW14vXStcXC8/W14vXSsvO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NvcGVkKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUgJiYgc2NvcGVkUmVnRXhwLnRlc3QobmFtZSk7XG59XG5cbmNvbnN0IHNjb3BlZE1haW5SZWdFeHAgPSAvXkBbXi9dK1xcLz9bXi9dKyQvO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NvcGVkTWFpbihuYW1lKSB7XG4gIHJldHVybiBuYW1lICYmIHNjb3BlZE1haW5SZWdFeHAudGVzdChuYW1lKTtcbn1cblxuZnVuY3Rpb24gaXNSZWxhdGl2ZVRvUGFyZW50KG5hbWUpIHtcbiAgcmV0dXJuIC9eXFwuXFwuJHxeXFwuXFwuW1xcXFwvXS8udGVzdChuYW1lKTtcbn1cblxuY29uc3QgaW5kZXhGaWxlcyA9IFsnLicsICcuLycsICcuL2luZGV4JywgJy4vaW5kZXguanMnXTtcbmZ1bmN0aW9uIGlzSW5kZXgobmFtZSkge1xuICByZXR1cm4gaW5kZXhGaWxlcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbn1cblxuZnVuY3Rpb24gaXNSZWxhdGl2ZVRvU2libGluZyhuYW1lKSB7XG4gIHJldHVybiAvXlxcLltcXFxcL10vLnRlc3QobmFtZSk7XG59XG5cbmZ1bmN0aW9uIGlzRXh0ZXJuYWxQYXRoKHBhdGgsIGNvbnRleHQpIHtcbiAgaWYgKCFwYXRoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gY29udGV4dDtcbiAgY29uc3QgcGFja2FnZVBhdGggPSBnZXRDb250ZXh0UGFja2FnZVBhdGgoY29udGV4dCk7XG5cbiAgaWYgKHJlbGF0aXZlKHBhY2thZ2VQYXRoLCBwYXRoKS5zdGFydHNXaXRoKCcuLicpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBmb2xkZXJzID0gKHNldHRpbmdzICYmIHNldHRpbmdzWydpbXBvcnQvZXh0ZXJuYWwtbW9kdWxlLWZvbGRlcnMnXSkgfHwgWydub2RlX21vZHVsZXMnXTtcbiAgcmV0dXJuIGZvbGRlcnMuc29tZSgoZm9sZGVyKSA9PiB7XG4gICAgY29uc3QgZm9sZGVyUGF0aCA9IG5vZGVSZXNvbHZlKHBhY2thZ2VQYXRoLCBmb2xkZXIpO1xuICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlKGZvbGRlclBhdGgsIHBhdGgpO1xuICAgIHJldHVybiAhcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoJy4uJyk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc0ludGVybmFsUGF0aChwYXRoLCBjb250ZXh0KSB7XG4gIGlmICghcGF0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBwYWNrYWdlUGF0aCA9IGdldENvbnRleHRQYWNrYWdlUGF0aChjb250ZXh0KTtcbiAgcmV0dXJuICFyZWxhdGl2ZShwYWNrYWdlUGF0aCwgcGF0aCkuc3RhcnRzV2l0aCgnLi4vJyk7XG59XG5cbmZ1bmN0aW9uIGlzRXh0ZXJuYWxMb29raW5nTmFtZShuYW1lKSB7XG4gIHJldHVybiBpc01vZHVsZShuYW1lKSB8fCBpc1Njb3BlZChuYW1lKTtcbn1cblxuZnVuY3Rpb24gdHlwZVRlc3QobmFtZSwgY29udGV4dCwgcGF0aCApIHtcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gY29udGV4dDtcbiAgaWYgKGlzSW50ZXJuYWxSZWdleE1hdGNoKG5hbWUsIHNldHRpbmdzKSkgeyByZXR1cm4gJ2ludGVybmFsJzsgfVxuICBpZiAoaXNBYnNvbHV0ZShuYW1lLCBzZXR0aW5ncywgcGF0aCkpIHsgcmV0dXJuICdhYnNvbHV0ZSc7IH1cbiAgaWYgKGlzQnVpbHRJbihuYW1lLCBzZXR0aW5ncywgcGF0aCkpIHsgcmV0dXJuICdidWlsdGluJzsgfVxuICBpZiAoaXNSZWxhdGl2ZVRvUGFyZW50KG5hbWUsIHNldHRpbmdzLCBwYXRoKSkgeyByZXR1cm4gJ3BhcmVudCc7IH1cbiAgaWYgKGlzSW5kZXgobmFtZSwgc2V0dGluZ3MsIHBhdGgpKSB7IHJldHVybiAnaW5kZXgnOyB9XG4gIGlmIChpc1JlbGF0aXZlVG9TaWJsaW5nKG5hbWUsIHNldHRpbmdzLCBwYXRoKSkgeyByZXR1cm4gJ3NpYmxpbmcnOyB9XG4gIGlmIChpc0V4dGVybmFsUGF0aChwYXRoLCBjb250ZXh0KSkgeyByZXR1cm4gJ2V4dGVybmFsJzsgfVxuICBpZiAoaXNJbnRlcm5hbFBhdGgocGF0aCwgY29udGV4dCkpIHsgcmV0dXJuICdpbnRlcm5hbCc7IH1cbiAgaWYgKGlzRXh0ZXJuYWxMb29raW5nTmFtZShuYW1lKSkgeyByZXR1cm4gJ2V4dGVybmFsJzsgfVxuICByZXR1cm4gJ3Vua25vd24nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXNvbHZlSW1wb3J0VHlwZShuYW1lLCBjb250ZXh0KSB7XG4gIHJldHVybiB0eXBlVGVzdChuYW1lLCBjb250ZXh0LCByZXNvbHZlKG5hbWUsIGNvbnRleHQpKTtcbn1cbiJdfQ==
\ No newline at end of file
diff --git a/node_modules/eslint-plugin-import/lib/core/packagePath.js b/node_modules/eslint-plugin-import/lib/core/packagePath.js
index 85236c7a2..e92577297 100644
--- a/node_modules/eslint-plugin-import/lib/core/packagePath.js
+++ b/node_modules/eslint-plugin-import/lib/core/packagePath.js
@@ -12,12 +12,12 @@ getFilePackagePath = getFilePackagePath;exports.
-getFilePackageName = getFilePackageName;var _path = require('path');var _findUp = require('find-up');var _findUp2 = _interopRequireDefault(_findUp);var _readPkgUp = require('read-pkg-up');var _readPkgUp2 = _interopRequireDefault(_readPkgUp);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}function getContextPackagePath(context) {return getFilePackagePath(context.getPhysicalFilename ? context.getPhysicalFilename() : context.getFilename());}function getFilePackagePath(filePath) {var fp = _findUp2['default'].sync('package.json', { cwd: filePath });return (0, _path.dirname)(fp);}function getFilePackageName(filePath) {var _readPkgUp$sync =
- _readPkgUp2['default'].sync({ cwd: filePath, normalize: false }),pkg = _readPkgUp$sync.pkg,path = _readPkgUp$sync.path;
+getFilePackageName = getFilePackageName;var _path = require('path');var _pkgUp = require('eslint-module-utils/pkgUp');var _pkgUp2 = _interopRequireDefault(_pkgUp);var _readPkgUp2 = require('eslint-module-utils/readPkgUp');var _readPkgUp3 = _interopRequireDefault(_readPkgUp2);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}function getContextPackagePath(context) {return getFilePackagePath(context.getPhysicalFilename ? context.getPhysicalFilename() : context.getFilename());}function getFilePackagePath(filePath) {var fp = (0, _pkgUp2['default'])({ cwd: filePath });return (0, _path.dirname)(fp);}function getFilePackageName(filePath) {var _readPkgUp =
+ (0, _readPkgUp3['default'])({ cwd: filePath, normalize: false }),pkg = _readPkgUp.pkg,path = _readPkgUp.path;
if (pkg) {
// recursion in case of intermediate esm package.json without name found
return pkg.name || getFilePackageName((0, _path.dirname)((0, _path.dirname)(path)));
}
return null;
}
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BhY2thZ2VQYXRoLmpzIl0sIm5hbWVzIjpbImdldENvbnRleHRQYWNrYWdlUGF0aCIsImdldEZpbGVQYWNrYWdlUGF0aCIsImdldEZpbGVQYWNrYWdlTmFtZSIsImNvbnRleHQiLCJnZXRQaHlzaWNhbEZpbGVuYW1lIiwiZ2V0RmlsZW5hbWUiLCJmaWxlUGF0aCIsImZwIiwiZmluZFVwIiwic3luYyIsImN3ZCIsInJlYWRQa2dVcCIsIm5vcm1hbGl6ZSIsInBrZyIsInBhdGgiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7OztBQUtnQkEscUIsR0FBQUEscUI7Ozs7QUFJQUMsa0IsR0FBQUEsa0I7Ozs7O0FBS0FDLGtCLEdBQUFBLGtCLENBZGhCLDRCQUNBLGlDLCtDQUNBLHdDLG9KQUdPLFNBQVNGLHFCQUFULENBQStCRyxPQUEvQixFQUF3QyxDQUM3QyxPQUFPRixtQkFBbUJFLFFBQVFDLG1CQUFSLEdBQThCRCxRQUFRQyxtQkFBUixFQUE5QixHQUE4REQsUUFBUUUsV0FBUixFQUFqRixDQUFQLENBQ0QsQ0FFTSxTQUFTSixrQkFBVCxDQUE0QkssUUFBNUIsRUFBc0MsQ0FDM0MsSUFBTUMsS0FBS0Msb0JBQU9DLElBQVAsQ0FBWSxjQUFaLEVBQTRCLEVBQUVDLEtBQUtKLFFBQVAsRUFBNUIsQ0FBWCxDQUNBLE9BQU8sbUJBQVFDLEVBQVIsQ0FBUCxDQUNELENBRU0sU0FBU0wsa0JBQVQsQ0FBNEJJLFFBQTVCLEVBQXNDO0FBQ3JCSyx5QkFBVUYsSUFBVixDQUFlLEVBQUVDLEtBQUtKLFFBQVAsRUFBaUJNLFdBQVcsS0FBNUIsRUFBZixDQURxQixDQUNuQ0MsR0FEbUMsbUJBQ25DQSxHQURtQyxDQUM5QkMsSUFEOEIsbUJBQzlCQSxJQUQ4QjtBQUUzQyxNQUFJRCxHQUFKLEVBQVM7QUFDUDtBQUNBLFdBQU9BLElBQUlFLElBQUosSUFBWWIsbUJBQW1CLG1CQUFRLG1CQUFRWSxJQUFSLENBQVIsQ0FBbkIsQ0FBbkI7QUFDRDtBQUNELFNBQU8sSUFBUDtBQUNEIiwiZmlsZSI6InBhY2thZ2VQYXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IGZpbmRVcCBmcm9tICdmaW5kLXVwJztcbmltcG9ydCByZWFkUGtnVXAgZnJvbSAncmVhZC1wa2ctdXAnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250ZXh0UGFja2FnZVBhdGgoY29udGV4dCkge1xuICByZXR1cm4gZ2V0RmlsZVBhY2thZ2VQYXRoKGNvbnRleHQuZ2V0UGh5c2ljYWxGaWxlbmFtZSA/IGNvbnRleHQuZ2V0UGh5c2ljYWxGaWxlbmFtZSgpIDogY29udGV4dC5nZXRGaWxlbmFtZSgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVQYWNrYWdlUGF0aChmaWxlUGF0aCkge1xuICBjb25zdCBmcCA9IGZpbmRVcC5zeW5jKCdwYWNrYWdlLmpzb24nLCB7IGN3ZDogZmlsZVBhdGggfSk7XG4gIHJldHVybiBkaXJuYW1lKGZwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVQYWNrYWdlTmFtZShmaWxlUGF0aCkge1xuICBjb25zdCB7IHBrZywgcGF0aCB9ID0gcmVhZFBrZ1VwLnN5bmMoeyBjd2Q6IGZpbGVQYXRoLCBub3JtYWxpemU6IGZhbHNlIH0pO1xuICBpZiAocGtnKSB7XG4gICAgLy8gcmVjdXJzaW9uIGluIGNhc2Ugb2YgaW50ZXJtZWRpYXRlIGVzbSBwYWNrYWdlLmpzb24gd2l0aG91dCBuYW1lIGZvdW5kXG4gICAgcmV0dXJuIHBrZy5uYW1lIHx8IGdldEZpbGVQYWNrYWdlTmFtZShkaXJuYW1lKGRpcm5hbWUocGF0aCkpKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BhY2thZ2VQYXRoLmpzIl0sIm5hbWVzIjpbImdldENvbnRleHRQYWNrYWdlUGF0aCIsImdldEZpbGVQYWNrYWdlUGF0aCIsImdldEZpbGVQYWNrYWdlTmFtZSIsImNvbnRleHQiLCJnZXRQaHlzaWNhbEZpbGVuYW1lIiwiZ2V0RmlsZW5hbWUiLCJmaWxlUGF0aCIsImZwIiwiY3dkIiwibm9ybWFsaXplIiwicGtnIiwicGF0aCIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBS2dCQSxxQixHQUFBQSxxQjs7OztBQUlBQyxrQixHQUFBQSxrQjs7Ozs7QUFLQUMsa0IsR0FBQUEsa0IsQ0FkaEIsNEJBQ0Esa0QsNkNBQ0EsMkQscUpBR08sU0FBU0YscUJBQVQsQ0FBK0JHLE9BQS9CLEVBQXdDLENBQzdDLE9BQU9GLG1CQUFtQkUsUUFBUUMsbUJBQVIsR0FBOEJELFFBQVFDLG1CQUFSLEVBQTlCLEdBQThERCxRQUFRRSxXQUFSLEVBQWpGLENBQVAsQ0FDRCxDQUVNLFNBQVNKLGtCQUFULENBQTRCSyxRQUE1QixFQUFzQyxDQUMzQyxJQUFNQyxLQUFLLHdCQUFNLEVBQUVDLEtBQUtGLFFBQVAsRUFBTixDQUFYLENBQ0EsT0FBTyxtQkFBUUMsRUFBUixDQUFQLENBQ0QsQ0FFTSxTQUFTTCxrQkFBVCxDQUE0QkksUUFBNUIsRUFBc0M7QUFDckIsOEJBQVUsRUFBRUUsS0FBS0YsUUFBUCxFQUFpQkcsV0FBVyxLQUE1QixFQUFWLENBRHFCLENBQ25DQyxHQURtQyxjQUNuQ0EsR0FEbUMsQ0FDOUJDLElBRDhCLGNBQzlCQSxJQUQ4QjtBQUUzQyxNQUFJRCxHQUFKLEVBQVM7QUFDUDtBQUNBLFdBQU9BLElBQUlFLElBQUosSUFBWVYsbUJBQW1CLG1CQUFRLG1CQUFRUyxJQUFSLENBQVIsQ0FBbkIsQ0FBbkI7QUFDRDtBQUNELFNBQU8sSUFBUDtBQUNEIiwiZmlsZSI6InBhY2thZ2VQYXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHBrZ1VwIGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvcGtnVXAnO1xuaW1wb3J0IHJlYWRQa2dVcCBmcm9tICdlc2xpbnQtbW9kdWxlLXV0aWxzL3JlYWRQa2dVcCc7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRleHRQYWNrYWdlUGF0aChjb250ZXh0KSB7XG4gIHJldHVybiBnZXRGaWxlUGFja2FnZVBhdGgoY29udGV4dC5nZXRQaHlzaWNhbEZpbGVuYW1lID8gY29udGV4dC5nZXRQaHlzaWNhbEZpbGVuYW1lKCkgOiBjb250ZXh0LmdldEZpbGVuYW1lKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZVBhY2thZ2VQYXRoKGZpbGVQYXRoKSB7XG4gIGNvbnN0IGZwID0gcGtnVXAoeyBjd2Q6IGZpbGVQYXRoIH0pO1xuICByZXR1cm4gZGlybmFtZShmcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlUGFja2FnZU5hbWUoZmlsZVBhdGgpIHtcbiAgY29uc3QgeyBwa2csIHBhdGggfSA9IHJlYWRQa2dVcCh7IGN3ZDogZmlsZVBhdGgsIG5vcm1hbGl6ZTogZmFsc2UgfSk7XG4gIGlmIChwa2cpIHtcbiAgICAvLyByZWN1cnNpb24gaW4gY2FzZSBvZiBpbnRlcm1lZGlhdGUgZXNtIHBhY2thZ2UuanNvbiB3aXRob3V0IG5hbWUgZm91bmRcbiAgICByZXR1cm4gcGtnLm5hbWUgfHwgZ2V0RmlsZVBhY2thZ2VOYW1lKGRpcm5hbWUoZGlybmFtZShwYXRoKSkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuIl19
\ No newline at end of file
diff --git a/node_modules/eslint-plugin-import/lib/index.js b/node_modules/eslint-plugin-import/lib/index.js
index 247818e0a..927dd54ec 100644
--- a/node_modules/eslint-plugin-import/lib/index.js
+++ b/node_modules/eslint-plugin-import/lib/index.js
@@ -12,6 +12,7 @@
'group-exports': require('./rules/group-exports'),
'no-relative-packages': require('./rules/no-relative-packages'),
'no-relative-parent-imports': require('./rules/no-relative-parent-imports'),
+ 'consistent-type-specifier-style': require('./rules/consistent-type-specifier-style'),
'no-self-import': require('./rules/no-self-import'),
'no-cycle': require('./rules/no-cycle'),
@@ -41,6 +42,7 @@
'no-useless-path-segments': require('./rules/no-useless-path-segments'),
'dynamic-import-chunkname': require('./rules/dynamic-import-chunkname'),
'no-import-module-exports': require('./rules/no-import-module-exports'),
+ 'no-empty-named-blocks': require('./rules/no-empty-named-blocks'),
// export
'exports-last': require('./rules/exports-last'),
@@ -66,4 +68,4 @@ var configs = exports.configs = {
'react-native': require('../config/react-native'),
'electron': require('../config/electron'),
'typescript': require('../config/typescript') };
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJydWxlcyIsInJlcXVpcmUiLCJjb25maWdzIl0sIm1hcHBpbmdzIjoiMkVBQU8sSUFBTUEsd0JBQVE7QUFDbkIsbUJBQWlCQyxRQUFRLHVCQUFSLENBREU7QUFFbkIsV0FBU0EsUUFBUSxlQUFSLENBRlU7QUFHbkIsYUFBV0EsUUFBUSxpQkFBUixDQUhRO0FBSW5CLGVBQWFBLFFBQVEsbUJBQVIsQ0FKTTtBQUtuQixrQkFBZ0JBLFFBQVEsc0JBQVIsQ0FMRztBQU1uQixZQUFVQSxRQUFRLGdCQUFSLENBTlM7QUFPbkIsd0JBQXNCQSxRQUFRLDRCQUFSLENBUEg7QUFRbkIsZ0JBQWNBLFFBQVEsb0JBQVIsQ0FSSztBQVNuQix5QkFBdUJBLFFBQVEsNkJBQVIsQ0FUSjtBQVVuQix5QkFBdUJBLFFBQVEsNkJBQVIsQ0FWSjtBQVduQixtQkFBaUJBLFFBQVEsdUJBQVIsQ0FYRTtBQVluQiwwQkFBd0JBLFFBQVEsOEJBQVIsQ0FaTDtBQWFuQixnQ0FBOEJBLFFBQVEsb0NBQVIsQ0FiWDs7QUFlbkIsb0JBQWtCQSxRQUFRLHdCQUFSLENBZkM7QUFnQm5CLGNBQVlBLFFBQVEsa0JBQVIsQ0FoQk87QUFpQm5CLHNCQUFvQkEsUUFBUSwwQkFBUixDQWpCRDtBQWtCbkIseUJBQXVCQSxRQUFRLDZCQUFSLENBbEJKO0FBbUJuQixnQ0FBOEJBLFFBQVEsb0NBQVIsQ0FuQlg7QUFvQm5CLGlDQUErQkEsUUFBUSxxQ0FBUixDQXBCWjtBQXFCbkIsdUJBQXFCQSxRQUFRLDJCQUFSLENBckJGOztBQXVCbkIsaUJBQWVBLFFBQVEscUJBQVIsQ0F2Qkk7QUF3Qm5CLFlBQVVBLFFBQVEsZ0JBQVIsQ0F4QlM7QUF5Qm5CLG1CQUFpQkEsUUFBUSx1QkFBUixDQXpCRTtBQTBCbkIsV0FBU0EsUUFBUSxlQUFSLENBMUJVO0FBMkJuQixzQkFBb0JBLFFBQVEsMEJBQVIsQ0EzQkQ7QUE0Qm5CLGdDQUE4QkEsUUFBUSxvQ0FBUixDQTVCWDtBQTZCbkIsc0JBQW9CQSxRQUFRLDBCQUFSLENBN0JEO0FBOEJuQix1QkFBcUJBLFFBQVEsMkJBQVIsQ0E5QkY7QUErQm5CLDhCQUE0QkEsUUFBUSxrQ0FBUixDQS9CVDtBQWdDbkIsV0FBU0EsUUFBUSxlQUFSLENBaENVO0FBaUNuQiwwQkFBd0JBLFFBQVEsOEJBQVIsQ0FqQ0w7QUFrQ25CLDJCQUF5QkEsUUFBUSwrQkFBUixDQWxDTjtBQW1DbkIsdUJBQXFCQSxRQUFRLDJCQUFSLENBbkNGO0FBb0NuQixxQkFBbUJBLFFBQVEseUJBQVIsQ0FwQ0E7QUFxQ25CLHdCQUFzQkEsUUFBUSw0QkFBUixDQXJDSDtBQXNDbkIsaUJBQWVBLFFBQVEscUJBQVIsQ0F0Q0k7QUF1Q25CLDBCQUF3QkEsUUFBUSw4QkFBUixDQXZDTDtBQXdDbkIsOEJBQTRCQSxRQUFRLGtDQUFSLENBeENUO0FBeUNuQiw4QkFBNEJBLFFBQVEsa0NBQVIsQ0F6Q1Q7QUEwQ25CLDhCQUE0QkEsUUFBUSxrQ0FBUixDQTFDVDs7QUE0Q25CO0FBQ0Esa0JBQWdCQSxRQUFRLHNCQUFSLENBN0NHOztBQStDbkI7QUFDQSxtQkFBaUJBLFFBQVEsdUJBQVIsQ0FoREU7O0FBa0RuQjtBQUNBLG1CQUFpQkEsUUFBUSx1QkFBUixDQW5ERSxFQUFkOzs7QUFzREEsSUFBTUMsNEJBQVU7QUFDckIsaUJBQWVELFFBQVEsdUJBQVIsQ0FETTs7QUFHckIsWUFBVUEsUUFBUSxrQkFBUixDQUhXO0FBSXJCLGNBQVlBLFFBQVEsb0JBQVIsQ0FKUzs7QUFNckI7QUFDQSxhQUFXQSxRQUFRLG1CQUFSLENBUFU7O0FBU3JCO0FBQ0EsV0FBU0EsUUFBUSxpQkFBUixDQVZZO0FBV3JCLGtCQUFnQkEsUUFBUSx3QkFBUixDQVhLO0FBWXJCLGNBQVlBLFFBQVEsb0JBQVIsQ0FaUztBQWFyQixnQkFBY0EsUUFBUSxzQkFBUixDQWJPLEVBQWhCIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHJ1bGVzID0ge1xuICAnbm8tdW5yZXNvbHZlZCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tdW5yZXNvbHZlZCcpLFxuICAnbmFtZWQnOiByZXF1aXJlKCcuL3J1bGVzL25hbWVkJyksXG4gICdkZWZhdWx0JzogcmVxdWlyZSgnLi9ydWxlcy9kZWZhdWx0JyksXG4gICduYW1lc3BhY2UnOiByZXF1aXJlKCcuL3J1bGVzL25hbWVzcGFjZScpLFxuICAnbm8tbmFtZXNwYWNlJzogcmVxdWlyZSgnLi9ydWxlcy9uby1uYW1lc3BhY2UnKSxcbiAgJ2V4cG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvZXhwb3J0JyksXG4gICduby1tdXRhYmxlLWV4cG9ydHMnOiByZXF1aXJlKCcuL3J1bGVzL25vLW11dGFibGUtZXhwb3J0cycpLFxuICAnZXh0ZW5zaW9ucyc6IHJlcXVpcmUoJy4vcnVsZXMvZXh0ZW5zaW9ucycpLFxuICAnbm8tcmVzdHJpY3RlZC1wYXRocyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tcmVzdHJpY3RlZC1wYXRocycpLFxuICAnbm8taW50ZXJuYWwtbW9kdWxlcyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8taW50ZXJuYWwtbW9kdWxlcycpLFxuICAnZ3JvdXAtZXhwb3J0cyc6IHJlcXVpcmUoJy4vcnVsZXMvZ3JvdXAtZXhwb3J0cycpLFxuICAnbm8tcmVsYXRpdmUtcGFja2FnZXMnOiByZXF1aXJlKCcuL3J1bGVzL25vLXJlbGF0aXZlLXBhY2thZ2VzJyksXG4gICduby1yZWxhdGl2ZS1wYXJlbnQtaW1wb3J0cyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tcmVsYXRpdmUtcGFyZW50LWltcG9ydHMnKSxcblxuICAnbm8tc2VsZi1pbXBvcnQnOiByZXF1aXJlKCcuL3J1bGVzL25vLXNlbGYtaW1wb3J0JyksXG4gICduby1jeWNsZSc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tY3ljbGUnKSxcbiAgJ25vLW5hbWVkLWRlZmF1bHQnOiByZXF1aXJlKCcuL3J1bGVzL25vLW5hbWVkLWRlZmF1bHQnKSxcbiAgJ25vLW5hbWVkLWFzLWRlZmF1bHQnOiByZXF1aXJlKCcuL3J1bGVzL25vLW5hbWVkLWFzLWRlZmF1bHQnKSxcbiAgJ25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyJzogcmVxdWlyZSgnLi9ydWxlcy9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlcicpLFxuICAnbm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0JzogcmVxdWlyZSgnLi9ydWxlcy9uby1hbm9ueW1vdXMtZGVmYXVsdC1leHBvcnQnKSxcbiAgJ25vLXVudXNlZC1tb2R1bGVzJzogcmVxdWlyZSgnLi9ydWxlcy9uby11bnVzZWQtbW9kdWxlcycpLFxuXG4gICduby1jb21tb25qcyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tY29tbW9uanMnKSxcbiAgJ25vLWFtZCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tYW1kJyksXG4gICduby1kdXBsaWNhdGVzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1kdXBsaWNhdGVzJyksXG4gICdmaXJzdCc6IHJlcXVpcmUoJy4vcnVsZXMvZmlyc3QnKSxcbiAgJ21heC1kZXBlbmRlbmNpZXMnOiByZXF1aXJlKCcuL3J1bGVzL21heC1kZXBlbmRlbmNpZXMnKSxcbiAgJ25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcycpLFxuICAnbm8tYWJzb2x1dGUtcGF0aCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tYWJzb2x1dGUtcGF0aCcpLFxuICAnbm8tbm9kZWpzLW1vZHVsZXMnOiByZXF1aXJlKCcuL3J1bGVzL25vLW5vZGVqcy1tb2R1bGVzJyksXG4gICduby13ZWJwYWNrLWxvYWRlci1zeW50YXgnOiByZXF1aXJlKCcuL3J1bGVzL25vLXdlYnBhY2stbG9hZGVyLXN5bnRheCcpLFxuICAnb3JkZXInOiByZXF1aXJlKCcuL3J1bGVzL29yZGVyJyksXG4gICduZXdsaW5lLWFmdGVyLWltcG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvbmV3bGluZS1hZnRlci1pbXBvcnQnKSxcbiAgJ3ByZWZlci1kZWZhdWx0LWV4cG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvcHJlZmVyLWRlZmF1bHQtZXhwb3J0JyksXG4gICduby1kZWZhdWx0LWV4cG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tZGVmYXVsdC1leHBvcnQnKSxcbiAgJ25vLW5hbWVkLWV4cG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tbmFtZWQtZXhwb3J0JyksXG4gICduby1keW5hbWljLXJlcXVpcmUnOiByZXF1aXJlKCcuL3J1bGVzL25vLWR5bmFtaWMtcmVxdWlyZScpLFxuICAndW5hbWJpZ3VvdXMnOiByZXF1aXJlKCcuL3J1bGVzL3VuYW1iaWd1b3VzJyksXG4gICduby11bmFzc2lnbmVkLWltcG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tdW5hc3NpZ25lZC1pbXBvcnQnKSxcbiAgJ25vLXVzZWxlc3MtcGF0aC1zZWdtZW50cyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tdXNlbGVzcy1wYXRoLXNlZ21lbnRzJyksXG4gICdkeW5hbWljLWltcG9ydC1jaHVua25hbWUnOiByZXF1aXJlKCcuL3J1bGVzL2R5bmFtaWMtaW1wb3J0LWNodW5rbmFtZScpLFxuICAnbm8taW1wb3J0LW1vZHVsZS1leHBvcnRzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1pbXBvcnQtbW9kdWxlLWV4cG9ydHMnKSxcblxuICAvLyBleHBvcnRcbiAgJ2V4cG9ydHMtbGFzdCc6IHJlcXVpcmUoJy4vcnVsZXMvZXhwb3J0cy1sYXN0JyksXG5cbiAgLy8gbWV0YWRhdGEtYmFzZWRcbiAgJ25vLWRlcHJlY2F0ZWQnOiByZXF1aXJlKCcuL3J1bGVzL25vLWRlcHJlY2F0ZWQnKSxcblxuICAvLyBkZXByZWNhdGVkIGFsaWFzZXMgdG8gcnVsZXNcbiAgJ2ltcG9ydHMtZmlyc3QnOiByZXF1aXJlKCcuL3J1bGVzL2ltcG9ydHMtZmlyc3QnKSxcbn07XG5cbmV4cG9ydCBjb25zdCBjb25maWdzID0ge1xuICAncmVjb21tZW5kZWQnOiByZXF1aXJlKCcuLi9jb25maWcvcmVjb21tZW5kZWQnKSxcblxuICAnZXJyb3JzJzogcmVxdWlyZSgnLi4vY29uZmlnL2Vycm9ycycpLFxuICAnd2FybmluZ3MnOiByZXF1aXJlKCcuLi9jb25maWcvd2FybmluZ3MnKSxcblxuICAvLyBzaGhoaC4uLiB3b3JrIGluIHByb2dyZXNzIFwic2VjcmV0XCIgcnVsZXNcbiAgJ3N0YWdlLTAnOiByZXF1aXJlKCcuLi9jb25maWcvc3RhZ2UtMCcpLFxuXG4gIC8vIHVzZWZ1bCBzdHVmZiBmb3IgZm9sa3MgdXNpbmcgdmFyaW91cyBlbnZpcm9ubWVudHNcbiAgJ3JlYWN0JzogcmVxdWlyZSgnLi4vY29uZmlnL3JlYWN0JyksXG4gICdyZWFjdC1uYXRpdmUnOiByZXF1aXJlKCcuLi9jb25maWcvcmVhY3QtbmF0aXZlJyksXG4gICdlbGVjdHJvbic6IHJlcXVpcmUoJy4uL2NvbmZpZy9lbGVjdHJvbicpLFxuICAndHlwZXNjcmlwdCc6IHJlcXVpcmUoJy4uL2NvbmZpZy90eXBlc2NyaXB0JyksXG59O1xuIl19
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJydWxlcyIsInJlcXVpcmUiLCJjb25maWdzIl0sIm1hcHBpbmdzIjoiMkVBQU8sSUFBTUEsd0JBQVE7QUFDbkIsbUJBQWlCQyxRQUFRLHVCQUFSLENBREU7QUFFbkIsV0FBU0EsUUFBUSxlQUFSLENBRlU7QUFHbkIsYUFBV0EsUUFBUSxpQkFBUixDQUhRO0FBSW5CLGVBQWFBLFFBQVEsbUJBQVIsQ0FKTTtBQUtuQixrQkFBZ0JBLFFBQVEsc0JBQVIsQ0FMRztBQU1uQixZQUFVQSxRQUFRLGdCQUFSLENBTlM7QUFPbkIsd0JBQXNCQSxRQUFRLDRCQUFSLENBUEg7QUFRbkIsZ0JBQWNBLFFBQVEsb0JBQVIsQ0FSSztBQVNuQix5QkFBdUJBLFFBQVEsNkJBQVIsQ0FUSjtBQVVuQix5QkFBdUJBLFFBQVEsNkJBQVIsQ0FWSjtBQVduQixtQkFBaUJBLFFBQVEsdUJBQVIsQ0FYRTtBQVluQiwwQkFBd0JBLFFBQVEsOEJBQVIsQ0FaTDtBQWFuQixnQ0FBOEJBLFFBQVEsb0NBQVIsQ0FiWDtBQWNuQixxQ0FBbUNBLFFBQVEseUNBQVIsQ0FkaEI7O0FBZ0JuQixvQkFBa0JBLFFBQVEsd0JBQVIsQ0FoQkM7QUFpQm5CLGNBQVlBLFFBQVEsa0JBQVIsQ0FqQk87QUFrQm5CLHNCQUFvQkEsUUFBUSwwQkFBUixDQWxCRDtBQW1CbkIseUJBQXVCQSxRQUFRLDZCQUFSLENBbkJKO0FBb0JuQixnQ0FBOEJBLFFBQVEsb0NBQVIsQ0FwQlg7QUFxQm5CLGlDQUErQkEsUUFBUSxxQ0FBUixDQXJCWjtBQXNCbkIsdUJBQXFCQSxRQUFRLDJCQUFSLENBdEJGOztBQXdCbkIsaUJBQWVBLFFBQVEscUJBQVIsQ0F4Qkk7QUF5Qm5CLFlBQVVBLFFBQVEsZ0JBQVIsQ0F6QlM7QUEwQm5CLG1CQUFpQkEsUUFBUSx1QkFBUixDQTFCRTtBQTJCbkIsV0FBU0EsUUFBUSxlQUFSLENBM0JVO0FBNEJuQixzQkFBb0JBLFFBQVEsMEJBQVIsQ0E1QkQ7QUE2Qm5CLGdDQUE4QkEsUUFBUSxvQ0FBUixDQTdCWDtBQThCbkIsc0JBQW9CQSxRQUFRLDBCQUFSLENBOUJEO0FBK0JuQix1QkFBcUJBLFFBQVEsMkJBQVIsQ0EvQkY7QUFnQ25CLDhCQUE0QkEsUUFBUSxrQ0FBUixDQWhDVDtBQWlDbkIsV0FBU0EsUUFBUSxlQUFSLENBakNVO0FBa0NuQiwwQkFBd0JBLFFBQVEsOEJBQVIsQ0FsQ0w7QUFtQ25CLDJCQUF5QkEsUUFBUSwrQkFBUixDQW5DTjtBQW9DbkIsdUJBQXFCQSxRQUFRLDJCQUFSLENBcENGO0FBcUNuQixxQkFBbUJBLFFBQVEseUJBQVIsQ0FyQ0E7QUFzQ25CLHdCQUFzQkEsUUFBUSw0QkFBUixDQXRDSDtBQXVDbkIsaUJBQWVBLFFBQVEscUJBQVIsQ0F2Q0k7QUF3Q25CLDBCQUF3QkEsUUFBUSw4QkFBUixDQXhDTDtBQXlDbkIsOEJBQTRCQSxRQUFRLGtDQUFSLENBekNUO0FBMENuQiw4QkFBNEJBLFFBQVEsa0NBQVIsQ0ExQ1Q7QUEyQ25CLDhCQUE0QkEsUUFBUSxrQ0FBUixDQTNDVDtBQTRDbkIsMkJBQXlCQSxRQUFRLCtCQUFSLENBNUNOOztBQThDbkI7QUFDQSxrQkFBZ0JBLFFBQVEsc0JBQVIsQ0EvQ0c7O0FBaURuQjtBQUNBLG1CQUFpQkEsUUFBUSx1QkFBUixDQWxERTs7QUFvRG5CO0FBQ0EsbUJBQWlCQSxRQUFRLHVCQUFSLENBckRFLEVBQWQ7OztBQXdEQSxJQUFNQyw0QkFBVTtBQUNyQixpQkFBZUQsUUFBUSx1QkFBUixDQURNOztBQUdyQixZQUFVQSxRQUFRLGtCQUFSLENBSFc7QUFJckIsY0FBWUEsUUFBUSxvQkFBUixDQUpTOztBQU1yQjtBQUNBLGFBQVdBLFFBQVEsbUJBQVIsQ0FQVTs7QUFTckI7QUFDQSxXQUFTQSxRQUFRLGlCQUFSLENBVlk7QUFXckIsa0JBQWdCQSxRQUFRLHdCQUFSLENBWEs7QUFZckIsY0FBWUEsUUFBUSxvQkFBUixDQVpTO0FBYXJCLGdCQUFjQSxRQUFRLHNCQUFSLENBYk8sRUFBaEIiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcnVsZXMgPSB7XG4gICduby11bnJlc29sdmVkJzogcmVxdWlyZSgnLi9ydWxlcy9uby11bnJlc29sdmVkJyksXG4gICduYW1lZCc6IHJlcXVpcmUoJy4vcnVsZXMvbmFtZWQnKSxcbiAgJ2RlZmF1bHQnOiByZXF1aXJlKCcuL3J1bGVzL2RlZmF1bHQnKSxcbiAgJ25hbWVzcGFjZSc6IHJlcXVpcmUoJy4vcnVsZXMvbmFtZXNwYWNlJyksXG4gICduby1uYW1lc3BhY2UnOiByZXF1aXJlKCcuL3J1bGVzL25vLW5hbWVzcGFjZScpLFxuICAnZXhwb3J0JzogcmVxdWlyZSgnLi9ydWxlcy9leHBvcnQnKSxcbiAgJ25vLW11dGFibGUtZXhwb3J0cyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tbXV0YWJsZS1leHBvcnRzJyksXG4gICdleHRlbnNpb25zJzogcmVxdWlyZSgnLi9ydWxlcy9leHRlbnNpb25zJyksXG4gICduby1yZXN0cmljdGVkLXBhdGhzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1yZXN0cmljdGVkLXBhdGhzJyksXG4gICduby1pbnRlcm5hbC1tb2R1bGVzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1pbnRlcm5hbC1tb2R1bGVzJyksXG4gICdncm91cC1leHBvcnRzJzogcmVxdWlyZSgnLi9ydWxlcy9ncm91cC1leHBvcnRzJyksXG4gICduby1yZWxhdGl2ZS1wYWNrYWdlcyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tcmVsYXRpdmUtcGFja2FnZXMnKSxcbiAgJ25vLXJlbGF0aXZlLXBhcmVudC1pbXBvcnRzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1yZWxhdGl2ZS1wYXJlbnQtaW1wb3J0cycpLFxuICAnY29uc2lzdGVudC10eXBlLXNwZWNpZmllci1zdHlsZSc6IHJlcXVpcmUoJy4vcnVsZXMvY29uc2lzdGVudC10eXBlLXNwZWNpZmllci1zdHlsZScpLFxuXG4gICduby1zZWxmLWltcG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tc2VsZi1pbXBvcnQnKSxcbiAgJ25vLWN5Y2xlJzogcmVxdWlyZSgnLi9ydWxlcy9uby1jeWNsZScpLFxuICAnbm8tbmFtZWQtZGVmYXVsdCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tbmFtZWQtZGVmYXVsdCcpLFxuICAnbm8tbmFtZWQtYXMtZGVmYXVsdCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tbmFtZWQtYXMtZGVmYXVsdCcpLFxuICAnbm8tbmFtZWQtYXMtZGVmYXVsdC1tZW1iZXInOiByZXF1aXJlKCcuL3J1bGVzL25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyJyksXG4gICduby1hbm9ueW1vdXMtZGVmYXVsdC1leHBvcnQnOiByZXF1aXJlKCcuL3J1bGVzL25vLWFub255bW91cy1kZWZhdWx0LWV4cG9ydCcpLFxuICAnbm8tdW51c2VkLW1vZHVsZXMnOiByZXF1aXJlKCcuL3J1bGVzL25vLXVudXNlZC1tb2R1bGVzJyksXG5cbiAgJ25vLWNvbW1vbmpzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1jb21tb25qcycpLFxuICAnbm8tYW1kJzogcmVxdWlyZSgnLi9ydWxlcy9uby1hbWQnKSxcbiAgJ25vLWR1cGxpY2F0ZXMnOiByZXF1aXJlKCcuL3J1bGVzL25vLWR1cGxpY2F0ZXMnKSxcbiAgJ2ZpcnN0JzogcmVxdWlyZSgnLi9ydWxlcy9maXJzdCcpLFxuICAnbWF4LWRlcGVuZGVuY2llcyc6IHJlcXVpcmUoJy4vcnVsZXMvbWF4LWRlcGVuZGVuY2llcycpLFxuICAnbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMnOiByZXF1aXJlKCcuL3J1bGVzL25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJyksXG4gICduby1hYnNvbHV0ZS1wYXRoJzogcmVxdWlyZSgnLi9ydWxlcy9uby1hYnNvbHV0ZS1wYXRoJyksXG4gICduby1ub2RlanMtbW9kdWxlcyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tbm9kZWpzLW1vZHVsZXMnKSxcbiAgJ25vLXdlYnBhY2stbG9hZGVyLXN5bnRheCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8td2VicGFjay1sb2FkZXItc3ludGF4JyksXG4gICdvcmRlcic6IHJlcXVpcmUoJy4vcnVsZXMvb3JkZXInKSxcbiAgJ25ld2xpbmUtYWZ0ZXItaW1wb3J0JzogcmVxdWlyZSgnLi9ydWxlcy9uZXdsaW5lLWFmdGVyLWltcG9ydCcpLFxuICAncHJlZmVyLWRlZmF1bHQtZXhwb3J0JzogcmVxdWlyZSgnLi9ydWxlcy9wcmVmZXItZGVmYXVsdC1leHBvcnQnKSxcbiAgJ25vLWRlZmF1bHQtZXhwb3J0JzogcmVxdWlyZSgnLi9ydWxlcy9uby1kZWZhdWx0LWV4cG9ydCcpLFxuICAnbm8tbmFtZWQtZXhwb3J0JzogcmVxdWlyZSgnLi9ydWxlcy9uby1uYW1lZC1leHBvcnQnKSxcbiAgJ25vLWR5bmFtaWMtcmVxdWlyZSc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tZHluYW1pYy1yZXF1aXJlJyksXG4gICd1bmFtYmlndW91cyc6IHJlcXVpcmUoJy4vcnVsZXMvdW5hbWJpZ3VvdXMnKSxcbiAgJ25vLXVuYXNzaWduZWQtaW1wb3J0JzogcmVxdWlyZSgnLi9ydWxlcy9uby11bmFzc2lnbmVkLWltcG9ydCcpLFxuICAnbm8tdXNlbGVzcy1wYXRoLXNlZ21lbnRzJzogcmVxdWlyZSgnLi9ydWxlcy9uby11c2VsZXNzLXBhdGgtc2VnbWVudHMnKSxcbiAgJ2R5bmFtaWMtaW1wb3J0LWNodW5rbmFtZSc6IHJlcXVpcmUoJy4vcnVsZXMvZHluYW1pYy1pbXBvcnQtY2h1bmtuYW1lJyksXG4gICduby1pbXBvcnQtbW9kdWxlLWV4cG9ydHMnOiByZXF1aXJlKCcuL3J1bGVzL25vLWltcG9ydC1tb2R1bGUtZXhwb3J0cycpLFxuICAnbm8tZW1wdHktbmFtZWQtYmxvY2tzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1lbXB0eS1uYW1lZC1ibG9ja3MnKSxcblxuICAvLyBleHBvcnRcbiAgJ2V4cG9ydHMtbGFzdCc6IHJlcXVpcmUoJy4vcnVsZXMvZXhwb3J0cy1sYXN0JyksXG5cbiAgLy8gbWV0YWRhdGEtYmFzZWRcbiAgJ25vLWRlcHJlY2F0ZWQnOiByZXF1aXJlKCcuL3J1bGVzL25vLWRlcHJlY2F0ZWQnKSxcblxuICAvLyBkZXByZWNhdGVkIGFsaWFzZXMgdG8gcnVsZXNcbiAgJ2ltcG9ydHMtZmlyc3QnOiByZXF1aXJlKCcuL3J1bGVzL2ltcG9ydHMtZmlyc3QnKSxcbn07XG5cbmV4cG9ydCBjb25zdCBjb25maWdzID0ge1xuICAncmVjb21tZW5kZWQnOiByZXF1aXJlKCcuLi9jb25maWcvcmVjb21tZW5kZWQnKSxcblxuICAnZXJyb3JzJzogcmVxdWlyZSgnLi4vY29uZmlnL2Vycm9ycycpLFxuICAnd2FybmluZ3MnOiByZXF1aXJlKCcuLi9jb25maWcvd2FybmluZ3MnKSxcblxuICAvLyBzaGhoaC4uLiB3b3JrIGluIHByb2dyZXNzIFwic2VjcmV0XCIgcnVsZXNcbiAgJ3N0YWdlLTAnOiByZXF1aXJlKCcuLi9jb25maWcvc3RhZ2UtMCcpLFxuXG4gIC8vIHVzZWZ1bCBzdHVmZiBmb3IgZm9sa3MgdXNpbmcgdmFyaW91cyBlbnZpcm9ubWVudHNcbiAgJ3JlYWN0JzogcmVxdWlyZSgnLi4vY29uZmlnL3JlYWN0JyksXG4gICdyZWFjdC1uYXRpdmUnOiByZXF1aXJlKCcuLi9jb25maWcvcmVhY3QtbmF0aXZlJyksXG4gICdlbGVjdHJvbic6IHJlcXVpcmUoJy4uL2NvbmZpZy9lbGVjdHJvbicpLFxuICAndHlwZXNjcmlwdCc6IHJlcXVpcmUoJy4uL2NvbmZpZy90eXBlc2NyaXB0JyksXG59O1xuIl19
\ No newline at end of file
diff --git a/node_modules/eslint-plugin-import/lib/rules/consistent-type-specifier-style.js b/node_modules/eslint-plugin-import/lib/rules/consistent-type-specifier-style.js
new file mode 100644
index 000000000..676f80781
--- /dev/null
+++ b/node_modules/eslint-plugin-import/lib/rules/consistent-type-specifier-style.js
@@ -0,0 +1,217 @@
+'use strict';var _docsUrl = require('../docsUrl');var _docsUrl2 = _interopRequireDefault(_docsUrl);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}
+
+function isComma(token) {
+ return token.type === 'Punctuator' && token.value === ',';
+}
+
+function removeSpecifiers(fixes, fixer, sourceCode, specifiers) {var _iteratorNormalCompletion = true;var _didIteratorError = false;var _iteratorError = undefined;try {
+ for (var _iterator = specifiers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {var specifier = _step.value;
+ // remove the trailing comma
+ var comma = sourceCode.getTokenAfter(specifier, isComma);
+ if (comma) {
+ fixes.push(fixer.remove(comma));
+ }
+ fixes.push(fixer.remove(specifier));
+ }} catch (err) {_didIteratorError = true;_iteratorError = err;} finally {try {if (!_iteratorNormalCompletion && _iterator['return']) {_iterator['return']();}} finally {if (_didIteratorError) {throw _iteratorError;}}}
+}
+
+function getImportText(
+node,
+sourceCode,
+specifiers,
+kind)
+{
+ var sourceString = sourceCode.getText(node.source);
+ if (specifiers.length === 0) {
+ return '';
+ }
+
+ var names = specifiers.map(function (s) {
+ if (s.imported.name === s.local.name) {
+ return s.imported.name;
+ }
+ return String(s.imported.name) + ' as ' + String(s.local.name);
+ });
+ // insert a fresh top-level import
+ return 'import ' + String(kind) + ' {' + String(names.join(', ')) + '} from ' + String(sourceString) + ';';
+}
+
+module.exports = {
+ meta: {
+ type: 'suggestion',
+ docs: {
+ category: 'Style guide',
+ description: 'Enforce or ban the use of inline type-only markers for named imports.',
+ url: (0, _docsUrl2['default'])('consistent-type-specifier-style') },
+
+ fixable: 'code',
+ schema: [
+ {
+ type: 'string',
+ 'enum': ['prefer-inline', 'prefer-top-level'],
+ 'default': 'prefer-inline' }] },
+
+
+
+
+ create: function () {function create(context) {
+ var sourceCode = context.getSourceCode();
+
+ if (context.options[0] === 'prefer-inline') {
+ return {
+ ImportDeclaration: function () {function ImportDeclaration(node) {
+ if (node.importKind === 'value' || node.importKind == null) {
+ // top-level value / unknown is valid
+ return;
+ }
+
+ if (
+ // no specifiers (import type {} from '') have no specifiers to mark as inline
+ node.specifiers.length === 0 ||
+ node.specifiers.length === 1 && (
+ // default imports are both "inline" and "top-level"
+ node.specifiers[0].type === 'ImportDefaultSpecifier' ||
+ // namespace imports are both "inline" and "top-level"
+ node.specifiers[0].type === 'ImportNamespaceSpecifier'))
+ {
+ return;
+ }
+
+ context.report({
+ node: node,
+ message: 'Prefer using inline {{kind}} specifiers instead of a top-level {{kind}}-only import.',
+ data: {
+ kind: node.importKind },
+
+ fix: function () {function fix(fixer) {
+ var kindToken = sourceCode.getFirstToken(node, { skip: 1 });
+
+ return [].concat(
+ kindToken ? fixer.remove(kindToken) : [],
+ node.specifiers.map(function (specifier) {return fixer.insertTextBefore(specifier, String(node.importKind) + ' ');}));
+
+ }return fix;}() });
+
+ }return ImportDeclaration;}() };
+
+ }
+
+ // prefer-top-level
+ return {
+ ImportDeclaration: function () {function ImportDeclaration(node) {
+ if (
+ // already top-level is valid
+ node.importKind === 'type' ||
+ node.importKind === 'typeof' ||
+ // no specifiers (import {} from '') cannot have inline - so is valid
+ node.specifiers.length === 0 ||
+ node.specifiers.length === 1 && (
+ // default imports are both "inline" and "top-level"
+ node.specifiers[0].type === 'ImportDefaultSpecifier' ||
+ // namespace imports are both "inline" and "top-level"
+ node.specifiers[0].type === 'ImportNamespaceSpecifier'))
+ {
+ return;
+ }
+
+ var typeSpecifiers = [];
+ var typeofSpecifiers = [];
+ var valueSpecifiers = [];
+ var defaultSpecifier = null;var _iteratorNormalCompletion2 = true;var _didIteratorError2 = false;var _iteratorError2 = undefined;try {
+ for (var _iterator2 = node.specifiers[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {var specifier = _step2.value;
+ if (specifier.type === 'ImportDefaultSpecifier') {
+ defaultSpecifier = specifier;
+ continue;
+ }
+
+ if (specifier.importKind === 'type') {
+ typeSpecifiers.push(specifier);
+ } else if (specifier.importKind === 'typeof') {
+ typeofSpecifiers.push(specifier);
+ } else if (specifier.importKind === 'value' || specifier.importKind == null) {
+ valueSpecifiers.push(specifier);
+ }
+ }} catch (err) {_didIteratorError2 = true;_iteratorError2 = err;} finally {try {if (!_iteratorNormalCompletion2 && _iterator2['return']) {_iterator2['return']();}} finally {if (_didIteratorError2) {throw _iteratorError2;}}}
+
+ var typeImport = getImportText(node, sourceCode, typeSpecifiers, 'type');
+ var typeofImport = getImportText(node, sourceCode, typeofSpecifiers, 'typeof');
+ var newImports = (String(typeImport) + '\n' + String(typeofImport)).trim();
+
+ if (typeSpecifiers.length + typeofSpecifiers.length === node.specifiers.length) {
+ // all specifiers have inline specifiers - so we replace the entire import
+ var kind = [].concat(
+ typeSpecifiers.length > 0 ? 'type' : [],
+ typeofSpecifiers.length > 0 ? 'typeof' : []);
+
+
+ context.report({
+ node: node,
+ message: 'Prefer using a top-level {{kind}}-only import instead of inline {{kind}} specifiers.',
+ data: {
+ kind: kind.join('/') },
+
+ fix: function () {function fix(fixer) {
+ return fixer.replaceText(node, newImports);
+ }return fix;}() });
+
+ } else {
+ // remove specific specifiers and insert new imports for them
+ var _iteratorNormalCompletion3 = true;var _didIteratorError3 = false;var _iteratorError3 = undefined;try {for (var _iterator3 = typeSpecifiers.concat(typeofSpecifiers)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {var _specifier = _step3.value;
+ context.report({
+ node: _specifier,
+ message: 'Prefer using a top-level {{kind}}-only import instead of inline {{kind}} specifiers.',
+ data: {
+ kind: _specifier.importKind },
+
+ fix: function () {function fix(fixer) {
+ var fixes = [];
+
+ // if there are no value specifiers, then the other report fixer will be called, not this one
+
+ if (valueSpecifiers.length > 0) {
+ // import { Value, type Type } from 'mod';
+
+ // we can just remove the type specifiers
+ removeSpecifiers(fixes, fixer, sourceCode, typeSpecifiers);
+ removeSpecifiers(fixes, fixer, sourceCode, typeofSpecifiers);
+
+ // make the import nicely formatted by also removing the trailing comma after the last value import
+ // eg
+ // import { Value, type Type } from 'mod';
+ // to
+ // import { Value } from 'mod';
+ // not
+ // import { Value, } from 'mod';
+ var maybeComma = sourceCode.getTokenAfter(valueSpecifiers[valueSpecifiers.length - 1]);
+ if (isComma(maybeComma)) {
+ fixes.push(fixer.remove(maybeComma));
+ }
+ } else if (defaultSpecifier) {
+ // import Default, { type Type } from 'mod';
+
+ // remove the entire curly block so we don't leave an empty one behind
+ // NOTE - the default specifier *must* be the first specifier always!
+ // so a comma exists that we also have to clean up or else it's bad syntax
+ var comma = sourceCode.getTokenAfter(defaultSpecifier, isComma);
+ var closingBrace = sourceCode.getTokenAfter(
+ node.specifiers[node.specifiers.length - 1],
+ function (token) {return token.type === 'Punctuator' && token.value === '}';});
+
+ fixes.push(fixer.removeRange([
+ comma.range[0],
+ closingBrace.range[1]]));
+
+ }
+
+ return fixes.concat(
+ // insert the new imports after the old declaration
+ fixer.insertTextAfter(node, '\n' + String(newImports)));
+
+ }return fix;}() });
+
+ }} catch (err) {_didIteratorError3 = true;_iteratorError3 = err;} finally {try {if (!_iteratorNormalCompletion3 && _iterator3['return']) {_iterator3['return']();}} finally {if (_didIteratorError3) {throw _iteratorError3;}}}
+ }
+ }return ImportDeclaration;}() };
+
+ }return create;}() };
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9jb25zaXN0ZW50LXR5cGUtc3BlY2lmaWVyLXN0eWxlLmpzIl0sIm5hbWVzIjpbImlzQ29tbWEiLCJ0b2tlbiIsInR5cGUiLCJ2YWx1ZSIsInJlbW92ZVNwZWNpZmllcnMiLCJmaXhlcyIsImZpeGVyIiwic291cmNlQ29kZSIsInNwZWNpZmllcnMiLCJzcGVjaWZpZXIiLCJjb21tYSIsImdldFRva2VuQWZ0ZXIiLCJwdXNoIiwicmVtb3ZlIiwiZ2V0SW1wb3J0VGV4dCIsIm5vZGUiLCJraW5kIiwic291cmNlU3RyaW5nIiwiZ2V0VGV4dCIsInNvdXJjZSIsImxlbmd0aCIsIm5hbWVzIiwibWFwIiwicyIsImltcG9ydGVkIiwibmFtZSIsImxvY2FsIiwiam9pbiIsIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwiZG9jcyIsImNhdGVnb3J5IiwiZGVzY3JpcHRpb24iLCJ1cmwiLCJmaXhhYmxlIiwic2NoZW1hIiwiY3JlYXRlIiwiY29udGV4dCIsImdldFNvdXJjZUNvZGUiLCJvcHRpb25zIiwiSW1wb3J0RGVjbGFyYXRpb24iLCJpbXBvcnRLaW5kIiwicmVwb3J0IiwibWVzc2FnZSIsImRhdGEiLCJmaXgiLCJraW5kVG9rZW4iLCJnZXRGaXJzdFRva2VuIiwic2tpcCIsImNvbmNhdCIsImluc2VydFRleHRCZWZvcmUiLCJ0eXBlU3BlY2lmaWVycyIsInR5cGVvZlNwZWNpZmllcnMiLCJ2YWx1ZVNwZWNpZmllcnMiLCJkZWZhdWx0U3BlY2lmaWVyIiwidHlwZUltcG9ydCIsInR5cGVvZkltcG9ydCIsIm5ld0ltcG9ydHMiLCJ0cmltIiwicmVwbGFjZVRleHQiLCJtYXliZUNvbW1hIiwiY2xvc2luZ0JyYWNlIiwicmVtb3ZlUmFuZ2UiLCJyYW5nZSIsImluc2VydFRleHRBZnRlciJdLCJtYXBwaW5ncyI6ImFBQUEscUM7O0FBRUEsU0FBU0EsT0FBVCxDQUFpQkMsS0FBakIsRUFBd0I7QUFDdEIsU0FBT0EsTUFBTUMsSUFBTixLQUFlLFlBQWYsSUFBK0JELE1BQU1FLEtBQU4sS0FBZ0IsR0FBdEQ7QUFDRDs7QUFFRCxTQUFTQyxnQkFBVCxDQUEwQkMsS0FBMUIsRUFBaUNDLEtBQWpDLEVBQXdDQyxVQUF4QyxFQUFvREMsVUFBcEQsRUFBZ0U7QUFDOUQseUJBQXdCQSxVQUF4Qiw4SEFBb0MsS0FBekJDLFNBQXlCO0FBQ2xDO0FBQ0EsVUFBTUMsUUFBUUgsV0FBV0ksYUFBWCxDQUF5QkYsU0FBekIsRUFBb0NULE9BQXBDLENBQWQ7QUFDQSxVQUFJVSxLQUFKLEVBQVc7QUFDVEwsY0FBTU8sSUFBTixDQUFXTixNQUFNTyxNQUFOLENBQWFILEtBQWIsQ0FBWDtBQUNEO0FBQ0RMLFlBQU1PLElBQU4sQ0FBV04sTUFBTU8sTUFBTixDQUFhSixTQUFiLENBQVg7QUFDRCxLQVI2RDtBQVMvRDs7QUFFRCxTQUFTSyxhQUFUO0FBQ0VDLElBREY7QUFFRVIsVUFGRjtBQUdFQyxVQUhGO0FBSUVRLElBSkY7QUFLRTtBQUNBLE1BQU1DLGVBQWVWLFdBQVdXLE9BQVgsQ0FBbUJILEtBQUtJLE1BQXhCLENBQXJCO0FBQ0EsTUFBSVgsV0FBV1ksTUFBWCxLQUFzQixDQUExQixFQUE2QjtBQUMzQixXQUFPLEVBQVA7QUFDRDs7QUFFRCxNQUFNQyxRQUFRYixXQUFXYyxHQUFYLENBQWUsYUFBSztBQUNoQyxRQUFJQyxFQUFFQyxRQUFGLENBQVdDLElBQVgsS0FBb0JGLEVBQUVHLEtBQUYsQ0FBUUQsSUFBaEMsRUFBc0M7QUFDcEMsYUFBT0YsRUFBRUMsUUFBRixDQUFXQyxJQUFsQjtBQUNEO0FBQ0Qsa0JBQVVGLEVBQUVDLFFBQUYsQ0FBV0MsSUFBckIsb0JBQWdDRixFQUFFRyxLQUFGLENBQVFELElBQXhDO0FBQ0QsR0FMYSxDQUFkO0FBTUE7QUFDQSw0QkFBaUJULElBQWpCLGtCQUEwQkssTUFBTU0sSUFBTixDQUFXLElBQVgsQ0FBMUIsdUJBQW9EVixZQUFwRDtBQUNEOztBQUVEVyxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSjVCLFVBQU0sWUFERjtBQUVKNkIsVUFBTTtBQUNKQyxnQkFBVSxhQUROO0FBRUpDLG1CQUFhLHVFQUZUO0FBR0pDLFdBQUssMEJBQVEsaUNBQVIsQ0FIRCxFQUZGOztBQU9KQyxhQUFTLE1BUEw7QUFRSkMsWUFBUTtBQUNOO0FBQ0VsQyxZQUFNLFFBRFI7QUFFRSxjQUFNLENBQUMsZUFBRCxFQUFrQixrQkFBbEIsQ0FGUjtBQUdFLGlCQUFTLGVBSFgsRUFETSxDQVJKLEVBRFM7Ozs7O0FBa0JmbUMsUUFsQmUsK0JBa0JSQyxPQWxCUSxFQWtCQztBQUNkLFVBQU0vQixhQUFhK0IsUUFBUUMsYUFBUixFQUFuQjs7QUFFQSxVQUFJRCxRQUFRRSxPQUFSLENBQWdCLENBQWhCLE1BQXVCLGVBQTNCLEVBQTRDO0FBQzFDLGVBQU87QUFDTEMsMkJBREssMENBQ2ExQixJQURiLEVBQ21CO0FBQ3RCLGtCQUFJQSxLQUFLMkIsVUFBTCxLQUFvQixPQUFwQixJQUErQjNCLEtBQUsyQixVQUFMLElBQW1CLElBQXRELEVBQTREO0FBQzFEO0FBQ0E7QUFDRDs7QUFFRDtBQUNFO0FBQ0EzQixtQkFBS1AsVUFBTCxDQUFnQlksTUFBaEIsS0FBMkIsQ0FBM0I7QUFDQ0wsbUJBQUtQLFVBQUwsQ0FBZ0JZLE1BQWhCLEtBQTJCLENBQTNCO0FBQ0M7QUFDQ0wsbUJBQUtQLFVBQUwsQ0FBZ0IsQ0FBaEIsRUFBbUJOLElBQW5CLEtBQTRCLHdCQUE1QjtBQUNDO0FBQ0FhLG1CQUFLUCxVQUFMLENBQWdCLENBQWhCLEVBQW1CTixJQUFuQixLQUE0QiwwQkFKL0IsQ0FISDtBQVFFO0FBQ0E7QUFDRDs7QUFFRG9DLHNCQUFRSyxNQUFSLENBQWU7QUFDYjVCLDBCQURhO0FBRWI2Qix5QkFBUyxzRkFGSTtBQUdiQyxzQkFBTTtBQUNKN0Isd0JBQU1ELEtBQUsyQixVQURQLEVBSE87O0FBTWJJLG1CQU5hLDRCQU1UeEMsS0FOUyxFQU1GO0FBQ1Qsd0JBQU15QyxZQUFZeEMsV0FBV3lDLGFBQVgsQ0FBeUJqQyxJQUF6QixFQUErQixFQUFFa0MsTUFBTSxDQUFSLEVBQS9CLENBQWxCOztBQUVBLDJCQUFPLEdBQUdDLE1BQUg7QUFDTEgsZ0NBQVl6QyxNQUFNTyxNQUFOLENBQWFrQyxTQUFiLENBQVosR0FBc0MsRUFEakM7QUFFTGhDLHlCQUFLUCxVQUFMLENBQWdCYyxHQUFoQixDQUFvQixVQUFDYixTQUFELFVBQWVILE1BQU02QyxnQkFBTixDQUF1QjFDLFNBQXZCLFNBQXFDTSxLQUFLMkIsVUFBMUMsUUFBZixFQUFwQixDQUZLLENBQVA7O0FBSUQsbUJBYlksZ0JBQWY7O0FBZUQsYUFsQ0ksOEJBQVA7O0FBb0NEOztBQUVEO0FBQ0EsYUFBTztBQUNMRCx5QkFESywwQ0FDYTFCLElBRGIsRUFDbUI7QUFDdEI7QUFDRTtBQUNBQSxpQkFBSzJCLFVBQUwsS0FBb0IsTUFBcEI7QUFDQTNCLGlCQUFLMkIsVUFBTCxLQUFvQixRQURwQjtBQUVBO0FBQ0EzQixpQkFBS1AsVUFBTCxDQUFnQlksTUFBaEIsS0FBMkIsQ0FIM0I7QUFJQ0wsaUJBQUtQLFVBQUwsQ0FBZ0JZLE1BQWhCLEtBQTJCLENBQTNCO0FBQ0M7QUFDQ0wsaUJBQUtQLFVBQUwsQ0FBZ0IsQ0FBaEIsRUFBbUJOLElBQW5CLEtBQTRCLHdCQUE1QjtBQUNDO0FBQ0FhLGlCQUFLUCxVQUFMLENBQWdCLENBQWhCLEVBQW1CTixJQUFuQixLQUE0QiwwQkFKL0IsQ0FOSDtBQVdFO0FBQ0E7QUFDRDs7QUFFRCxnQkFBTWtELGlCQUFpQixFQUF2QjtBQUNBLGdCQUFNQyxtQkFBbUIsRUFBekI7QUFDQSxnQkFBTUMsa0JBQWtCLEVBQXhCO0FBQ0EsZ0JBQUlDLG1CQUFtQixJQUF2QixDQW5Cc0I7QUFvQnRCLG9DQUF3QnhDLEtBQUtQLFVBQTdCLG1JQUF5QyxLQUE5QkMsU0FBOEI7QUFDdkMsb0JBQUlBLFVBQVVQLElBQVYsS0FBbUIsd0JBQXZCLEVBQWlEO0FBQy9DcUQscUNBQW1COUMsU0FBbkI7QUFDQTtBQUNEOztBQUVELG9CQUFJQSxVQUFVaUMsVUFBVixLQUF5QixNQUE3QixFQUFxQztBQUNuQ1UsaUNBQWV4QyxJQUFmLENBQW9CSCxTQUFwQjtBQUNELGlCQUZELE1BRU8sSUFBSUEsVUFBVWlDLFVBQVYsS0FBeUIsUUFBN0IsRUFBdUM7QUFDNUNXLG1DQUFpQnpDLElBQWpCLENBQXNCSCxTQUF0QjtBQUNELGlCQUZNLE1BRUEsSUFBSUEsVUFBVWlDLFVBQVYsS0FBeUIsT0FBekIsSUFBb0NqQyxVQUFVaUMsVUFBVixJQUF3QixJQUFoRSxFQUFzRTtBQUMzRVksa0NBQWdCMUMsSUFBaEIsQ0FBcUJILFNBQXJCO0FBQ0Q7QUFDRixlQWpDcUI7O0FBbUN0QixnQkFBTStDLGFBQWExQyxjQUFjQyxJQUFkLEVBQW9CUixVQUFwQixFQUFnQzZDLGNBQWhDLEVBQWdELE1BQWhELENBQW5CO0FBQ0EsZ0JBQU1LLGVBQWUzQyxjQUFjQyxJQUFkLEVBQW9CUixVQUFwQixFQUFnQzhDLGdCQUFoQyxFQUFrRCxRQUFsRCxDQUFyQjtBQUNBLGdCQUFNSyxhQUFhLFFBQUdGLFVBQUgsa0JBQWtCQyxZQUFsQixHQUFpQ0UsSUFBakMsRUFBbkI7O0FBRUEsZ0JBQUlQLGVBQWVoQyxNQUFmLEdBQXdCaUMsaUJBQWlCakMsTUFBekMsS0FBb0RMLEtBQUtQLFVBQUwsQ0FBZ0JZLE1BQXhFLEVBQWdGO0FBQzlFO0FBQ0Esa0JBQU1KLE9BQU8sR0FBR2tDLE1BQUg7QUFDWEUsNkJBQWVoQyxNQUFmLEdBQXdCLENBQXhCLEdBQTRCLE1BQTVCLEdBQXFDLEVBRDFCO0FBRVhpQywrQkFBaUJqQyxNQUFqQixHQUEwQixDQUExQixHQUE4QixRQUE5QixHQUF5QyxFQUY5QixDQUFiOzs7QUFLQWtCLHNCQUFRSyxNQUFSLENBQWU7QUFDYjVCLDBCQURhO0FBRWI2Qix5QkFBUyxzRkFGSTtBQUdiQyxzQkFBTTtBQUNKN0Isd0JBQU1BLEtBQUtXLElBQUwsQ0FBVSxHQUFWLENBREYsRUFITzs7QUFNYm1CLG1CQU5hLDRCQU1UeEMsS0FOUyxFQU1GO0FBQ1QsMkJBQU9BLE1BQU1zRCxXQUFOLENBQWtCN0MsSUFBbEIsRUFBd0IyQyxVQUF4QixDQUFQO0FBQ0QsbUJBUlksZ0JBQWY7O0FBVUQsYUFqQkQsTUFpQk87QUFDTDtBQURLLHdIQUVMLHNCQUF3Qk4sZUFBZUYsTUFBZixDQUFzQkcsZ0JBQXRCLENBQXhCLG1JQUFpRSxLQUF0RDVDLFVBQXNEO0FBQy9ENkIsMEJBQVFLLE1BQVIsQ0FBZTtBQUNiNUIsMEJBQU1OLFVBRE87QUFFYm1DLDZCQUFTLHNGQUZJO0FBR2JDLDBCQUFNO0FBQ0o3Qiw0QkFBTVAsV0FBVWlDLFVBRFosRUFITzs7QUFNYkksdUJBTmEsNEJBTVR4QyxLQU5TLEVBTUY7QUFDVCw0QkFBTUQsUUFBUSxFQUFkOztBQUVBOztBQUVBLDRCQUFJaUQsZ0JBQWdCbEMsTUFBaEIsR0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUI7O0FBRUE7QUFDQWhCLDJDQUFpQkMsS0FBakIsRUFBd0JDLEtBQXhCLEVBQStCQyxVQUEvQixFQUEyQzZDLGNBQTNDO0FBQ0FoRCwyQ0FBaUJDLEtBQWpCLEVBQXdCQyxLQUF4QixFQUErQkMsVUFBL0IsRUFBMkM4QyxnQkFBM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBTVEsYUFBYXRELFdBQVdJLGFBQVgsQ0FBeUIyQyxnQkFBZ0JBLGdCQUFnQmxDLE1BQWhCLEdBQXlCLENBQXpDLENBQXpCLENBQW5CO0FBQ0EsOEJBQUlwQixRQUFRNkQsVUFBUixDQUFKLEVBQXlCO0FBQ3ZCeEQsa0NBQU1PLElBQU4sQ0FBV04sTUFBTU8sTUFBTixDQUFhZ0QsVUFBYixDQUFYO0FBQ0Q7QUFDRix5QkFsQkQsTUFrQk8sSUFBSU4sZ0JBQUosRUFBc0I7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsOEJBQU03QyxRQUFRSCxXQUFXSSxhQUFYLENBQXlCNEMsZ0JBQXpCLEVBQTJDdkQsT0FBM0MsQ0FBZDtBQUNBLDhCQUFNOEQsZUFBZXZELFdBQVdJLGFBQVg7QUFDbkJJLCtCQUFLUCxVQUFMLENBQWdCTyxLQUFLUCxVQUFMLENBQWdCWSxNQUFoQixHQUF5QixDQUF6QyxDQURtQjtBQUVuQixtREFBU25CLE1BQU1DLElBQU4sS0FBZSxZQUFmLElBQStCRCxNQUFNRSxLQUFOLEtBQWdCLEdBQXhELEVBRm1CLENBQXJCOztBQUlBRSxnQ0FBTU8sSUFBTixDQUFXTixNQUFNeUQsV0FBTixDQUFrQjtBQUMzQnJELGdDQUFNc0QsS0FBTixDQUFZLENBQVosQ0FEMkI7QUFFM0JGLHVDQUFhRSxLQUFiLENBQW1CLENBQW5CLENBRjJCLENBQWxCLENBQVg7O0FBSUQ7O0FBRUQsK0JBQU8zRCxNQUFNNkMsTUFBTjtBQUNMO0FBQ0E1Qyw4QkFBTTJELGVBQU4sQ0FBc0JsRCxJQUF0QixnQkFBaUMyQyxVQUFqQyxFQUZLLENBQVA7O0FBSUQsdUJBbERZLGdCQUFmOztBQW9ERCxpQkF2REk7QUF3RE47QUFDRixXQWxISSw4QkFBUDs7QUFvSEQsS0FqTGMsbUJBQWpCIiwiZmlsZSI6ImNvbnNpc3RlbnQtdHlwZS1zcGVjaWZpZXItc3R5bGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJztcblxuZnVuY3Rpb24gaXNDb21tYSh0b2tlbikge1xuICByZXR1cm4gdG9rZW4udHlwZSA9PT0gJ1B1bmN0dWF0b3InICYmIHRva2VuLnZhbHVlID09PSAnLCc7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVNwZWNpZmllcnMoZml4ZXMsIGZpeGVyLCBzb3VyY2VDb2RlLCBzcGVjaWZpZXJzKSB7XG4gIGZvciAoY29uc3Qgc3BlY2lmaWVyIG9mIHNwZWNpZmllcnMpIHtcbiAgICAvLyByZW1vdmUgdGhlIHRyYWlsaW5nIGNvbW1hXG4gICAgY29uc3QgY29tbWEgPSBzb3VyY2VDb2RlLmdldFRva2VuQWZ0ZXIoc3BlY2lmaWVyLCBpc0NvbW1hKTtcbiAgICBpZiAoY29tbWEpIHtcbiAgICAgIGZpeGVzLnB1c2goZml4ZXIucmVtb3ZlKGNvbW1hKSk7XG4gICAgfVxuICAgIGZpeGVzLnB1c2goZml4ZXIucmVtb3ZlKHNwZWNpZmllcikpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEltcG9ydFRleHQoXG4gIG5vZGUsXG4gIHNvdXJjZUNvZGUsXG4gIHNwZWNpZmllcnMsXG4gIGtpbmQsXG4pIHtcbiAgY29uc3Qgc291cmNlU3RyaW5nID0gc291cmNlQ29kZS5nZXRUZXh0KG5vZGUuc291cmNlKTtcbiAgaWYgKHNwZWNpZmllcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgbmFtZXMgPSBzcGVjaWZpZXJzLm1hcChzID0+IHtcbiAgICBpZiAocy5pbXBvcnRlZC5uYW1lID09PSBzLmxvY2FsLm5hbWUpIHtcbiAgICAgIHJldHVybiBzLmltcG9ydGVkLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiBgJHtzLmltcG9ydGVkLm5hbWV9IGFzICR7cy5sb2NhbC5uYW1lfWA7XG4gIH0pO1xuICAvLyBpbnNlcnQgYSBmcmVzaCB0b3AtbGV2ZWwgaW1wb3J0XG4gIHJldHVybiBgaW1wb3J0ICR7a2luZH0geyR7bmFtZXMuam9pbignLCAnKX19IGZyb20gJHtzb3VyY2VTdHJpbmd9O2A7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIGNhdGVnb3J5OiAnU3R5bGUgZ3VpZGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdFbmZvcmNlIG9yIGJhbiB0aGUgdXNlIG9mIGlubGluZSB0eXBlLW9ubHkgbWFya2VycyBmb3IgbmFtZWQgaW1wb3J0cy4nLFxuICAgICAgdXJsOiBkb2NzVXJsKCdjb25zaXN0ZW50LXR5cGUtc3BlY2lmaWVyLXN0eWxlJyksXG4gICAgfSxcbiAgICBmaXhhYmxlOiAnY29kZScsXG4gICAgc2NoZW1hOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBlbnVtOiBbJ3ByZWZlci1pbmxpbmUnLCAncHJlZmVyLXRvcC1sZXZlbCddLFxuICAgICAgICBkZWZhdWx0OiAncHJlZmVyLWlubGluZScsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG5cbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzb3VyY2VDb2RlID0gY29udGV4dC5nZXRTb3VyY2VDb2RlKCk7XG5cbiAgICBpZiAoY29udGV4dC5vcHRpb25zWzBdID09PSAncHJlZmVyLWlubGluZScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIEltcG9ydERlY2xhcmF0aW9uKG5vZGUpIHtcbiAgICAgICAgICBpZiAobm9kZS5pbXBvcnRLaW5kID09PSAndmFsdWUnIHx8IG5vZGUuaW1wb3J0S2luZCA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyB0b3AtbGV2ZWwgdmFsdWUgLyB1bmtub3duIGlzIHZhbGlkXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgLy8gbm8gc3BlY2lmaWVycyAoaW1wb3J0IHR5cGUge30gZnJvbSAnJykgaGF2ZSBubyBzcGVjaWZpZXJzIHRvIG1hcmsgYXMgaW5saW5lXG4gICAgICAgICAgICBub2RlLnNwZWNpZmllcnMubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAobm9kZS5zcGVjaWZpZXJzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICAgICAgICAvLyBkZWZhdWx0IGltcG9ydHMgYXJlIGJvdGggXCJpbmxpbmVcIiBhbmQgXCJ0b3AtbGV2ZWxcIlxuICAgICAgICAgICAgICAobm9kZS5zcGVjaWZpZXJzWzBdLnR5cGUgPT09ICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJyB8fFxuICAgICAgICAgICAgICAgIC8vIG5hbWVzcGFjZSBpbXBvcnRzIGFyZSBib3RoIFwiaW5saW5lXCIgYW5kIFwidG9wLWxldmVsXCJcbiAgICAgICAgICAgICAgICBub2RlLnNwZWNpZmllcnNbMF0udHlwZSA9PT0gJ0ltcG9ydE5hbWVzcGFjZVNwZWNpZmllcicpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBtZXNzYWdlOiAnUHJlZmVyIHVzaW5nIGlubGluZSB7e2tpbmR9fSBzcGVjaWZpZXJzIGluc3RlYWQgb2YgYSB0b3AtbGV2ZWwge3traW5kfX0tb25seSBpbXBvcnQuJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAga2luZDogbm9kZS5pbXBvcnRLaW5kLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpeChmaXhlcikge1xuICAgICAgICAgICAgICBjb25zdCBraW5kVG9rZW4gPSBzb3VyY2VDb2RlLmdldEZpcnN0VG9rZW4obm9kZSwgeyBza2lwOiAxIH0pO1xuXG4gICAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoXG4gICAgICAgICAgICAgICAga2luZFRva2VuID8gZml4ZXIucmVtb3ZlKGtpbmRUb2tlbikgOiBbXSxcbiAgICAgICAgICAgICAgICBub2RlLnNwZWNpZmllcnMubWFwKChzcGVjaWZpZXIpID0+IGZpeGVyLmluc2VydFRleHRCZWZvcmUoc3BlY2lmaWVyLCBgJHtub2RlLmltcG9ydEtpbmR9IGApKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIHByZWZlci10b3AtbGV2ZWxcbiAgICByZXR1cm4ge1xuICAgICAgSW1wb3J0RGVjbGFyYXRpb24obm9kZSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgLy8gYWxyZWFkeSB0b3AtbGV2ZWwgaXMgdmFsaWRcbiAgICAgICAgICBub2RlLmltcG9ydEtpbmQgPT09ICd0eXBlJyB8fFxuICAgICAgICAgIG5vZGUuaW1wb3J0S2luZCA9PT0gJ3R5cGVvZicgfHxcbiAgICAgICAgICAvLyBubyBzcGVjaWZpZXJzIChpbXBvcnQge30gZnJvbSAnJykgY2Fubm90IGhhdmUgaW5saW5lIC0gc28gaXMgdmFsaWRcbiAgICAgICAgICBub2RlLnNwZWNpZmllcnMubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKG5vZGUuc3BlY2lmaWVycy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgIC8vIGRlZmF1bHQgaW1wb3J0cyBhcmUgYm90aCBcImlubGluZVwiIGFuZCBcInRvcC1sZXZlbFwiXG4gICAgICAgICAgICAobm9kZS5zcGVjaWZpZXJzWzBdLnR5cGUgPT09ICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJyB8fFxuICAgICAgICAgICAgICAvLyBuYW1lc3BhY2UgaW1wb3J0cyBhcmUgYm90aCBcImlubGluZVwiIGFuZCBcInRvcC1sZXZlbFwiXG4gICAgICAgICAgICAgIG5vZGUuc3BlY2lmaWVyc1swXS50eXBlID09PSAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJykpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHR5cGVTcGVjaWZpZXJzID0gW107XG4gICAgICAgIGNvbnN0IHR5cGVvZlNwZWNpZmllcnMgPSBbXTtcbiAgICAgICAgY29uc3QgdmFsdWVTcGVjaWZpZXJzID0gW107XG4gICAgICAgIGxldCBkZWZhdWx0U3BlY2lmaWVyID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBzcGVjaWZpZXIgb2Ygbm9kZS5zcGVjaWZpZXJzKSB7XG4gICAgICAgICAgaWYgKHNwZWNpZmllci50eXBlID09PSAnSW1wb3J0RGVmYXVsdFNwZWNpZmllcicpIHtcbiAgICAgICAgICAgIGRlZmF1bHRTcGVjaWZpZXIgPSBzcGVjaWZpZXI7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3BlY2lmaWVyLmltcG9ydEtpbmQgPT09ICd0eXBlJykge1xuICAgICAgICAgICAgdHlwZVNwZWNpZmllcnMucHVzaChzcGVjaWZpZXIpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3BlY2lmaWVyLmltcG9ydEtpbmQgPT09ICd0eXBlb2YnKSB7XG4gICAgICAgICAgICB0eXBlb2ZTcGVjaWZpZXJzLnB1c2goc3BlY2lmaWVyKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHNwZWNpZmllci5pbXBvcnRLaW5kID09PSAndmFsdWUnIHx8IHNwZWNpZmllci5pbXBvcnRLaW5kID09IG51bGwpIHtcbiAgICAgICAgICAgIHZhbHVlU3BlY2lmaWVycy5wdXNoKHNwZWNpZmllcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHlwZUltcG9ydCA9IGdldEltcG9ydFRleHQobm9kZSwgc291cmNlQ29kZSwgdHlwZVNwZWNpZmllcnMsICd0eXBlJyk7XG4gICAgICAgIGNvbnN0IHR5cGVvZkltcG9ydCA9IGdldEltcG9ydFRleHQobm9kZSwgc291cmNlQ29kZSwgdHlwZW9mU3BlY2lmaWVycywgJ3R5cGVvZicpO1xuICAgICAgICBjb25zdCBuZXdJbXBvcnRzID0gYCR7dHlwZUltcG9ydH1cXG4ke3R5cGVvZkltcG9ydH1gLnRyaW0oKTtcblxuICAgICAgICBpZiAodHlwZVNwZWNpZmllcnMubGVuZ3RoICsgdHlwZW9mU3BlY2lmaWVycy5sZW5ndGggPT09IG5vZGUuc3BlY2lmaWVycy5sZW5ndGgpIHtcbiAgICAgICAgICAvLyBhbGwgc3BlY2lmaWVycyBoYXZlIGlubGluZSBzcGVjaWZpZXJzIC0gc28gd2UgcmVwbGFjZSB0aGUgZW50aXJlIGltcG9ydFxuICAgICAgICAgIGNvbnN0IGtpbmQgPSBbXS5jb25jYXQoXG4gICAgICAgICAgICB0eXBlU3BlY2lmaWVycy5sZW5ndGggPiAwID8gJ3R5cGUnIDogW10sXG4gICAgICAgICAgICB0eXBlb2ZTcGVjaWZpZXJzLmxlbmd0aCA+IDAgPyAndHlwZW9mJyA6IFtdLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogJ1ByZWZlciB1c2luZyBhIHRvcC1sZXZlbCB7e2tpbmR9fS1vbmx5IGltcG9ydCBpbnN0ZWFkIG9mIGlubGluZSB7e2tpbmR9fSBzcGVjaWZpZXJzLicsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIGtpbmQ6IGtpbmQuam9pbignLycpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpeChmaXhlcikge1xuICAgICAgICAgICAgICByZXR1cm4gZml4ZXIucmVwbGFjZVRleHQobm9kZSwgbmV3SW1wb3J0cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHJlbW92ZSBzcGVjaWZpYyBzcGVjaWZpZXJzIGFuZCBpbnNlcnQgbmV3IGltcG9ydHMgZm9yIHRoZW1cbiAgICAgICAgICBmb3IgKGNvbnN0IHNwZWNpZmllciBvZiB0eXBlU3BlY2lmaWVycy5jb25jYXQodHlwZW9mU3BlY2lmaWVycykpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgbm9kZTogc3BlY2lmaWVyLFxuICAgICAgICAgICAgICBtZXNzYWdlOiAnUHJlZmVyIHVzaW5nIGEgdG9wLWxldmVsIHt7a2luZH19LW9ubHkgaW1wb3J0IGluc3RlYWQgb2YgaW5saW5lIHt7a2luZH19IHNwZWNpZmllcnMuJyxcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGtpbmQ6IHNwZWNpZmllci5pbXBvcnRLaW5kLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBmaXgoZml4ZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXhlcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIHZhbHVlIHNwZWNpZmllcnMsIHRoZW4gdGhlIG90aGVyIHJlcG9ydCBmaXhlciB3aWxsIGJlIGNhbGxlZCwgbm90IHRoaXMgb25lXG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWVTcGVjaWZpZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIC8vIGltcG9ydCB7IFZhbHVlLCB0eXBlIFR5cGUgfSBmcm9tICdtb2QnO1xuXG4gICAgICAgICAgICAgICAgICAvLyB3ZSBjYW4ganVzdCByZW1vdmUgdGhlIHR5cGUgc3BlY2lmaWVyc1xuICAgICAgICAgICAgICAgICAgcmVtb3ZlU3BlY2lmaWVycyhmaXhlcywgZml4ZXIsIHNvdXJjZUNvZGUsIHR5cGVTcGVjaWZpZXJzKTtcbiAgICAgICAgICAgICAgICAgIHJlbW92ZVNwZWNpZmllcnMoZml4ZXMsIGZpeGVyLCBzb3VyY2VDb2RlLCB0eXBlb2ZTcGVjaWZpZXJzKTtcblxuICAgICAgICAgICAgICAgICAgLy8gbWFrZSB0aGUgaW1wb3J0IG5pY2VseSBmb3JtYXR0ZWQgYnkgYWxzbyByZW1vdmluZyB0aGUgdHJhaWxpbmcgY29tbWEgYWZ0ZXIgdGhlIGxhc3QgdmFsdWUgaW1wb3J0XG4gICAgICAgICAgICAgICAgICAvLyBlZ1xuICAgICAgICAgICAgICAgICAgLy8gaW1wb3J0IHsgVmFsdWUsIHR5cGUgVHlwZSB9IGZyb20gJ21vZCc7XG4gICAgICAgICAgICAgICAgICAvLyB0b1xuICAgICAgICAgICAgICAgICAgLy8gaW1wb3J0IHsgVmFsdWUgIH0gZnJvbSAnbW9kJztcbiAgICAgICAgICAgICAgICAgIC8vIG5vdFxuICAgICAgICAgICAgICAgICAgLy8gaW1wb3J0IHsgVmFsdWUsICB9IGZyb20gJ21vZCc7XG4gICAgICAgICAgICAgICAgICBjb25zdCBtYXliZUNvbW1hID0gc291cmNlQ29kZS5nZXRUb2tlbkFmdGVyKHZhbHVlU3BlY2lmaWVyc1t2YWx1ZVNwZWNpZmllcnMubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tbWEobWF5YmVDb21tYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZml4ZXMucHVzaChmaXhlci5yZW1vdmUobWF5YmVDb21tYSkpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVmYXVsdFNwZWNpZmllcikge1xuICAgICAgICAgICAgICAgICAgLy8gaW1wb3J0IERlZmF1bHQsIHsgdHlwZSBUeXBlIH0gZnJvbSAnbW9kJztcblxuICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBlbnRpcmUgY3VybHkgYmxvY2sgc28gd2UgZG9uJ3QgbGVhdmUgYW4gZW1wdHkgb25lIGJlaGluZFxuICAgICAgICAgICAgICAgICAgLy8gTk9URSAtIHRoZSBkZWZhdWx0IHNwZWNpZmllciAqbXVzdCogYmUgdGhlIGZpcnN0IHNwZWNpZmllciBhbHdheXMhXG4gICAgICAgICAgICAgICAgICAvLyAgICAgICAgc28gYSBjb21tYSBleGlzdHMgdGhhdCB3ZSBhbHNvIGhhdmUgdG8gY2xlYW4gdXAgb3IgZWxzZSBpdCdzIGJhZCBzeW50YXhcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1hID0gc291cmNlQ29kZS5nZXRUb2tlbkFmdGVyKGRlZmF1bHRTcGVjaWZpZXIsIGlzQ29tbWEpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgY2xvc2luZ0JyYWNlID0gc291cmNlQ29kZS5nZXRUb2tlbkFmdGVyKFxuICAgICAgICAgICAgICAgICAgICBub2RlLnNwZWNpZmllcnNbbm9kZS5zcGVjaWZpZXJzLmxlbmd0aCAtIDFdLFxuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9PiB0b2tlbi50eXBlID09PSAnUHVuY3R1YXRvcicgJiYgdG9rZW4udmFsdWUgPT09ICd9JyxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBmaXhlcy5wdXNoKGZpeGVyLnJlbW92ZVJhbmdlKFtcbiAgICAgICAgICAgICAgICAgICAgY29tbWEucmFuZ2VbMF0sXG4gICAgICAgICAgICAgICAgICAgIGNsb3NpbmdCcmFjZS5yYW5nZVsxXSxcbiAgICAgICAgICAgICAgICAgIF0pKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZml4ZXMuY29uY2F0KFxuICAgICAgICAgICAgICAgICAgLy8gaW5zZXJ0IHRoZSBuZXcgaW1wb3J0cyBhZnRlciB0aGUgb2xkIGRlY2xhcmF0aW9uXG4gICAgICAgICAgICAgICAgICBmaXhlci5pbnNlcnRUZXh0QWZ0ZXIobm9kZSwgYFxcbiR7bmV3SW1wb3J0c31gKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH0sXG59O1xuIl19
\ No newline at end of file
diff --git a/node_modules/eslint-plugin-import/lib/rules/default.js b/node_modules/eslint-plugin-import/lib/rules/default.js
index 588ebaf03..65e4f4753 100644
--- a/node_modules/eslint-plugin-import/lib/rules/default.js
+++ b/node_modules/eslint-plugin-import/lib/rules/default.js
@@ -5,6 +5,8 @@ module.exports = {
meta: {
type: 'problem',
docs: {
+ category: 'Static analysis',
+ description: 'Ensure a default export is present, given a default import.',
url: (0, _docsUrl2['default'])('default') },
schema: [] },
@@ -37,4 +39,4 @@ module.exports = {
'ExportNamedDeclaration': checkDefault.bind(null, 'ExportDefaultSpecifier') };
}return create;}() };
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9kZWZhdWx0LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJjcmVhdGUiLCJjb250ZXh0IiwiY2hlY2tEZWZhdWx0Iiwic3BlY2lmaWVyVHlwZSIsIm5vZGUiLCJkZWZhdWx0U3BlY2lmaWVyIiwic3BlY2lmaWVycyIsImZpbmQiLCJzcGVjaWZpZXIiLCJpbXBvcnRzIiwiRXhwb3J0cyIsImdldCIsInNvdXJjZSIsInZhbHVlIiwiZXJyb3JzIiwibGVuZ3RoIiwicmVwb3J0RXJyb3JzIiwidW5kZWZpbmVkIiwicmVwb3J0IiwibWVzc2FnZSIsImJpbmQiXSwibWFwcGluZ3MiOiJhQUFBLHlDO0FBQ0EscUM7O0FBRUFBLE9BQU9DLE9BQVAsR0FBaUI7QUFDZkMsUUFBTTtBQUNKQyxVQUFNLFNBREY7QUFFSkMsVUFBTTtBQUNKQyxXQUFLLDBCQUFRLFNBQVIsQ0FERCxFQUZGOztBQUtKQyxZQUFRLEVBTEosRUFEUzs7O0FBU2ZDLHVCQUFRLGdCQUFVQyxPQUFWLEVBQW1COztBQUV6QixlQUFTQyxZQUFULENBQXNCQyxhQUF0QixFQUFxQ0MsSUFBckMsRUFBMkM7O0FBRXpDLFlBQU1DLG1CQUFtQkQsS0FBS0UsVUFBTCxDQUFnQkMsSUFBaEI7QUFDdkIscUNBQWFDLFVBQVVaLElBQVYsS0FBbUJPLGFBQWhDLEVBRHVCLENBQXpCOzs7QUFJQSxZQUFJLENBQUNFLGdCQUFMLEVBQXVCO0FBQ3ZCLFlBQU1JLFVBQVVDLHVCQUFRQyxHQUFSLENBQVlQLEtBQUtRLE1BQUwsQ0FBWUMsS0FBeEIsRUFBK0JaLE9BQS9CLENBQWhCO0FBQ0EsWUFBSVEsV0FBVyxJQUFmLEVBQXFCOztBQUVyQixZQUFJQSxRQUFRSyxNQUFSLENBQWVDLE1BQW5CLEVBQTJCO0FBQ3pCTixrQkFBUU8sWUFBUixDQUFxQmYsT0FBckIsRUFBOEJHLElBQTlCO0FBQ0QsU0FGRCxNQUVPLElBQUlLLFFBQVFFLEdBQVIsQ0FBWSxTQUFaLE1BQTJCTSxTQUEvQixFQUEwQztBQUMvQ2hCLGtCQUFRaUIsTUFBUixDQUFlO0FBQ2JkLGtCQUFNQyxnQkFETztBQUViYyw2RUFBd0RmLEtBQUtRLE1BQUwsQ0FBWUMsS0FBcEUsUUFGYSxFQUFmOztBQUlEO0FBQ0Y7O0FBRUQsYUFBTztBQUNMLDZCQUFxQlgsYUFBYWtCLElBQWIsQ0FBa0IsSUFBbEIsRUFBd0Isd0JBQXhCLENBRGhCO0FBRUwsa0NBQTBCbEIsYUFBYWtCLElBQWIsQ0FBa0IsSUFBbEIsRUFBd0Isd0JBQXhCLENBRnJCLEVBQVA7O0FBSUQsS0ExQkQsaUJBVGUsRUFBakIiLCJmaWxlIjoiZGVmYXVsdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeHBvcnRzIGZyb20gJy4uL0V4cG9ydE1hcCc7XG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAncHJvYmxlbScsXG4gICAgZG9jczoge1xuICAgICAgdXJsOiBkb2NzVXJsKCdkZWZhdWx0JyksXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gKGNvbnRleHQpIHtcblxuICAgIGZ1bmN0aW9uIGNoZWNrRGVmYXVsdChzcGVjaWZpZXJUeXBlLCBub2RlKSB7XG5cbiAgICAgIGNvbnN0IGRlZmF1bHRTcGVjaWZpZXIgPSBub2RlLnNwZWNpZmllcnMuZmluZChcbiAgICAgICAgc3BlY2lmaWVyID0+IHNwZWNpZmllci50eXBlID09PSBzcGVjaWZpZXJUeXBlXG4gICAgICApO1xuXG4gICAgICBpZiAoIWRlZmF1bHRTcGVjaWZpZXIpIHJldHVybjtcbiAgICAgIGNvbnN0IGltcG9ydHMgPSBFeHBvcnRzLmdldChub2RlLnNvdXJjZS52YWx1ZSwgY29udGV4dCk7XG4gICAgICBpZiAoaW1wb3J0cyA9PSBudWxsKSByZXR1cm47XG5cbiAgICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgaW1wb3J0cy5yZXBvcnRFcnJvcnMoY29udGV4dCwgbm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKGltcG9ydHMuZ2V0KCdkZWZhdWx0JykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgbm9kZTogZGVmYXVsdFNwZWNpZmllcixcbiAgICAgICAgICBtZXNzYWdlOiBgTm8gZGVmYXVsdCBleHBvcnQgZm91bmQgaW4gaW1wb3J0ZWQgbW9kdWxlIFwiJHtub2RlLnNvdXJjZS52YWx1ZX1cIi5gLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJ0ltcG9ydERlY2xhcmF0aW9uJzogY2hlY2tEZWZhdWx0LmJpbmQobnVsbCwgJ0ltcG9ydERlZmF1bHRTcGVjaWZpZXInKSxcbiAgICAgICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJzogY2hlY2tEZWZhdWx0LmJpbmQobnVsbCwgJ0V4cG9ydERlZmF1bHRTcGVjaWZpZXInKSxcbiAgICB9O1xuICB9LFxufTtcbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9kZWZhdWx0LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJjYXRlZ29yeSIsImRlc2NyaXB0aW9uIiwidXJsIiwic2NoZW1hIiwiY3JlYXRlIiwiY29udGV4dCIsImNoZWNrRGVmYXVsdCIsInNwZWNpZmllclR5cGUiLCJub2RlIiwiZGVmYXVsdFNwZWNpZmllciIsInNwZWNpZmllcnMiLCJmaW5kIiwic3BlY2lmaWVyIiwiaW1wb3J0cyIsIkV4cG9ydHMiLCJnZXQiLCJzb3VyY2UiLCJ2YWx1ZSIsImVycm9ycyIsImxlbmd0aCIsInJlcG9ydEVycm9ycyIsInVuZGVmaW5lZCIsInJlcG9ydCIsIm1lc3NhZ2UiLCJiaW5kIl0sIm1hcHBpbmdzIjoiYUFBQSx5QztBQUNBLHFDOztBQUVBQSxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSkMsVUFBTSxTQURGO0FBRUpDLFVBQU07QUFDSkMsZ0JBQVUsaUJBRE47QUFFSkMsbUJBQWEsNkRBRlQ7QUFHSkMsV0FBSywwQkFBUSxTQUFSLENBSEQsRUFGRjs7QUFPSkMsWUFBUSxFQVBKLEVBRFM7OztBQVdmQyxRQVhlLCtCQVdSQyxPQVhRLEVBV0M7O0FBRWQsZUFBU0MsWUFBVCxDQUFzQkMsYUFBdEIsRUFBcUNDLElBQXJDLEVBQTJDOztBQUV6QyxZQUFNQyxtQkFBbUJELEtBQUtFLFVBQUwsQ0FBZ0JDLElBQWhCO0FBQ3ZCLHFDQUFhQyxVQUFVZCxJQUFWLEtBQW1CUyxhQUFoQyxFQUR1QixDQUF6Qjs7O0FBSUEsWUFBSSxDQUFDRSxnQkFBTCxFQUF1QjtBQUN2QixZQUFNSSxVQUFVQyx1QkFBUUMsR0FBUixDQUFZUCxLQUFLUSxNQUFMLENBQVlDLEtBQXhCLEVBQStCWixPQUEvQixDQUFoQjtBQUNBLFlBQUlRLFdBQVcsSUFBZixFQUFxQjs7QUFFckIsWUFBSUEsUUFBUUssTUFBUixDQUFlQyxNQUFuQixFQUEyQjtBQUN6Qk4sa0JBQVFPLFlBQVIsQ0FBcUJmLE9BQXJCLEVBQThCRyxJQUE5QjtBQUNELFNBRkQsTUFFTyxJQUFJSyxRQUFRRSxHQUFSLENBQVksU0FBWixNQUEyQk0sU0FBL0IsRUFBMEM7QUFDL0NoQixrQkFBUWlCLE1BQVIsQ0FBZTtBQUNiZCxrQkFBTUMsZ0JBRE87QUFFYmMsNkVBQXdEZixLQUFLUSxNQUFMLENBQVlDLEtBQXBFLFFBRmEsRUFBZjs7QUFJRDtBQUNGOztBQUVELGFBQU87QUFDTCw2QkFBcUJYLGFBQWFrQixJQUFiLENBQWtCLElBQWxCLEVBQXdCLHdCQUF4QixDQURoQjtBQUVMLGtDQUEwQmxCLGFBQWFrQixJQUFiLENBQWtCLElBQWxCLEVBQXdCLHdCQUF4QixDQUZyQixFQUFQOztBQUlELEtBckNjLG1CQUFqQiIsImZpbGUiOiJkZWZhdWx0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV4cG9ydHMgZnJvbSAnLi4vRXhwb3J0TWFwJztcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdwcm9ibGVtJyxcbiAgICBkb2NzOiB7XG4gICAgICBjYXRlZ29yeTogJ1N0YXRpYyBhbmFseXNpcycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Vuc3VyZSBhIGRlZmF1bHQgZXhwb3J0IGlzIHByZXNlbnQsIGdpdmVuIGEgZGVmYXVsdCBpbXBvcnQuJyxcbiAgICAgIHVybDogZG9jc1VybCgnZGVmYXVsdCcpLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcblxuICBjcmVhdGUoY29udGV4dCkge1xuXG4gICAgZnVuY3Rpb24gY2hlY2tEZWZhdWx0KHNwZWNpZmllclR5cGUsIG5vZGUpIHtcblxuICAgICAgY29uc3QgZGVmYXVsdFNwZWNpZmllciA9IG5vZGUuc3BlY2lmaWVycy5maW5kKFxuICAgICAgICBzcGVjaWZpZXIgPT4gc3BlY2lmaWVyLnR5cGUgPT09IHNwZWNpZmllclR5cGUsXG4gICAgICApO1xuXG4gICAgICBpZiAoIWRlZmF1bHRTcGVjaWZpZXIpIHJldHVybjtcbiAgICAgIGNvbnN0IGltcG9ydHMgPSBFeHBvcnRzLmdldChub2RlLnNvdXJjZS52YWx1ZSwgY29udGV4dCk7XG4gICAgICBpZiAoaW1wb3J0cyA9PSBudWxsKSByZXR1cm47XG5cbiAgICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgaW1wb3J0cy5yZXBvcnRFcnJvcnMoY29udGV4dCwgbm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKGltcG9ydHMuZ2V0KCdkZWZhdWx0JykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgbm9kZTogZGVmYXVsdFNwZWNpZmllcixcbiAgICAgICAgICBtZXNzYWdlOiBgTm8gZGVmYXVsdCBleHBvcnQgZm91bmQgaW4gaW1wb3J0ZWQgbW9kdWxlIFwiJHtub2RlLnNvdXJjZS52YWx1ZX1cIi5gLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJ0ltcG9ydERlY2xhcmF0aW9uJzogY2hlY2tEZWZhdWx0LmJpbmQobnVsbCwgJ0ltcG9ydERlZmF1bHRTcGVjaWZpZXInKSxcbiAgICAgICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJzogY2hlY2tEZWZhdWx0LmJpbmQobnVsbCwgJ0V4cG9ydERlZmF1bHRTcGVjaWZpZXInKSxcbiAgICB9O1xuICB9LFxufTtcbiJdfQ==
\ No newline at end of file
diff --git a/node_modules/eslint-plugin-import/lib/rules/dynamic-import-chunkname.js b/node_modules/eslint-plugin-import/lib/rules/dynamic-import-chunkname.js
index 75950c237..858d38cb7 100644
--- a/node_modules/eslint-plugin-import/lib/rules/dynamic-import-chunkname.js
+++ b/node_modules/eslint-plugin-import/lib/rules/dynamic-import-chunkname.js
@@ -5,6 +5,8 @@ module.exports = {
meta: {
type: 'suggestion',
docs: {
+ category: 'Style guide',
+ description: 'Enforce a leading comment with the webpackChunkName for dynamic imports.',
url: (0, _docsUrl2['default'])('dynamic-import-chunkname') },
schema: [{
@@ -27,10 +29,10 @@ module.exports = {
create: function () {function create(context) {
var config = context.options[0];var _ref =
config || {},_ref$importFunctions = _ref.importFunctions,importFunctions = _ref$importFunctions === undefined ? [] : _ref$importFunctions;var _ref2 =
- config || {},_ref2$webpackChunknam = _ref2.webpackChunknameFormat,webpackChunknameFormat = _ref2$webpackChunknam === undefined ? '[0-9a-zA-Z-_/.]+' : _ref2$webpackChunknam;
+ config || {},_ref2$webpackChunknam = _ref2.webpackChunknameFormat,webpackChunknameFormat = _ref2$webpackChunknam === undefined ? '([0-9a-zA-Z-_/.]|\\[(request|index)\\])+' : _ref2$webpackChunknam;
var paddedCommentRegex = /^ (\S[\s\S]+\S) $/;
- var commentStyleRegex = /^( \w+: (["'][^"']*["']|\d+|false|true),?)+ $/;
+ var commentStyleRegex = /^( ((webpackChunkName: .+)|((webpackPrefetch|webpackPreload): (true|false|-?[0-9]+))|(webpackIgnore: (true|false))|((webpackInclude|webpackExclude): \/.*\/)|(webpackMode: ["'](lazy|lazy-once|eager|weak)["'])|(webpackExports: (['"]\w+['"]|\[(['"]\w+['"], *)+(['"]\w+['"]*)\]))),?)+ $/;
var chunkSubstrFormat = ' webpackChunkName: ["\']' + String(webpackChunknameFormat) + '["\'],? ';
var chunkSubstrRegex = new RegExp(chunkSubstrFormat);
@@ -69,7 +71,7 @@ module.exports = {
try {
// just like webpack itself does
- _vm2['default'].runInNewContext('(function(){return {' + String(comment.value) + '}})()');
+ _vm2['default'].runInNewContext('(function() {return {' + String(comment.value) + '}})()');
}
catch (error) {
context.report({
@@ -82,8 +84,8 @@ module.exports = {
if (!commentStyleRegex.test(comment.value)) {
context.report({
node: node,
- message: 'dynamic imports require a leading comment in the form /*' +
- chunkSubstrFormat + '*/' });
+ message: 'dynamic imports require a "webpack" comment with valid syntax' });
+
return;
}
@@ -116,4 +118,4 @@ module.exports = {
}return CallExpression;}() };
}return create;}() };
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9keW5hbWljLWltcG9ydC1jaHVua25hbWUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsInNjaGVtYSIsInByb3BlcnRpZXMiLCJpbXBvcnRGdW5jdGlvbnMiLCJ1bmlxdWVJdGVtcyIsIml0ZW1zIiwid2VicGFja0NodW5rbmFtZUZvcm1hdCIsImNyZWF0ZSIsImNvbnRleHQiLCJjb25maWciLCJvcHRpb25zIiwicGFkZGVkQ29tbWVudFJlZ2V4IiwiY29tbWVudFN0eWxlUmVnZXgiLCJjaHVua1N1YnN0ckZvcm1hdCIsImNodW5rU3Vic3RyUmVnZXgiLCJSZWdFeHAiLCJydW4iLCJub2RlIiwiYXJnIiwic291cmNlQ29kZSIsImdldFNvdXJjZUNvZGUiLCJsZWFkaW5nQ29tbWVudHMiLCJnZXRDb21tZW50c0JlZm9yZSIsImdldENvbW1lbnRzIiwibGVhZGluZyIsImxlbmd0aCIsInJlcG9ydCIsIm1lc3NhZ2UiLCJpc0NodW5rbmFtZVByZXNlbnQiLCJjb21tZW50IiwidGVzdCIsInZhbHVlIiwidm0iLCJydW5Jbk5ld0NvbnRleHQiLCJlcnJvciIsIkltcG9ydEV4cHJlc3Npb24iLCJzb3VyY2UiLCJDYWxsRXhwcmVzc2lvbiIsImNhbGxlZSIsImluZGV4T2YiLCJuYW1lIiwiYXJndW1lbnRzIl0sIm1hcHBpbmdzIjoiYUFBQSx3QjtBQUNBLHFDOztBQUVBQSxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSkMsVUFBTSxZQURGO0FBRUpDLFVBQU07QUFDSkMsV0FBSywwQkFBUSwwQkFBUixDQURELEVBRkY7O0FBS0pDLFlBQVEsQ0FBQztBQUNQSCxZQUFNLFFBREM7QUFFUEksa0JBQVk7QUFDVkMseUJBQWlCO0FBQ2ZMLGdCQUFNLE9BRFM7QUFFZk0sdUJBQWEsSUFGRTtBQUdmQyxpQkFBTztBQUNMUCxrQkFBTSxRQURELEVBSFEsRUFEUDs7O0FBUVZRLGdDQUF3QjtBQUN0QlIsZ0JBQU0sUUFEZ0IsRUFSZCxFQUZMLEVBQUQsQ0FMSixFQURTOzs7Ozs7QUF1QmZTLHVCQUFRLGdCQUFVQyxPQUFWLEVBQW1CO0FBQ3pCLFVBQU1DLFNBQVNELFFBQVFFLE9BQVIsQ0FBZ0IsQ0FBaEIsQ0FBZixDQUR5QjtBQUVRRCxnQkFBVSxFQUZsQiw2QkFFakJOLGVBRmlCLENBRWpCQSxlQUZpQix3Q0FFQyxFQUZEO0FBRytCTSxnQkFBVSxFQUh6QywrQkFHakJILHNCQUhpQixDQUdqQkEsc0JBSGlCLHlDQUdRLGtCQUhSOztBQUt6QixVQUFNSyxxQkFBcUIsbUJBQTNCO0FBQ0EsVUFBTUMsb0JBQW9CLCtDQUExQjtBQUNBLFVBQU1DLHdEQUE4Q1Asc0JBQTlDLGNBQU47QUFDQSxVQUFNUSxtQkFBbUIsSUFBSUMsTUFBSixDQUFXRixpQkFBWCxDQUF6Qjs7QUFFQSxlQUFTRyxHQUFULENBQWFDLElBQWIsRUFBbUJDLEdBQW5CLEVBQXdCO0FBQ3RCLFlBQU1DLGFBQWFYLFFBQVFZLGFBQVIsRUFBbkI7QUFDQSxZQUFNQyxrQkFBa0JGLFdBQVdHLGlCQUFYO0FBQ3BCSCxtQkFBV0csaUJBQVgsQ0FBNkJKLEdBQTdCLENBRG9CLENBQ2M7QUFEZCxVQUVwQkMsV0FBV0ksV0FBWCxDQUF1QkwsR0FBdkIsRUFBNEJNLE9BRmhDLENBRnNCLENBSW1COztBQUV6QyxZQUFJLENBQUNILGVBQUQsSUFBb0JBLGdCQUFnQkksTUFBaEIsS0FBMkIsQ0FBbkQsRUFBc0Q7QUFDcERqQixrQkFBUWtCLE1BQVIsQ0FBZTtBQUNiVCxzQkFEYTtBQUViVSxxQkFBUyxzRUFGSSxFQUFmOztBQUlBO0FBQ0Q7O0FBRUQsWUFBSUMscUJBQXFCLEtBQXpCLENBZHNCOztBQWdCdEIsK0JBQXNCUCxlQUF0Qiw4SEFBdUMsS0FBNUJRLE9BQTRCO0FBQ3JDLGdCQUFJQSxRQUFRL0IsSUFBUixLQUFpQixPQUFyQixFQUE4QjtBQUM1QlUsc0JBQVFrQixNQUFSLENBQWU7QUFDYlQsMEJBRGE7QUFFYlUseUJBQVMseUVBRkksRUFBZjs7QUFJQTtBQUNEOztBQUVELGdCQUFJLENBQUNoQixtQkFBbUJtQixJQUFuQixDQUF3QkQsUUFBUUUsS0FBaEMsQ0FBTCxFQUE2QztBQUMzQ3ZCLHNCQUFRa0IsTUFBUixDQUFlO0FBQ2JULDBCQURhO0FBRWJVLGlHQUZhLEVBQWY7O0FBSUE7QUFDRDs7QUFFRCxnQkFBSTtBQUNGO0FBQ0FLLDhCQUFHQyxlQUFILGlDQUEwQ0osUUFBUUUsS0FBbEQ7QUFDRDtBQUNELG1CQUFPRyxLQUFQLEVBQWM7QUFDWjFCLHNCQUFRa0IsTUFBUixDQUFlO0FBQ2JULDBCQURhO0FBRWJVLHdGQUZhLEVBQWY7O0FBSUE7QUFDRDs7QUFFRCxnQkFBSSxDQUFDZixrQkFBa0JrQixJQUFsQixDQUF1QkQsUUFBUUUsS0FBL0IsQ0FBTCxFQUE0QztBQUMxQ3ZCLHNCQUFRa0IsTUFBUixDQUFlO0FBQ2JULDBCQURhO0FBRWJVO0FBQzZEZCxpQ0FEN0QsT0FGYSxFQUFmOztBQUtBO0FBQ0Q7O0FBRUQsZ0JBQUlDLGlCQUFpQmdCLElBQWpCLENBQXNCRCxRQUFRRSxLQUE5QixDQUFKLEVBQTBDO0FBQ3hDSCxtQ0FBcUIsSUFBckI7QUFDRDtBQUNGLFdBekRxQjs7QUEyRHRCLFlBQUksQ0FBQ0Esa0JBQUwsRUFBeUI7QUFDdkJwQixrQkFBUWtCLE1BQVIsQ0FBZTtBQUNiVCxzQkFEYTtBQUViVTtBQUM2RGQsNkJBRDdELE9BRmEsRUFBZjs7QUFLRDtBQUNGOztBQUVELGFBQU87QUFDTHNCLHdCQURLLHlDQUNZbEIsSUFEWixFQUNrQjtBQUNyQkQsZ0JBQUlDLElBQUosRUFBVUEsS0FBS21CLE1BQWY7QUFDRCxXQUhJOztBQUtMQyxzQkFMSyx1Q0FLVXBCLElBTFYsRUFLZ0I7QUFDbkIsZ0JBQUlBLEtBQUtxQixNQUFMLENBQVl4QyxJQUFaLEtBQXFCLFFBQXJCLElBQWlDSyxnQkFBZ0JvQyxPQUFoQixDQUF3QnRCLEtBQUtxQixNQUFMLENBQVlFLElBQXBDLElBQTRDLENBQWpGLEVBQW9GO0FBQ2xGO0FBQ0Q7O0FBRUR4QixnQkFBSUMsSUFBSixFQUFVQSxLQUFLd0IsU0FBTCxDQUFlLENBQWYsQ0FBVjtBQUNELFdBWEksMkJBQVA7O0FBYUQsS0EzRkQsaUJBdkJlLEVBQWpCIiwiZmlsZSI6ImR5bmFtaWMtaW1wb3J0LWNodW5rbmFtZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB2bSBmcm9tICd2bSc7XG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgdXJsOiBkb2NzVXJsKCdkeW5hbWljLWltcG9ydC1jaHVua25hbWUnKSxcbiAgICB9LFxuICAgIHNjaGVtYTogW3tcbiAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBpbXBvcnRGdW5jdGlvbnM6IHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB3ZWJwYWNrQ2h1bmtuYW1lRm9ybWF0OiB7XG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1dLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBjb25zdCBjb25maWcgPSBjb250ZXh0Lm9wdGlvbnNbMF07XG4gICAgY29uc3QgeyBpbXBvcnRGdW5jdGlvbnMgPSBbXSB9ID0gY29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IHsgd2VicGFja0NodW5rbmFtZUZvcm1hdCA9ICdbMC05YS16QS1aLV8vLl0rJyB9ID0gY29uZmlnIHx8IHt9O1xuXG4gICAgY29uc3QgcGFkZGVkQ29tbWVudFJlZ2V4ID0gL14gKFxcU1tcXHNcXFNdK1xcUykgJC87XG4gICAgY29uc3QgY29tbWVudFN0eWxlUmVnZXggPSAvXiggXFx3KzogKFtcIiddW15cIiddKltcIiddfFxcZCt8ZmFsc2V8dHJ1ZSksPykrICQvO1xuICAgIGNvbnN0IGNodW5rU3Vic3RyRm9ybWF0ID0gYCB3ZWJwYWNrQ2h1bmtOYW1lOiBbXCInXSR7d2VicGFja0NodW5rbmFtZUZvcm1hdH1bXCInXSw/IGA7XG4gICAgY29uc3QgY2h1bmtTdWJzdHJSZWdleCA9IG5ldyBSZWdFeHAoY2h1bmtTdWJzdHJGb3JtYXQpO1xuXG4gICAgZnVuY3Rpb24gcnVuKG5vZGUsIGFyZykge1xuICAgICAgY29uc3Qgc291cmNlQ29kZSA9IGNvbnRleHQuZ2V0U291cmNlQ29kZSgpO1xuICAgICAgY29uc3QgbGVhZGluZ0NvbW1lbnRzID0gc291cmNlQ29kZS5nZXRDb21tZW50c0JlZm9yZVxuICAgICAgICA/IHNvdXJjZUNvZGUuZ2V0Q29tbWVudHNCZWZvcmUoYXJnKSAvLyBUaGlzIG1ldGhvZCBpcyBhdmFpbGFibGUgaW4gRVNMaW50ID49IDQuXG4gICAgICAgIDogc291cmNlQ29kZS5nZXRDb21tZW50cyhhcmcpLmxlYWRpbmc7IC8vIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgaW4gRVNMaW50IDcuXG5cbiAgICAgIGlmICghbGVhZGluZ0NvbW1lbnRzIHx8IGxlYWRpbmdDb21tZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgbWVzc2FnZTogJ2R5bmFtaWMgaW1wb3J0cyByZXF1aXJlIGEgbGVhZGluZyBjb21tZW50IHdpdGggdGhlIHdlYnBhY2sgY2h1bmtuYW1lJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IGlzQ2h1bmtuYW1lUHJlc2VudCA9IGZhbHNlO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgbGVhZGluZ0NvbW1lbnRzKSB7XG4gICAgICAgIGlmIChjb21tZW50LnR5cGUgIT09ICdCbG9jaycpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogJ2R5bmFtaWMgaW1wb3J0cyByZXF1aXJlIGEgLyogZm9vICovIHN0eWxlIGNvbW1lbnQsIG5vdCBhIC8vIGZvbyBjb21tZW50JyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBhZGRlZENvbW1lbnRSZWdleC50ZXN0KGNvbW1lbnQudmFsdWUpKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBkeW5hbWljIGltcG9ydHMgcmVxdWlyZSBhIGJsb2NrIGNvbW1lbnQgcGFkZGVkIHdpdGggc3BhY2VzIC0gLyogZm9vICovYCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIGp1c3QgbGlrZSB3ZWJwYWNrIGl0c2VsZiBkb2VzXG4gICAgICAgICAgdm0ucnVuSW5OZXdDb250ZXh0KGAoZnVuY3Rpb24oKXtyZXR1cm4geyR7Y29tbWVudC52YWx1ZX19fSkoKWApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBgZHluYW1pYyBpbXBvcnRzIHJlcXVpcmUgYSBcIndlYnBhY2tcIiBjb21tZW50IHdpdGggdmFsaWQgc3ludGF4YCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNvbW1lbnRTdHlsZVJlZ2V4LnRlc3QoY29tbWVudC52YWx1ZSkpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgYGR5bmFtaWMgaW1wb3J0cyByZXF1aXJlIGEgbGVhZGluZyBjb21tZW50IGluIHRoZSBmb3JtIC8qJHtjaHVua1N1YnN0ckZvcm1hdH0qL2AsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNodW5rU3Vic3RyUmVnZXgudGVzdChjb21tZW50LnZhbHVlKSkge1xuICAgICAgICAgIGlzQ2h1bmtuYW1lUHJlc2VudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0NodW5rbmFtZVByZXNlbnQpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgIGBkeW5hbWljIGltcG9ydHMgcmVxdWlyZSBhIGxlYWRpbmcgY29tbWVudCBpbiB0aGUgZm9ybSAvKiR7Y2h1bmtTdWJzdHJGb3JtYXR9Ki9gLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgSW1wb3J0RXhwcmVzc2lvbihub2RlKSB7XG4gICAgICAgIHJ1bihub2RlLCBub2RlLnNvdXJjZSk7XG4gICAgICB9LFxuXG4gICAgICBDYWxsRXhwcmVzc2lvbihub2RlKSB7XG4gICAgICAgIGlmIChub2RlLmNhbGxlZS50eXBlICE9PSAnSW1wb3J0JyAmJiBpbXBvcnRGdW5jdGlvbnMuaW5kZXhPZihub2RlLmNhbGxlZS5uYW1lKSA8IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBydW4obm9kZSwgbm9kZS5hcmd1bWVudHNbMF0pO1xuICAgICAgfSxcbiAgICB9O1xuICB9LFxufTtcbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9keW5hbWljLWltcG9ydC1jaHVua25hbWUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsImNhdGVnb3J5IiwiZGVzY3JpcHRpb24iLCJ1cmwiLCJzY2hlbWEiLCJwcm9wZXJ0aWVzIiwiaW1wb3J0RnVuY3Rpb25zIiwidW5pcXVlSXRlbXMiLCJpdGVtcyIsIndlYnBhY2tDaHVua25hbWVGb3JtYXQiLCJjcmVhdGUiLCJjb250ZXh0IiwiY29uZmlnIiwib3B0aW9ucyIsInBhZGRlZENvbW1lbnRSZWdleCIsImNvbW1lbnRTdHlsZVJlZ2V4IiwiY2h1bmtTdWJzdHJGb3JtYXQiLCJjaHVua1N1YnN0clJlZ2V4IiwiUmVnRXhwIiwicnVuIiwibm9kZSIsImFyZyIsInNvdXJjZUNvZGUiLCJnZXRTb3VyY2VDb2RlIiwibGVhZGluZ0NvbW1lbnRzIiwiZ2V0Q29tbWVudHNCZWZvcmUiLCJnZXRDb21tZW50cyIsImxlYWRpbmciLCJsZW5ndGgiLCJyZXBvcnQiLCJtZXNzYWdlIiwiaXNDaHVua25hbWVQcmVzZW50IiwiY29tbWVudCIsInRlc3QiLCJ2YWx1ZSIsInZtIiwicnVuSW5OZXdDb250ZXh0IiwiZXJyb3IiLCJJbXBvcnRFeHByZXNzaW9uIiwic291cmNlIiwiQ2FsbEV4cHJlc3Npb24iLCJjYWxsZWUiLCJpbmRleE9mIiwibmFtZSIsImFyZ3VtZW50cyJdLCJtYXBwaW5ncyI6ImFBQUEsd0I7QUFDQSxxQzs7QUFFQUEsT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pDLFVBQU0sWUFERjtBQUVKQyxVQUFNO0FBQ0pDLGdCQUFVLGFBRE47QUFFSkMsbUJBQWEsMEVBRlQ7QUFHSkMsV0FBSywwQkFBUSwwQkFBUixDQUhELEVBRkY7O0FBT0pDLFlBQVEsQ0FBQztBQUNQTCxZQUFNLFFBREM7QUFFUE0sa0JBQVk7QUFDVkMseUJBQWlCO0FBQ2ZQLGdCQUFNLE9BRFM7QUFFZlEsdUJBQWEsSUFGRTtBQUdmQyxpQkFBTztBQUNMVCxrQkFBTSxRQURELEVBSFEsRUFEUDs7O0FBUVZVLGdDQUF3QjtBQUN0QlYsZ0JBQU0sUUFEZ0IsRUFSZCxFQUZMLEVBQUQsQ0FQSixFQURTOzs7Ozs7QUF5QmZXLFFBekJlLCtCQXlCUkMsT0F6QlEsRUF5QkM7QUFDZCxVQUFNQyxTQUFTRCxRQUFRRSxPQUFSLENBQWdCLENBQWhCLENBQWYsQ0FEYztBQUVtQkQsZ0JBQVUsRUFGN0IsNkJBRU5OLGVBRk0sQ0FFTkEsZUFGTSx3Q0FFWSxFQUZaO0FBR2tFTSxnQkFBVSxFQUg1RSwrQkFHTkgsc0JBSE0sQ0FHTkEsc0JBSE0seUNBR21CLDBDQUhuQjs7QUFLZCxVQUFNSyxxQkFBcUIsbUJBQTNCO0FBQ0EsVUFBTUMsb0JBQW9CLDRSQUExQjtBQUNBLFVBQU1DLHdEQUE4Q1Asc0JBQTlDLGNBQU47QUFDQSxVQUFNUSxtQkFBbUIsSUFBSUMsTUFBSixDQUFXRixpQkFBWCxDQUF6Qjs7QUFFQSxlQUFTRyxHQUFULENBQWFDLElBQWIsRUFBbUJDLEdBQW5CLEVBQXdCO0FBQ3RCLFlBQU1DLGFBQWFYLFFBQVFZLGFBQVIsRUFBbkI7QUFDQSxZQUFNQyxrQkFBa0JGLFdBQVdHLGlCQUFYO0FBQ3BCSCxtQkFBV0csaUJBQVgsQ0FBNkJKLEdBQTdCLENBRG9CLENBQ2M7QUFEZCxVQUVwQkMsV0FBV0ksV0FBWCxDQUF1QkwsR0FBdkIsRUFBNEJNLE9BRmhDLENBRnNCLENBSW1COztBQUV6QyxZQUFJLENBQUNILGVBQUQsSUFBb0JBLGdCQUFnQkksTUFBaEIsS0FBMkIsQ0FBbkQsRUFBc0Q7QUFDcERqQixrQkFBUWtCLE1BQVIsQ0FBZTtBQUNiVCxzQkFEYTtBQUViVSxxQkFBUyxzRUFGSSxFQUFmOztBQUlBO0FBQ0Q7O0FBRUQsWUFBSUMscUJBQXFCLEtBQXpCLENBZHNCOztBQWdCdEIsK0JBQXNCUCxlQUF0Qiw4SEFBdUMsS0FBNUJRLE9BQTRCO0FBQ3JDLGdCQUFJQSxRQUFRakMsSUFBUixLQUFpQixPQUFyQixFQUE4QjtBQUM1Qlksc0JBQVFrQixNQUFSLENBQWU7QUFDYlQsMEJBRGE7QUFFYlUseUJBQVMseUVBRkksRUFBZjs7QUFJQTtBQUNEOztBQUVELGdCQUFJLENBQUNoQixtQkFBbUJtQixJQUFuQixDQUF3QkQsUUFBUUUsS0FBaEMsQ0FBTCxFQUE2QztBQUMzQ3ZCLHNCQUFRa0IsTUFBUixDQUFlO0FBQ2JULDBCQURhO0FBRWJVLGlHQUZhLEVBQWY7O0FBSUE7QUFDRDs7QUFFRCxnQkFBSTtBQUNGO0FBQ0FLLDhCQUFHQyxlQUFILGtDQUEyQ0osUUFBUUUsS0FBbkQ7QUFDRDtBQUNELG1CQUFPRyxLQUFQLEVBQWM7QUFDWjFCLHNCQUFRa0IsTUFBUixDQUFlO0FBQ2JULDBCQURhO0FBRWJVLHdGQUZhLEVBQWY7O0FBSUE7QUFDRDs7QUFFRCxnQkFBSSxDQUFDZixrQkFBa0JrQixJQUFsQixDQUF1QkQsUUFBUUUsS0FBL0IsQ0FBTCxFQUE0QztBQUMxQ3ZCLHNCQUFRa0IsTUFBUixDQUFlO0FBQ2JULDBCQURhO0FBRWJVLHdGQUZhLEVBQWY7OztBQUtBO0FBQ0Q7O0FBRUQsZ0JBQUliLGlCQUFpQmdCLElBQWpCLENBQXNCRCxRQUFRRSxLQUE5QixDQUFKLEVBQTBDO0FBQ3hDSCxtQ0FBcUIsSUFBckI7QUFDRDtBQUNGLFdBekRxQjs7QUEyRHRCLFlBQUksQ0FBQ0Esa0JBQUwsRUFBeUI7QUFDdkJwQixrQkFBUWtCLE1BQVIsQ0FBZTtBQUNiVCxzQkFEYTtBQUViVTtBQUM2RGQsNkJBRDdELE9BRmEsRUFBZjs7QUFLRDtBQUNGOztBQUVELGFBQU87QUFDTHNCLHdCQURLLHlDQUNZbEIsSUFEWixFQUNrQjtBQUNyQkQsZ0JBQUlDLElBQUosRUFBVUEsS0FBS21CLE1BQWY7QUFDRCxXQUhJOztBQUtMQyxzQkFMSyx1Q0FLVXBCLElBTFYsRUFLZ0I7QUFDbkIsZ0JBQUlBLEtBQUtxQixNQUFMLENBQVkxQyxJQUFaLEtBQXFCLFFBQXJCLElBQWlDTyxnQkFBZ0JvQyxPQUFoQixDQUF3QnRCLEtBQUtxQixNQUFMLENBQVlFLElBQXBDLElBQTRDLENBQWpGLEVBQW9GO0FBQ2xGO0FBQ0Q7O0FBRUR4QixnQkFBSUMsSUFBSixFQUFVQSxLQUFLd0IsU0FBTCxDQUFlLENBQWYsQ0FBVjtBQUNELFdBWEksMkJBQVA7O0FBYUQsS0FwSGMsbUJBQWpCIiwiZmlsZSI6ImR5bmFtaWMtaW1wb3J0LWNodW5rbmFtZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB2bSBmcm9tICd2bSc7XG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgY2F0ZWdvcnk6ICdTdHlsZSBndWlkZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0VuZm9yY2UgYSBsZWFkaW5nIGNvbW1lbnQgd2l0aCB0aGUgd2VicGFja0NodW5rTmFtZSBmb3IgZHluYW1pYyBpbXBvcnRzLicsXG4gICAgICB1cmw6IGRvY3NVcmwoJ2R5bmFtaWMtaW1wb3J0LWNodW5rbmFtZScpLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbe1xuICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGltcG9ydEZ1bmN0aW9uczoge1xuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgdW5pcXVlSXRlbXM6IHRydWUsXG4gICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHdlYnBhY2tDaHVua25hbWVGb3JtYXQ6IHtcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfV0sXG4gIH0sXG5cbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBjb25maWcgPSBjb250ZXh0Lm9wdGlvbnNbMF07XG4gICAgY29uc3QgeyBpbXBvcnRGdW5jdGlvbnMgPSBbXSB9ID0gY29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IHsgd2VicGFja0NodW5rbmFtZUZvcm1hdCA9ICcoWzAtOWEtekEtWi1fLy5dfFxcXFxbKHJlcXVlc3R8aW5kZXgpXFxcXF0pKycgfSA9IGNvbmZpZyB8fCB7fTtcblxuICAgIGNvbnN0IHBhZGRlZENvbW1lbnRSZWdleCA9IC9eIChcXFNbXFxzXFxTXStcXFMpICQvO1xuICAgIGNvbnN0IGNvbW1lbnRTdHlsZVJlZ2V4ID0gL14oICgod2VicGFja0NodW5rTmFtZTogLispfCgod2VicGFja1ByZWZldGNofHdlYnBhY2tQcmVsb2FkKTogKHRydWV8ZmFsc2V8LT9bMC05XSspKXwod2VicGFja0lnbm9yZTogKHRydWV8ZmFsc2UpKXwoKHdlYnBhY2tJbmNsdWRlfHdlYnBhY2tFeGNsdWRlKTogXFwvLipcXC8pfCh3ZWJwYWNrTW9kZTogW1wiJ10obGF6eXxsYXp5LW9uY2V8ZWFnZXJ8d2VhaylbXCInXSl8KHdlYnBhY2tFeHBvcnRzOiAoWydcIl1cXHcrWydcIl18XFxbKFsnXCJdXFx3K1snXCJdLCAqKSsoWydcIl1cXHcrWydcIl0qKVxcXSkpKSw/KSsgJC87XG4gICAgY29uc3QgY2h1bmtTdWJzdHJGb3JtYXQgPSBgIHdlYnBhY2tDaHVua05hbWU6IFtcIiddJHt3ZWJwYWNrQ2h1bmtuYW1lRm9ybWF0fVtcIiddLD8gYDtcbiAgICBjb25zdCBjaHVua1N1YnN0clJlZ2V4ID0gbmV3IFJlZ0V4cChjaHVua1N1YnN0ckZvcm1hdCk7XG5cbiAgICBmdW5jdGlvbiBydW4obm9kZSwgYXJnKSB7XG4gICAgICBjb25zdCBzb3VyY2VDb2RlID0gY29udGV4dC5nZXRTb3VyY2VDb2RlKCk7XG4gICAgICBjb25zdCBsZWFkaW5nQ29tbWVudHMgPSBzb3VyY2VDb2RlLmdldENvbW1lbnRzQmVmb3JlXG4gICAgICAgID8gc291cmNlQ29kZS5nZXRDb21tZW50c0JlZm9yZShhcmcpIC8vIFRoaXMgbWV0aG9kIGlzIGF2YWlsYWJsZSBpbiBFU0xpbnQgPj0gNC5cbiAgICAgICAgOiBzb3VyY2VDb2RlLmdldENvbW1lbnRzKGFyZykubGVhZGluZzsgLy8gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBpbiBFU0xpbnQgNy5cblxuICAgICAgaWYgKCFsZWFkaW5nQ29tbWVudHMgfHwgbGVhZGluZ0NvbW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBtZXNzYWdlOiAnZHluYW1pYyBpbXBvcnRzIHJlcXVpcmUgYSBsZWFkaW5nIGNvbW1lbnQgd2l0aCB0aGUgd2VicGFjayBjaHVua25hbWUnLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgaXNDaHVua25hbWVQcmVzZW50ID0gZmFsc2U7XG5cbiAgICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBsZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgaWYgKGNvbW1lbnQudHlwZSAhPT0gJ0Jsb2NrJykge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBtZXNzYWdlOiAnZHluYW1pYyBpbXBvcnRzIHJlcXVpcmUgYSAvKiBmb28gKi8gc3R5bGUgY29tbWVudCwgbm90IGEgLy8gZm9vIGNvbW1lbnQnLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcGFkZGVkQ29tbWVudFJlZ2V4LnRlc3QoY29tbWVudC52YWx1ZSkpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogYGR5bmFtaWMgaW1wb3J0cyByZXF1aXJlIGEgYmxvY2sgY29tbWVudCBwYWRkZWQgd2l0aCBzcGFjZXMgLSAvKiBmb28gKi9gLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8ganVzdCBsaWtlIHdlYnBhY2sgaXRzZWxmIGRvZXNcbiAgICAgICAgICB2bS5ydW5Jbk5ld0NvbnRleHQoYChmdW5jdGlvbigpIHtyZXR1cm4geyR7Y29tbWVudC52YWx1ZX19fSkoKWApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBgZHluYW1pYyBpbXBvcnRzIHJlcXVpcmUgYSBcIndlYnBhY2tcIiBjb21tZW50IHdpdGggdmFsaWQgc3ludGF4YCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNvbW1lbnRTdHlsZVJlZ2V4LnRlc3QoY29tbWVudC52YWx1ZSkpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgYGR5bmFtaWMgaW1wb3J0cyByZXF1aXJlIGEgXCJ3ZWJwYWNrXCIgY29tbWVudCB3aXRoIHZhbGlkIHN5bnRheGAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNodW5rU3Vic3RyUmVnZXgudGVzdChjb21tZW50LnZhbHVlKSkge1xuICAgICAgICAgIGlzQ2h1bmtuYW1lUHJlc2VudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0NodW5rbmFtZVByZXNlbnQpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgIGBkeW5hbWljIGltcG9ydHMgcmVxdWlyZSBhIGxlYWRpbmcgY29tbWVudCBpbiB0aGUgZm9ybSAvKiR7Y2h1bmtTdWJzdHJGb3JtYXR9Ki9gLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgSW1wb3J0RXhwcmVzc2lvbihub2RlKSB7XG4gICAgICAgIHJ1bihub2RlLCBub2RlLnNvdXJjZSk7XG4gICAgICB9LFxuXG4gICAgICBDYWxsRXhwcmVzc2lvbihub2RlKSB7XG4gICAgICAgIGlmIChub2RlLmNhbGxlZS50eXBlICE9PSAnSW1wb3J0JyAmJiBpbXBvcnRGdW5jdGlvbnMuaW5kZXhPZihub2RlLmNhbGxlZS5uYW1lKSA8IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBydW4obm9kZSwgbm9kZS5hcmd1bWVudHNbMF0pO1xuICAgICAgfSxcbiAgICB9O1xuICB9LFxufTtcbiJdfQ==
\ No newline at end of file
diff --git a/node_modules/eslint-plugin-import/lib/rules/export.js b/node_modules/eslint-plugin-import/lib/rules/export.js
index 5f810ee8d..069d5c188 100644
--- a/node_modules/eslint-plugin-import/lib/rules/export.js
+++ b/node_modules/eslint-plugin-import/lib/rules/export.js
@@ -1,25 +1,26 @@
'use strict';var _slicedToArray = function () {function sliceIterator(arr, i) {var _arr = [];var _n = true;var _d = false;var _e = undefined;try {for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {_arr.push(_s.value);if (i && _arr.length === i) break;}} catch (err) {_d = true;_e = err;} finally {try {if (!_n && _i["return"]) _i["return"]();} finally {if (_d) throw _e;}}return _arr;}return function (arr, i) {if (Array.isArray(arr)) {return arr;} else if (Symbol.iterator in Object(arr)) {return sliceIterator(arr, i);} else {throw new TypeError("Invalid attempt to destructure non-iterable instance");}};}();var _ExportMap = require('../ExportMap');var _ExportMap2 = _interopRequireDefault(_ExportMap);
var _docsUrl = require('../docsUrl');var _docsUrl2 = _interopRequireDefault(_docsUrl);
-var _arrayIncludes = require('array-includes');var _arrayIncludes2 = _interopRequireDefault(_arrayIncludes);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}
+var _arrayIncludes = require('array-includes');var _arrayIncludes2 = _interopRequireDefault(_arrayIncludes);
+var _arrayPrototype = require('array.prototype.flatmap');var _arrayPrototype2 = _interopRequireDefault(_arrayPrototype);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}
/*
- Notes on TypeScript namespaces aka TSModuleDeclaration:
-
- There are two forms:
- - active namespaces: namespace Foo {} / module Foo {}
- - ambient modules; declare module "eslint-plugin-import" {}
-
- active namespaces:
- - cannot contain a default export
- - cannot contain an export all
- - cannot contain a multi name export (export { a, b })
- - can have active namespaces nested within them
-
- ambient namespaces:
- - can only be defined in .d.ts files
- - cannot be nested within active namespaces
- - have no other restrictions
- */
+ Notes on TypeScript namespaces aka TSModuleDeclaration:
+
+ There are two forms:
+ - active namespaces: namespace Foo {} / module Foo {}
+ - ambient modules; declare module "eslint-plugin-import" {}
+
+ active namespaces:
+ - cannot contain a default export
+ - cannot contain an export all
+ - cannot contain a multi name export (export { a, b })
+ - can have active namespaces nested within them
+
+ ambient namespaces:
+ - can only be defined in .d.ts files
+ - cannot be nested within active namespaces
+ - have no other restrictions
+ */
var rootProgram = 'root';
var tsTypePrefix = 'type:';
@@ -35,13 +36,78 @@ var tsTypePrefix = 'type:';
* @returns {boolean}
*/
function isTypescriptFunctionOverloads(nodes) {
+ var nodesArr = Array.from(nodes);
+
+ var idents = (0, _arrayPrototype2['default'])(nodesArr, function (node) {return (
+ node.declaration && (
+ node.declaration.type === 'TSDeclareFunction' // eslint 6+
+ || node.declaration.type === 'TSEmptyBodyFunctionDeclaration' // eslint 4-5
+ ) ?
+ node.declaration.id.name :
+ []);});
+
+ if (new Set(idents).size !== idents.length) {
+ return true;
+ }
+
+ var types = new Set(nodesArr.map(function (node) {return node.parent.type;}));
+ if (!types.has('TSDeclareFunction')) {
+ return false;
+ }
+ if (types.size === 1) {
+ return true;
+ }
+ if (types.size === 2 && types.has('FunctionDeclaration')) {
+ return true;
+ }
+ return false;
+}
+
+/**
+ * Detect merging Namespaces with Classes, Functions, or Enums like:
+ * ```ts
+ * export class Foo { }
+ * export namespace Foo { }
+ * ```
+ * @param {Set